Skip to content
Go back

如何训练一个 GPT 助手

Published:  at  03:20 PM

本文翻译了 Andrej Karpathy 在 Microsoft Build 2023 大会分享的第一部分内容。

目录

1. 引言

人工智能领域正在经历翻天覆地的变化,因此这里讲的只是到目前为止训练 GPT 助手的方法。大致分为四个阶段:

  1. 预训练(Pre-training)
  2. 监督微调(Supervised Fine Tuning, SFT)
  3. 奖励建模(Reward Modeling)
  4. 强化学习(Reinforcement Learning)

每个阶段又分为三个部分(从上到下):数据集、算法和输出的模型。

2. 预训练

这个阶段占了整个过程(四个阶段)绝大部分算力,例如占据了 99% 的训练计算时间和浮点运算。

处理的是互联网规模的数据集,使用数千个 GPU 训练,可能需要数月的时间。其他三个阶段是微调阶段,只需要使用较少的 GPU 训练几个小时或几天。

2.1 数据集

首先需要收集大量的数据。例如,下面是 Meta 训练 LLaMA 所用的数据集:

数据集占比迭代次数(Epochs)数据集大小(Disk Size)
CommonCrawl67.0%1.103.3 TB
C415.0%1.06783 GB
Github4.5%0.64328 GB
Wikipedia4.5%2.4583 GB
Books4.5%2.2385 GB
ArXiv2.5%1.0692 GB
StackExchange2.0%1.0378 GB

其中 Epochs 是用 1.4T tokens 预训练时的迭代次数。用 1T tokens 预训练时也是用的这个数据集比例。

2.2 文本 Token 化

在实际训练这些数据之前,需要经过一个预处理步骤,即 token 化。将原始文本翻译成整数序列,后者是 GPT 的表示方式。

2.3 超参数:GPT-3 vs. LLaMA

接下来需要考虑控制阶段的超参数。这里拿两个具体模型 GPT-3/LLaMA 作为例子:

词汇表大小、上下文长度、参数数量

预训练处理的数量级大致如下:

硬件环境和成本

模型GPU训练时长训练成本
GPT-3约一万张 V10030 天左右$100 万 ~ $1000 万
LLaMA两千张 A10021 天$500 万

2.4 开始训练

根据 Batch Size 和上下文长度 Token 化输入文本

输入给 Transformer 的是 (B,T) 维度的矩阵,其中:

另外,输入会整理成行(row),每个输入序列的结尾用一个特殊的 <|endoftext|> token 来标记。

预测下一个 Token

在预测每个位置的下一个 token 时,只能用到当前行中当前位置前面的最多 T(上下文长度)个 token。

损失函数

训练一段时间之后,你会发现 Transformer 已经学会了单词以及在哪里放空格和逗号等等。因此,随着时间的推移,我们可以得到越来越一致的预测。

3. 监督微调(SFT)

3.1 收集高质量人工标注数据

在监督微调阶段,首先需要收集小但高质量的数据集。通常是通过供应商的形式收集,格式是”提示 + 优质回答”。

3.2 SFT 训练

然后在这些数据上再次进行语言建模:

4. 奖励建模

RLHF 包括奖励建模和强化学习。在奖励建模阶段,会将数据收集转变为比较(comparison)的形式。

4.1 例子:评估 ChatGPT 编程的好坏

基于上一步已经训练好的 SFT 模型,让它写一个检查给定字符串是否为回文的程序或函数。我们重复三次,每次都给完全相同的提示,得到三个回答。

4.2 奖励

现在来看一下如何对奖励进行建模:

4.3 奖励模型的特点

跟基座模型、SFT 模型以及后面将介绍的强化学习模型相比,奖励模型的最大特点是不能独立部署。

5. 强化学习(RLHF)

5.1 RLHF 训练

现在我们获取了一大批提示,接下来基于奖励模型进行强化学习:

5.2 为什么要使用 RLHF?

简单回答是:效果好。从人类的反馈来看,质量从高到低依次为:RLHF 模型、SFT 模型、基座模型。

5.3 模型的熵

某些情况下,RLHF 模型并不是基础模型的简单改进。特别是,我们注意到 RLHF 模型会丢失一些熵:

6. 总结

目前市面上可用的助手模型中,最好的模型是 GPT-4。前三个都是 RLHF 模型,其他的都是 SFT 模型。


Suggest Changes
Share this post on:

Previous Post
Hugging Face 国内镜像源配置指南