文章目录
1 GPT 技术演进剖析
GPT(Generative Pre-Trained Transformer) 模型是什么?
- GPT 模型是一种 NLP 模型,通过在大型语料库上学习到的语言模式来生成自然语言文本
- GPT 语言模型:给定一些字或者词(也被称 token),预测下一个字或者词的模型
GPT-1 模型
GPT-2 模型
- GPT-1 需要对特定任务再进行精调(依赖有标签数据进行监督学习),而 GPT-2 则是考虑在预训练时考虑各种不同的任务,就会更加通用化。
GPT-3 模型
- GPT-3 可以理解为 GPT-2 的升级版,使用了 45TB 的训练数据,拥有 175B 的参数量,真正诠释了什么叫暴力出奇迹。
- in-context learning:对模型引导,教会它应当输出什么内容,比如,翻译任务可以采用输入:
请把以下英文翻译为中文:Today is a good day
。这样模型就能够基于这一场景做出回答。 - Zero-shot, one-shot and few-shot:GPT-3 的口号就是“告别微调的 GPT-3”,它通过不使用一条样例的 Zero-shot、仅使用一条样例的 One-shot 和使用少量样例的 Few-shot 来完成推理任务。
ChatGPT 模型
- ChatGPT 的核心思想是 Learning from Human Feedback
- 第一阶段:传统的有监督训练
- 第二阶段:奖励模型
- 第三阶段:运用奖励模型,一问一回答一打分,不断进行反馈迭代强化学习
GPT-1/2/3/ChatGPT 模型对比
- GPT-1/2/3 预训练
- ChatGPT 预训练
2 如何训练一个 ChatGPT
训练一个代码补全 GPT
- 比如:给模型一个提示词 “build a BERT classifier”
- 模型就能够输出:
- 模型成功定义了一个基于 Bert 的分类器。
准备训练数据:常见代码补全数据 codeparrot 样本示例
数据 Embedding 向量化
- 创建一个分词器:tokenizer = AutoTokenizer.from_pretrained(“./code-search-net-tokenizer”)
- 对前面的示例代码样本进行分词转化,得到如下一串 id
- 把分词函数定义好(会涉及 截断、最大长度等细节配置),然后直接对整个数据集进行map,就可以对整个数据集进行分词
定义模型
- 基于 transformers 库,通过配置的方式快速定义一个模型
- 这是一个 124.2M 模型参数 GPT-2,(详细代码实现阅读 transformers 库的源码),主要前面有个 Embedding 层,中间 12 个 transformer block,最后有个线性层
GPT-1 VS GPT-2
- 在 GPT-2 中的一个 Transformer Block 层中
- 第一个Layer Normalization 模块被移到了 Msaked-Multi-Self-Attention 模块之前;
- 第二个 Layer Normalization 模块也被移到了 Feed-Forward 模块之前;
- Residual-connection 的位置也调整到了 Msaked-Multi-Self-Attention 模块与 Feed-Forward 模块之后
选择训练流程或者框架
- 数据和模型结构都确定下来后,接下来需要一个训练的流程或框架,最简便的直接调用transformers 提供的训练器,给定一些配置、模型、分词器、数据集
- 一键训练:trainer.train()
- 自由度高一点的训练方式自行组装,依次拿到每个 batch 数据、送入模型、计算 loss、反向传播;对大模型,常用 accelerate 库来加速,比如:混合精度、梯度累积等操作。
模型推理
- ChatGPT 人工写答案 VS 小语料
如何训练一个奖励模型
- 奖励模型的学习本质一个句子分类或者回归的任务
举个🌰:IMDB影评数据集,常用于情感分析,也就是给文本的情感打分
- 输入就是影评,输出就是得分(积极或消极对应 1 或 0),就能训练一个奖励模型(比如用来指导GPT生成得分越高,也就是更加积极的文本)
- 同样对其进行分词,转为一串 id,定义分词器,并构造数据集
- 定义一个用于预测得分的模型以及优化器
- 接下来就开始模型训练
- 训练完模型后,就可以对任意文本进行情感打分
- 我们已经能够训练一个能够生成文本的 GPT,一个能够对文本打分的奖励模型,接下来就需要考虑用奖励模型来教会 GPT 生成高分文本了。
利用奖励模型强化 GPT
- 定义两个GPT模型,一个用于强化,一个用于参考
- 通过强化 GPT 再用于生成的效果
3 ChatGPT 在线工程架构设计与实现
计算机新范式
- 四层架构、端到端优化、大幅提升效率
在线工程架构设计
- 通过强化 GPT 再用于生成的效果
- 微服务
- 云原生
- Serverless