ChatGPT|大规模语言模型的那些事

2,300 阅读9分钟

本文正在参加 ✍🏻 技术视角深入 ChatGPT 征文活动

前言

大家好,我是陈同学,一枚野生前端开发者,感谢各位的点赞、收藏、评论

最近这段时间科技圈因为AIGC的发展积极热烈的讨论那是一番个热火朝天

回顾AI发展的历史,有若干年前AlphaGo打败超强围棋选手的AI传奇事件,亦有上一年11月份ChatGPT3.0正式问世与人们首次大规模见面并以史上最快的速度将用户量提升至上亿级别

今年OpenAI更是以超快的速度迭代更新ChatGPT(虽然感觉是早就研发好了,按时间来发布),让人们一次又一次地为AI科技实力感到震撼

时间线回顾:

  • 2022 年 7 月:OpenAI发布 DALL·E
  • 2022 年 11 月:发布 ChatGPT
  • 2022 年 12 月:嵌入式费用大幅降低并保持最先进技术SoTA
  • 2023 年 3 月 2 日:ChatGPT API、Whisper API发布,开发者可以通过API将ChatGPTWhisper模型集成到应用程序,同时保持 SoTA 并降低费用 10 倍
  • 2023 年 3 月 15 日:ChatGPT4发布,对外介绍了ChatGPT的识图能力
  • 2023 年 3 月 16 日:文言一心发布并放出公测邀请码

那究竟大家对GPT的理解是否已经够了呢,GPT到底是什么?

本文阅读成本与收益如下:

阅读耗时:2mins

全文字数:3k+

预期效益

  • GPT是什么
  • 模型训练
  • 模型训练集
  • 模型成本

GPT

GPT: Generative Pre-trained Transformer(生成预训练变换模型)

  • Generative生成的意思,因为这是个能生成文本的模型
  • Pre-trained预训练的意思,这里代表无监督学习,是没有明确目的的训练方式,无法提前知道结果是什么,生成文本比较发散
  • Transformer变换的意思,代表是模型训练是网络架构,网络里面的各个参数不断变换嘛

可以这样理解,模型的训练结果很大程度依赖人类的反馈,人类对其生成的结果进行打分。对打分的结果重新输入的模型中,来对模型进行调整。得分高相当于告诉它:”多生成这样的结果!“。得分低的相当于告诉它:”不要生成这样的结果!“

20230317150627

要进一步了解GPT,有两个概念得弄清楚:

  • 大模型
  • 多模态

多模态

多模态是什么?

用一个场景案例来进行解释:

朋友A:“喂,你女朋友在你后面”

朋友B:回头,看到女朋友

朋友B:“你怎么知道我在这”

分析这个简单的场景,朋友B同时处理了文字声音图像等多种信息数据

多模态:多种信息数据的模式和形态

而这些种类不同的信息数据,就像你在消息里提取的文字,回头看到的视觉画面(图像),询问说出的声音

对人来说,在多模态场景中识别和提取出同一个关键字,很简单

但对GPT来说,这是一个困难且复杂的任务:跨越多个模态(多种数据形态),处理更复杂的任务

这要求GPT拥有视觉和听觉,ChatGPT-4前的模型版本只能处理文字。后面升级为GPT-4后有了视觉,开始能够识别并分析图片,从而能解决更多的问题

大模型

不得不提GPT-4核心能力之一:语言处理能力

短时间内GPT的语言模型得到了大幅度的优化

一方面,单词最大输出限制提高到了 25000 个单词(之前稍微字多点都不一定能发完整,现在甚至直接丢网页或PDF给它处理)

另一方面,在理解和回答问题(尤其复杂的问题),GPT-4显得更加聪明,回答问题的准确率有了很大程度上的提升。

这得益于模型参数量的增加 2018年的GPT,参数量是1.17亿。2019年的GPT-2,参数量是15亿。 2020年的GPT-3,乃至后来基于GPT-3.5ChatGPT,参数量是1750亿

GPT以亿为单位的参数量,每时每刻都在增长。

这也就是为什么要称它为大模型

大量的参数,就像人脑中大量的神经元,能使GPT变得更加“聪明”。

训练

由于ChatGPT采用了InstructGPT的架构,故我们在学习的时候可以直接参考InstructGPT的训练流程

先放一张经典的训练解释示意图

20230318103437

  • Step-1:以监督学习的方式对GPT3进行微调,以获取监督学习模型(SFT)
    • 收集人们的问题到问题库(形成数据集)
    • 不断从问题库中提取一个问题
    • 人工对问题进行回答
    • 将人工回答的文本以及对应问题提供给GPT进行监督学习,得到生成模型

很难找到足够多的人来人工回答不同领域的问题,且答案不能准确评定好坏

一个监督式学习者的任务在观察完一些训练范例(输入和预期输出)后,去预测这个函数对任何可能出现的输入的值的输出。要达到此目的,学习者必须以"合理"的方式从现有的资料中一般化到非观察到的情况。在人类和动物感知中,则通常被称为概念学习(concept learning)。

  • Step-2:训练奖励模型(RM)
    • 让Step-1产生的监督学习模型给出四个答案
    • 人工对四个答案进行排序(排序成本低于直接回答成本),通过这个排序训练奖励模型

补充:为什么需要奖赏模型? 我们需要不断对生成的结果进行排序,来得到人们最满意的回答. 人能够对生成的结果进行满意度排序,那我们也希望有模型来对结果排序。

  • Step-3:训练得到基于PPO算法(领域内表现不错的强化学习算法)的强化学习模型(基于Step-1的监督模型)
    • 从数据集中获得一条数据(问题prompt)
    • 将数据输入到强化学习模型,模型输出一条文本A
    • 文本A输入到奖励模型(Step-2中的)进行打分
    • 将打分结果反馈到强化学习模型

数据集

以下描述来源于网络

  • SFT数据集 SFT数据集是用来训练第1步有监督的模型,即使用采集的新数据,按照GPT-3的训练方式对GPT-3进行微调。因为GPT-3是一个基于提示学习的生成模型,因此SFT数据集也是由提示-答复对组成的样本。SFT数据一部分来自使用OpenAIPlayGround的用户,另一部分来自OpenAI雇佣的40名标注工(labeler)。并且他们对labeler进行了培训。在这个数据集中,标注工的工作是根据内容自己编写指示,并且要求编写的指示满足下面三点:

简单任务:labeler给出任意一个简单的任务,同时要确保任务的多样性; Few-shot任务:labeler给出一个指示,以及该指示的多个查询-相应对; 用户相关的:从接口中获取用例,然后让labeler根据这些用例编写指示;

  • RM数据集 RM数据集用来训练第2步的奖励模型,我们也需要为InstructGPT/ChatGPT的训练设置一个奖励目标。这个奖励目标不必可导,但是一定要尽可能全面且真实的对齐我们需要模型生成的内容。很自然的,我们可以通过人工标注的方式来提供这个奖励,通过人工对可以给那些涉及偏见的生成内容更低的分从而鼓励模型不去生成这些人类不喜欢的内容。InstructGPT/ChatGPT的做法是先让模型生成一批候选文本,让后通过labeler根据生成数据的质量对这些生成内容进行排序。

  • PPO数据集 InstructGPT的PPO数据没有进行标注,它均来自GPT-3的API的用户。既又不同用户提供的不同种类的生成任务,其中占比最高的包括生成任务(45.6%),QA(12.4%),头脑风暴(11.2%),对话(8.4%)等。

成本

GPT-3 训练一次的成本约为 140 万美元,对于一些更大的 LLM(大型语言模型),训练成本介于 200 万美元1200 万美元之间。

ChatGPT 在 1 月的访客平均数 1300 万计算,对应承载服务所需芯片为 3 万多片英伟达 A100 GPU,初始投入成本约为 8 亿美元,每日电费在 5 万美元左右。

如果将当前的 ChatGPT 部署到谷歌进行的每次搜索中,需要 50w+ 台 A100 HGX 服务器和总共 400w+ 个 A100 GPU,这些服务器和网络的总成本仅资本支出就超过 1000 亿美元

这可真是个烧钱的活,这么一想突然感觉ChatGPT性价比还挺高~

讲到最后

ChatGPT:OpenAI发布的大规模生成式语言模型

InstructGPT:ChatGPT基于的架构

训练:结合人工干预以及机器学习的方式对模型进行优化

数据集:训练模型基于的大量数据单元的集合

ChatGPT的兴起并不是因为它有着多么厉害的原创技术,很多原理性的技术点在业界都有相对应的开源方案,更多的原因是OpenAI多年在AI领域的耕耘与付出

望着千亿参数级别的超大模型,联想到这该是要多少技术人员长时间勤恳付出才换来的成果

相对应的,国内百度文心一言的出现也是多年技术沉淀下来的结晶,即使目前可能并没有GPT-4那样的极高准确率,但相信在未来某一天,国产大语言模型也能闻名全球,不负众望

参考

ChatGPT/InstructGPT详解

ChatGPT是如何训练的?通俗讲解