如果喜欢我的文章,可以关注 ➕ 点赞,与我一同成长

大家好,我是寒草🌿,浮云一别后,宛若流水十年间,而整个社会也已沧海桑田,这次(创作方面)新的开始我也希望为大家提供一些不同往日的内容。

从头开始的第一篇文章,我将以「模型的训练过程」为开篇:毕竟 AI 在我神隐的这段时间疯狂发展,而以此问题开始便很自然。

所以我将尽力以通俗的文字 + 个人的浅薄认知为大家带来一场“不虚此行”的分享。也希望针对存有疑问或内容不实之处,大家可以与我互动交流,寒草定不胜荣幸。

LLM 训练的关键词

当我们开始了解模型是如何训练的,总会听到以下关键词:

  • Pretarin 预训练
  • SFT(Supervised Fine-Tuning) 监督微调
  • Reward model 奖励模型
  • PPO(Proximal Policy Optimization) 近端策略优化

以上是 GPT 相关的, 而 LLaMA 模型相关的则包含更多步骤:

  • Pretarin 预训练
  • Reward model 奖励模型
  • Rejection Sampling 拒绝采样
  • SFT(Supervised Fine-Tuning) 监督微调
  • DPO(Direct Preference Optimization) 直接偏好优化

虽然我们可能暂时不清楚以上的词汇是干嘛的,但暂且以上述关键字为提纲,开启本次旅程。

GPT

Pretrain

预训练是 LLM 训练的第一阶段,其核心目标是让模型学习语言模式,语法,语义关系以及世界知识。

就像我们人类从呱呱坠地起,也要逐渐开始接纳学习这个世界,掌握这个世界的语言。

这个过程将使用非常大量的训练数据集,并耗费相当长的时间:

  • 数据量是万亿(trillion)级的 token
  • 数据主要来自开放互联网、书籍、代码库等,经过严格的清理和筛选,以确保质量

而 Llama 3 模型在预训练阶段使用了大约 15 万亿个 tokens 的数据集。虽然训练数据集规模在过去经历了快速增长,但未来这种增长可能受到数据资源有限性和边际效益递减的影响。因此,业界未来可能会更加关注数据质量而非数据体量。

于是我们会不由得想到这样一个问题:这么多的数据量要用来干什么呢?

当我们先看下面这个例子,当我们输入一串文字时,我们总会有他的一些候选词):

「LLM 训练解析」:从 Pretrain 到 DPO,LLM 是如何一步步变聪明的?_数据集

但是:

  • 为什么“破”之后“心”的概率更高呢?
  • 为什么“破心”之后“中”的概率更高呢?
  • ...

这便依托于我们上面提到的基于大量数据的训练了,比如我们的训练数据中有这样的句子:

“阳明先生有句著名而有深意的话:破山中贼易,破心中贼难。意思是...“

首先,我们希望模型可以利用到这些数据,于是会定义一个概念,叫做:”段落联合概率“,含义为模型生成整个段落的概率。

假设给定一个段落由词序列 w1,w2,…,wn 组成,模型计算该段落的联合概率为:

P(w1,w2,…,wn)=P(w1)×P(w2∣w1)×P(w3∣w1,w2)×…×P(wn∣w1,w2,…,wn−1)
  • 1.

上面的公式的白话解读为: