某种程度来说大模型训练的核心算法就是300到400行代码,如果真正理解了并不难。下面我将带大家分析常规大模型训练有几个阶段以及在训练中一般会用到哪些方法。

由上图可以看出,大模型训练主要有四个阶段:预训练、有监督微调、奖励建模、强化学习。开始的第一个阶段是预训练阶段。这个阶段在这个图中有点特殊,因为这个图没有按比例缩放。实际上预训练消耗的时间占据了整个训练pipeline的99%。
因此,这个阶段就是我们在超级计算机中使用数千个GPU以及数月的训练来处理互联网规模数据集的地方。
其他三个阶段是微调阶段,更多地遵循少量GPU和数小时或数天的路线。
那么首先让我们来看看预训练阶段用到了哪些方法。
1.数据分布
首先做预训练需要收集大量数据,那么数据分布大致需要满足什么条件呢?

由上图可以看出,这是Meta发布了关于Llama基础模型训练时候的数据分布。大约1.4T的tokens,包含github、Wikeipedia等数据。
我们都知道大模型需要大量的高质量的训练数据,在目前这个Transformer为主导的背景下,算法其实差不多都固化了。市面上有关大模型的公司,投入人力物力最大的地方除了算力就是数据这一块了。如何高效获取数据、清洗数据、标注数据、质检数据以及如何平衡各类别数据占比等等问题是否解决,决定了这个大模型是否work。
数据问题解决后,接下来面对的问题是:机器只知道01二进制,如何把这些数据转化成机器能够看懂的语言?
2.标记化(tokenization)
实际训练这些数据之前,我们需要再经过一个预处理步骤,即标记化(tokenization)。

如上图所示tokenization分为两个阶段,第一阶段将原始文本转化成tokens,请注意并不是说一个单词就是一个token,这与你采用的tokenization算法相关。第二阶段,将tokenization之后的tokens,去词表中查找对应的ids,输出得到一个很长的整数列表。
举个例子,下面我以GPT2为例,展示如何使用tiktoken这个python包来实现tokenization。
代码:
import tiktoken
input = "The GPT fa

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



