本篇我们根据Andrej Karpathy(安德烈·卡帕西)的专题演讲《State of GPT》来介绍GPT如何从“初始模型”(base model)一直训练成ChatGPT这样的“助手模型”(assistant model)。Andrej Karpathy是OpenAI的创始人之一,也是GPT大模型训练这个领域最有话语权的人之一,建议大家去看一下大佬的演讲视频(https://www.bilibili.com/video/BV1ts4y1T7UH)。
1.模型训练的总体框架
Andrej Karpathy 在演讲的开篇,给出了 GPT 训练的 Pipeline,将 GPT 的训练分成四个阶段:
-
预训练阶段(Pretraining)
-
有监督微调阶段(Supervised Finetuning)
-
奖励建模阶段(Reward Modeling)
-
强化学习阶段(Reinforcement Learing)
做一个形象的类比,这四个阶段相当于人的求学之路:
-
预训练阶段,相当于是小学生
-
有监督微调阶段,相当于是中学生
-
奖励建模阶段,相当于是大学生
-
强化学习阶段,相当于是社会人
同时也能看到,在预训练阶段中所消耗的算力资源是最大的,大约相当于其他阶段的 10~100 倍,或者预训练所耗费的时间在整个训练过程中可能要占到 99% 以上。
2.预训练阶段(Pretraining)
预训练阶段利用海量的训练数据,包括互联网网页、维基百科、书籍、GitHub、论文、问答网站等,构建包含数千亿甚至数万亿单词的具有多样性的内容,构建基础语言模型(Base Model)。基础大模型构建了长文本的建模能力,使得模型具有语言生成能力,根据输入的提示词(Prompt),模型可以生成文本补全句子。
-
模型准备: 随机初始化的GPT。
-
数据集:
-
这部分将收集大量的互联网数据,一般都要万亿级别token/word,这部分数据的特点是数据量庞大,但是质量低。
-
LLM训练的时候有一些公开数据集,比如CommonCrawl,C4(Colossal Clean Crawled Corpus)、Github代码数据、维基百科等、书籍、ArXiv论文存档数据、StackExchange网站问答等,中文数据的一些公开数据汇总在这里。
-
垂直领域的数据需要自己爬取。更多数据集请前往huggingface上搜索,说不定有意外之喜。
-
以LLaMA的预训练数据集为例, 以上这些数据集按照下图所示的比例采样混合在一起形成最终的预训练数据集。
- Tokenization:
-
利用tokenizor将文本数据转化为整数序列,这些数字每一个都被称为token。GPT类的模型训练一般都是采用sentence piece的tokenizor,据统计平均1个token≈0.75个word。
-
GPT3词表大约是5w个,上下文长度2048(现在可以做到最多长达10w),175B参数。训练数据总token个数为3000亿(300B)。
-
LLaMA词表大约是3.2w个,上下文长度2048,65B参数。训练数据总token个数为1~1.4万亿(1.4T)。
-
LLaMA参数量虽然比GPT3小一个数量级,但是其效果却是更好的,这归功于计算的时间更长,见过的数据更多。可见不能直接靠参数量大小来判断两个模型的好坏。
-
训练任务:
-
经典的预训练任务Next-Token-Prediction。
-
模型采用单向语言模型架构,即Causal-LM架构,每个token只能看到该token前面的上文信息,利用该token的隐状态向量来预测下一个token是什么。
-
该阶段训练出来的模型有以下特点:
-
预训练完的模型我们称之为Base Model。但是,Base Model并不是一个可以直接回答你问题的“助手”,如果你向它问问题,它大概率会拒绝回答,或者不理解你的问题,再或者用更多的问题来回答你的问题。
-
预训练部分时间比重占了总训练过程的99%以上。
-
你可以用一些比较trick的prompt来让Base Model输出你想要的回答。
-
你也可以通过欺骗Base Model让其成为“助手”,你需要准备好一个特定的prompt,让Base Model看起来像是人和“助手”之间正在交谈,在最后插入自己的Query,来让Base Model回答,具体流程如下图所示。当然,这样其实一般不可靠,并且实践中也不是很友好,但仍然可以用这种方法来验证预训练模型train的效果。
3.有监督微调训练(Supervised Finetuning,SFT)
是指在已经训练好的base model的基础上,利用少量高质量数据集合,包含用户输入的提示词和对应的理想输出结果,从而使得模型具备遵循指令的能力。用户输入包括问题、闲聊对话、任务指令等多种任务。
-
模型准备: 第一阶段Pretrain好的GPT模型。
-
数据集: 该部分数据集为少量但是高质量的prompt、response数据,数量大约1w~10w条。比如下图这条数据,承包商需要严格按照右边的标注说明书来写这个prompt的response。
4.奖励模型训练(Reward Molel,RM)
这里就开始正式进入传说中的RLHF了(Reinforcement Learning from Human Feedback,基于人类反馈优化的强化学习语言模型)。RLHF分为两部分,一部分是奖励模型RM,一部分是强化学习RL。
奖励模型训练阶段目标是构建一个文本质量对比模型,对于同一个提示词 ,SFT模型给出的多个不同输出结果的质量进行排序。奖励模型(RM 模型)可以通过二分类模型,对输入的两个结果之间的优劣进行判断。
-
模型准备: 采用SFT训练好的模型,训练RM模型的时候,SFT模型参数冻结。
-
数据集: 这里数据集开始转变为比较模式,数据还是prompt(问题模板)+response(响应回答)的形式,但是这里的response是由SFT模型生成的,并且会生成多个,人工需要标注的是这些response之间的顺序排名,这个排名的标注有可能会很难且漫长,有的甚至会耗费几个小时来完成一个prompt的responses的排序。
-
待训练模型: RM模型,即一个打分模型,用来给GPT输出的responses打分排序。
-
训练任务:
-
RM的训练过程如下图所示:用同样的prompt和SFT model输出的N个responses分别拼接(图中是3个),然后末尾都拼接一个特殊的奖励标识符<|reward|>,并且将该<|reward|>符的隐状态输出接上一个RM模型,来预测打分,预测打分的顺序和标注的顺序之间会产生一个loss,其实就是LTR排序学习。
-
为什么采用排序而不是明确打分的标注方式?其实就是将任务难度降低(不论是对标注人员还是对RM模型而言),使RM模型可以更好的被训练,因为计算“比较值”比计算“准确值”容易,减轻模型的打分压力,其实也就是LTR的优点。
- RM模型训练流程图解:
5.强化学习训练(Reinforcement Learning,RL)
强化学习阶段的任务是根据数十万用户给出的提示词,利用在前一阶段训练的 RM模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。
-
模型准备: 采用训练好的SFT模型+训练好的RM模型,用RL的方式对SFT进行继续训练。
-
数据集: 这里数据集也和上述RM模型训练时一样为比较模式,数据仍然是prompt+response的形式,response是由SFT模型生成的,并且会生成多个,由奖励模型对其进行打分指导(强化学习)。
-
待训练模型: STF训练后的GPT模型。
-
训练任务:
-
按照上述的方法,用SFT模型对一个prompt生成多个responses。
-
末尾拼接上奖励标识符<|reward|>。
-
让训练好的奖励模型RM对<|reward|>的隐状态向量打分。如下图,RM模型对三句话的打分分别是1.0,-1.2,0.2。
-
例如,对第一行,奖励模型RM打分很高,因此我们将第一行采样的所有token都将得到强化,它们将获得更高的未来被采样的概率。相反,对第二行,奖励模型RM打分-1.2,因此我们对第二行采样的每个token进行惩罚,降低其未来被采样的概率。
-
仅黄色的response部分tokens才参与到RL模型的训练里面,其余token都将被忽略,即只有黄色部分才参与loss的计算。打分高的语句中的所有token将在之后增加被采样到的概率。
不使用RLHF,仅使用SFT会怎么样?反之呢?RLHF有缺点吗?
- 实验表明RLHF效果更好。InstructGPT的论文表明PPO(Proximal Policy Optimization,可以理解为一种RL算法)效果最好:
-
OpenAI做过真实场景下的比较,大部分人更喜欢RLHF的输出结果,而不是SFT的结果。
-
RLHF也有缺点,RHLF模型相对于SFT Model、Base Model失去了一些熵(即降低了多样性,因为每个位置上都倾向于输出高概率token)。如图可以看到,Base Model会有非常多样化的表达,因此在一些需要想象力和多样性的任务中,可以尝试下使用Base Model。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
四、AI大模型商业化落地方案
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
加粗样式