预训练+微调的训练范式
语言模型训练范式
一、常见的训练阶段划分
LLM都是怎么训练出来的
以GPT为例:
1.pretrain
2.SFT
3.reward model
4.PPO
Pretrain
pretrain:预训练,内里包含大量的数学公式。不停的阅读大量资料然后学习如何使用文字。需要最大的数据量,消耗最大的显卡算力。
m:百万
b:十亿
t:万亿
eg. llama 3 使用了15t tokens
llama 4 Scout使用了40t tokens
大语言模型输出的每一话都需要学习人类语言后逐字表达,计算下一个字在人类语言规范中的可能性,然后结合训练和语境给出他的答案。(本质上是一个续写的工具)
最初什么都不会怎么学呢?(这个时候逐字表达等于瞎蒙)
给他参考数据。
段落联合概率:让一个模型能一字不落的生成整个段落的概率。
将所有的段落联合概率相乘:已知第一个字求第二个字相匹配的概率、已知前两个字求第三个字相匹配的概率、已知前三个字求第四个字相匹配的概率.......依次相乘让模型学习人类的表达方式。
对每一条数据得出的段落联合概率可以看出模型对人类语言和知识的掌握程度。
不同的段落联合概率按照不同的要求调整LLM,从而整体提升段落联合概率,让他们达到一个可观的值 。
SFT
预训练模型说话像接话茬,而不是在做任务,希望做什么类型的任务,就用什么样的数据做指令微调(instruction tuning)。
SFT有监督的微调训练
有监督:使用有标签的数据进行训练,学习过程叫做有监督学习。(标签包括对文字的正负向判断、相似程度判断、排序等。)
使用无标签的数据进行训练,学习过程叫做无监督学习。
pretrain叫自监督(自己进行训练)
pretrain+SFT两个阶段组合起来就叫半监督(不缺数据但缺标签、需要人工标注)
llama 3使用了15t tokens
SFT阶段使用的数据量大概只有几十万条,为预训练阶段的五千分之一
数据量普遍不大。
Reward Model
reward model:训练一个奖励模型在旁边当教练。
评估是一个很难的事情,评估一个模型的整体能力,评估一个问题回答的如何。如何判断大模型干的好不好,需要我们事先训练一个教练进行打分。
1、准备一系列prompt,让模型给每个prompt生成多个response(几万到几十万),
2、设计一下如何标注,打分、评级、排序?
3、招一批人来做标注工作,训练出一个教练员。
PPO(强化学习)
PPO:用上一步的教练模型对工作进行优化,当优化趋于饱和之后,再重新训练一个教练,重复这两个步骤,直到都难以取得进展。
reward model和PPO不断循环的过程就是强化学习的过程,叫做RLHF“对齐”(给予人类反馈的强化学习)。
纯粹课程笔记。
