长文 | 大模型Post-Training总结

发布于 2025-1-3 14:05
浏览
0收藏

今天给大家带来一篇知乎好友@hadiii的一篇文章,汇总Llama3.1、DeepSeek-V3、TÜLU 3和Qwen2.5的后训练Post-Training技术。

知乎:https://zhuanlan.zhihu.com/p/12862210431

本文汇总Llama3.1,DeepSeek-V3,TÜLU 3,Qwen2.5报告的后训练部分,摘录其中核心的细节。大多涉及到数据,SFT,RL(各种RM训练,DPO,GRPO,RLVR等等)。

1.Llama3.1

paper: https://ai.meta.com/research/publications/the-llama-3-herd-of-models/

长文 | 大模型Post-Training总结-AI.x社区

Illustration of the overall post-training approach for Llama 3.

总的来说,Llama 3后训练方法是迭代式的,总共做了6轮。每轮的核心操作是:Reward Modeling,Rejection Sampling,SFT,DPO。

数据构成主要是SFT data和Preference data。而Reward Modeling和DPO,对Preference data又有不同的使用方式。

  • SFT data:每轮Rejection Sampling的结果 + 针对特定能力的合成数据 + 少量的人工标注数据。
  • Preference data:每一轮训练都构建一批新的Preference data,Preference data积累式地增长。详细过程见1.2 Preference data部分。

Model Averaging:每个RM、SFT或DPO阶段,使用不同的data mix或超参数进行实验所获得的模型进行加权平均。

1.1 SFT

长文 | 大模型Post-Training总结-AI.x社区

SFT数据构成

Rejection Sampling:

采样模型多次,让RM选出最好的回复,作为SFT data的一部分。部分细节如下:

  • 采样什么模型?两种情况。迭代中表现Avg score最好的模型,或者在某个particular capability上表现最好的模型。
  • 采样多少次?K=10~30,即一般采样10-30次。
  • prompt哪来?人工标注的prompts。并在后训练迭代后期引入特殊的system prompts。

SFT训练细节:

  • 405B模型使用学习率1e-5。
  • 训练步数在8.5K到9K步之间。
  • 高质量数据源进行多轮重复训练(epochs multiple times)。例如一个特别优质的coding示例可能被训练3-4次。
  • 普通质量数据进行降采样(downsamples)。质量一般的数据可能只用1次或被随机抽样部分使用。


Our final data mix epochs multiple times on some high quality sources and downsamples others.

1.2 Preference data

长文 | 大模型Post-Training总结-AI.x社区

Preference data数据构成

We deploy multiple models for annotation after each round and sample two responses from two different models for each user prompt. These models can be trained with different data mixes and alignment recipes, allowing for different capability strength and increased data diversity.

  • 采样什么模型?部署多个不同数据配比和对齐方法训练的模型,针对每个prompt选取两个不同的模型进行采样。原因:不同模型能够在不同的能力维度上表现出差异,数据质量和多样性更好。
  • 偏好等级?四个等级:显著更好(significantly better),更好(better),稍微更好(slightly better),略微更好(marginally better)。
  • 允许修改:标注同学可以进一步优化chosen response,最后edited > chosen > rejected。
  • 迭代式难度:最后随着模型改进逐步提高prompt复杂度。

1.3 RM & DPO

Reward Modeling:We train a reward model (RM) covering different capabilities on top of the pre-trained checkpoint.
DPO:For training, we primarily use the most recent batches of preference data collected using the best performing models from the previous alignment rounds.
Preference Data:In each round of post-training, we use all the preference data that is available at the time for reward modeling, while only using the latest batches from various capabilities for DPO training.

RM迭代细节:

RM也参与后训练迭代。每一轮迭代都会重头训练RM。原文提到,每次训练都会使用所有的Preference data,且都是从Pre-trained checkpoint开始训练的,而不是在t+1轮迭代使用第t轮训练的RM做增量训练。

长文 | 大模型Post-Training总结-AI.x社区

Llama2 RM ranking loss

  • 移除llama2使用的margin loss,即上图的m(r),因为数据量上来之后margin意义不大,不如“complexity management”回归原始ranking loss:

长文 | 大模型Post-Training总结-AI.x社区

  • RM和DPO都只使用偏好等级为significantly better or better的pair,并且都过滤了similar response。

DPO迭代细节:

DPO每次都在SFT之后进行。此处的一个细节是,DPO训练所用的Preference data并全不是在本轮的SFT model上采样和标注的,而主要是从前面所有迭代轮次中表现最好的模型中采样得到的。同时,每次迭代只取最新的一批Preference data,还要剔除General English部分数据,和RM不一样。loss:

长文 | 大模型Post-Training总结-AI.x社区

  • 同时从chosen和rejected response里面mask掉special formatting tokens的loss,比如header token & termination token,因为会引入冲突的学习目标,即loss同时往增加和减少这些token的概率上优化。
  • 同时优化chosen response的SFT loss。
  • 学习率取1e-5,beta取0.1,SFT loss取0.2。
  • RM和DPO都只使用偏好等级为significantly better or better的pair,并且都过滤了similar response。

DPO discussion

DPO团队观察到,只要SFT模型在Long context任务中表现出色,DPO中仅使用短上下文训练数据,并不会对长上下文性能产生负面影响。

1.4 数据清洗

Llama 3给出的数据清洗方法都很务实。

首先是对一些不想要的回复模式需要去重,例如过度使用表情符号或感叹号的问题。非常经典的AI语风也需要注意,例如“过于喜欢滑跪”的语气问题,遇事不决就“对不起”或“我道歉”。

其他各种方法还有:

1、主题分类(Topic classification):首先训练一个Topic classifier,例如用一大堆文本分类的任务数据去SFT一下Llama 3 8B。然后对所有训练数据进行两个层级的分类,粗粒度类别(如“数学推理”)和细粒度类别(如“几何和三角学”)。

2、质量评分(Quality scoring):使用Reward model和基于Llama为每个样本的质量打分。对于基于RM的评分,将得分前1/4的数据视为高质量数据。基于Llama的评分,就是基于Llama 3设计了一些打分的prompt,General English数据使用三个维度的评分(准确性、指令遵循性和语气/表达),coding数据则使用两个维度的评分(错误识别和用户意图),最后将获得最高分的样本视为高质量数据。RM评分和Llama评分的分歧率较高,但结合这两种机制能在meta内部测试集中取得最佳的召回率。

3、难度评分(Difficulty scoring):Instag和基于Llama的评分。对于Instag,提示Llama 3 70B对SFT提示进行意图标注,意图越多,复杂性越高。基于Llama的思路和Quality scoring相似,给了Llama 3一些prompt,基于三个维度去打分。

4、语义去重(Semantic deduplication):最后进行语义去重。首先使用RoBERTa对完整对话进行聚类,然后在每个聚类内按(质量分数 × 难度分数)对其进行排序。接着,遍历所有排序的样本进行贪婪选择,仅保留与当前聚类中已见样本的余弦相似度小于阈值的样本。

Instag用于标注SFT数据的意图和语义标签。详见:https://arxiv.org/pdf/2308.07074

2 DeepSeek-V3

paper: https://github.com/deepseek-ai/DeepSeek-V3/blob/main/DeepSeek_V3.pdf

DeepSeek-V3的后训练路径是SFT->GRPO。后训练部分同时提到了一些从DeepSeek-R1蒸馏的探索,Self-Rewarding的尝试,以及Multi-Token Prediction的效果。全文精彩内容主要在前边 pretrain ,但目前只想先整理后训练部分。

2.1 SFT

DeepSeek-V3构建了一个1.5M(V2也是大概1.5M)的指令微调数据集,并且构建数据时按照ReasoningData和Non-Reasoning Data做了区分。

推理相关数据

对于推理相关的数据集(Math,Coding,逻辑推理),通过 DeepSeek-R1 生成数据。尽管 R1 生成的数据表现出较高的准确性,但同时也存在诸如过度思考、格式不佳以及回答冗长等问题。所以目标是结合 R1 生成数据的高准确性与常规格式化推理数据的清晰性与简洁性。

具体来说,首先针对特定领域训练多个expert model。随后,expert model被用作最终SFT data的generator。Expert model训练过程中,需要为每条数据实例生成两种不同类型的 SFT 样本:

  1. 将问题与其原始回答配对,格式为 <问题, 原始回答>;
  2. 在问题和 R1 回答的基础上加入系统提示,格式为 <系统提示, 问题, R1 回答>。

System prompt引导模型生成具有反思与验证机制的回答。在RL阶段,模型通过high-temperature sampling生成回答,从而整合R1生成数据和原始数据的模式,即便在没有明确system prompt的情况下也能体现。经过数百步的强化学习后,Expert model模型学会了融合 R1 的模式。

Expert model的RL训练完成后,使用拒绝采样(RS)以筛选高质量的 SFT 数据,用于最终模型的训练。此时由于是expert model作为generator,所以保留了 DeepSeek-R1 的各种优势,也能同时生成简洁高效的回答。

非推理数据

对于非推理数据(例如创意写作、角色扮演和简单问答),采用 DeepSeek-V2.5 生成回答,并由人工标注人员核实数据的准确性与正确性。

SFT 细节

  • 训练两个epoch,learning rate采用cosine decay ,起始学习率为 5×1e-6,逐步衰减至 1e-6。
  • 训练期间,每个sequence由多个样本数据打包组成(即SFT packing)。但不同样本间需要额外的attention mask,确保这些样本彼此独立且不可见。但值得一提的是,V3在 pretrain 时,没有应用cross-sample attention mask。

Discussion:DeepSeek-R1 的蒸馏效果

长文 | 大模型Post-Training总结-AI.x社区

The contribution of distillation from DeepSeek-R1

报告基于DeepSeek-V2.5研究了从DeepSeek-R1蒸馏的贡献。DeepSeek-R1 Distill在LiveCodeBench和MATH-500基准测试中取得了显著提升。

基于MATH-500,可以发现一个有趣的trade off是:蒸馏可以带来更好的性能(74.6->83.2),但同时也显著增加了平均回答长度(76.9->83.2)。

报告认为从推理模型进行知识蒸馏为post training提供了一个有前景的方向。

2.2 RM

DeepSeek-V3 RL过程训练了两种RM:rule-based and model-based。

Rule-Based RM

对于可以通过特定规则验证的问题,基于规则来确定奖励。例如对于某些数学问题,这类问题具有确定性的答案,要求模型以指定的格式(例如,用一个框框标出最终答案)提供最终答案,从而能够通过规则验证其正确性。同样地,对于 LeetCode 问题,可以利用编译器通过测试用例生成反馈。也是非常经典的做法,能够确保reward非常可信。TÜLU 3同样也做了RLVR。

Model-Based RM

对于具有自由形式的标准答案的问题,依赖RM来判断回答是否与预期的标准答案相匹配即可。但对于没有明确标准答案的问题(例如涉及创意写作的问题),RM需要根据问题和对应的回答提供反馈。Model-Based RM基于 DeepSeek-V3 的 SFT checkpoint进行训练。为了提高其可靠性,还构建了包含偏好数据的训练集,该数据不仅提供最终的reward,还包含通向reward的推理链。该方法减少了在特定任务中出现的reward hacking。

Discussion:Self-Rewarding

即constitutional AI的做法,通过一系列文本描述的规则指导模型。将DeepSeek-V3 本身的投票评估结果也作为一种feedback,显著提升了 DeepSeek-V3 在主观评价中的性能表现。

联想:DeepSeekMath

DeepSeekMath报告提到过使用了Process Supervision RL,但DeepSeek-V3报告中未提及。

2.3 GRPO

GRPO是PPO的简化版本,最核心的改动是砍掉Value Model,依靠多次采样的Reward,得出baseline分数来计算advantage。DeepSeek-V3未在GRPO一节提供较多细节。GRPO的优势函数为:

长文 | 大模型Post-Training总结-AI.x社区

优化目标为:

长文 | 大模型Post-Training总结-AI.x社区

GRPO 图示 from DeepSeek-V2

GRPO详细算法可见DeepSeek-V2报告。GRPO和RLOO做法类似,而TRL rloo_trainer.py实现了RLOO训练源码,可以参考。能理解其中一个就能理解另一个。所以也可参考:https://zhuanlan.zhihu.com/p/1073444997

3 TÜLU 3

paper: https://allenai.org/tulu

长文 | 大模型Post-Training总结-AI.x社区

An overview of the TÜLU 3 recipe.

TÜLU 3的后训练路径是SFT->DPO->RLVR。TÜLU 3报告写的还是非常有诚意的,RL部分提供了蛮多细节供学习。也是印象中少有的花了比较大篇幅讲RLVR的一篇报告。

3.1 SFT

数据构成

长文 | 大模型Post-Training总结-AI.x社区

WildChat,OpenAssistant,NoRobots,,FLAN v2等各种质量还不错的开源数据。人工标注或者好的闭源模型的response保留,没有response的蒸馏4o。

数据实验

长文 | 大模型Post-Training总结-AI.x社区

  • 多样化对话数据(WildChat),对大多数技能有积极影响,特别提升Alpaca Eval性能。
  • 安全性 SFT 数据通常与其他数据集正交。
  • ...(还有一些其他数据实验,如chat template...详见原文)

Recipe

长文 | 大模型Post-Training总结-AI.x社区

超参

batch size 128,Max Length 4096,Linear LR。对于8B模型,学习率:5e-6。对于70B模型,学习率:2e-6。训2个epoch。

Trick:Batch Aggregation

TÜLU 3注意到Open-Instruct框架训练的SFT模型与在其他环境(如TPU)上训练的模型之间存在性能差距。这个问题主要是由于Transformers中loss aggregation的一个问题:在不考虑梯度累积或分布式训练设置的情况下对padding tokens的损失进行平均。

长文 | 大模型Post-Training总结-AI.x社区

第二种情况下平等地对待每个样本,,而在第一种情况下平等地对待每个token。因此改变梯度累积可能会由于有效地改变样本权重而对性能产生重大影响。由于跨设备平均,分布式训练中也会出现类似的问题。

所以TÜLU 3在训练时普遍选择使用求和损失(sum loss)而不是平均损失(mean loss)。即通过简单地移除上述方程中的分母,同时调整学习率。这使得所有token被赋予相同的权重。TÜLU 3通过使用各种学习率、训练轮数和损失类型在TÜLU 2 SFT混合数据集上微调Llama 3.0来验证各种设置的性能。最终发现使用lr = 5e-6的sum loss效果最好。TÜLU 3还发现更长时间的训练并没有带来进一步的改进,因此确定使用2个训练epoch。

3.2 Preference Finetuning

TÜLU 3在Preference Finetuning中提及了大量实验。

优化算法实验

长文 | 大模型Post-Training总结-AI.x社区

优化算法实验

长文 | 大模型Post-Training总结-AI.x社区

preference dataset

In summary, our preference mixes come from different prompt sources, such as SFT data, WildChat and Persona IF. It includes prompts seen during SFT training but also new, unseen prompts. And lastly, it contains a mix of on and off-policy completions.

长文 | 大模型Post-Training总结-AI.x社区

TÜLU 3的preference data既有off-policy的pair,也有on-policy的pair。既有SFT阶段见过的prompt,也有新的prompt。人工 + 4o as Judge。报告针对不同data mix做了很多实验,获得了一些符合直觉的结论,列举部分:

Scaling the Number of Unique Prompts Improve Downstream DPO Performance. 增加prompt多样性能够提升DPO效果符合直觉。不过TÜLU 3做了一个清晰的实验是:验证复制一些prompt(但使用不同的response pair)做数据增广是否可行。可惜,结果是Performance退化了。

长文 | 大模型Post-Training总结-AI.x社区

Unused Prompts Lead to Higher Performance vs. Reusing Prompts From SFT Mix. 即DPO阶段的prompt还是应该尽量SFT阶段没见过的。

长文 | 大模型Post-Training总结-AI.x社区

On-policy Data Improves Downstream DPO Performance. 即On-policy Data(模型采样出来的pair)效果更好。

长文 | 大模型Post-Training总结-AI.x社区

Recipe

长文 | 大模型Post-Training总结-AI.x社区

3.3 RLVR(RL with verifiable rewards)

长文 | 大模型Post-Training总结-AI.x社区

RLVR

其实就是基于Rule-Based RM做RL的另一种说法。不同于DeepSeek-V3和Qwen2.5采取的GRPO,RLVR的算法采取了PPO。PPO需要value model,但reward model目前是一个verifier,所以TÜLU 3使用General RM来初始化value model。

Do Not Use the Scores from RM. TÜLU 3在RLVR过程中,发现如果同时使用verifiable reward和RM的reward,会引入额外的噪声,导致表现下降。

4 Qwen2.5

paper: https://arxiv.org/abs/2412.15115

Qwen2.5的后训练路径是SFT + Two-stage Reinforcement Learning,即SFT- >DPO->GRPO。报告总体细节不多。

4.1 SFT

Math

Qwen2.5-Math 的 CoT 数据 + RS。

Coding

Qwen2.5-Coder 的指令微调数据。

...(不再列举,细节不多)

Recipe

最终,SFT构建了包含1M的大规模数据集,训练使用32K的序列长度,训练2个epoch,lr从7×10⁻⁶衰减到7×10⁻⁷、weight decay开0.1,gradient norms裁剪到最大值1。

4.2 DPO

Rule-based data

依靠strategies like execution feedback and answer matching,利用SFT对一批新的prompt采样,通过Rule检测的,作为chosen,否则作为rejected,当然也需要人工审核。

数据量

150,000 training pairs。

训练recipe

标准DPO(未提及使用了length-normalized DPO或者SimPO等变种),Online Merging Optimizer,lr = 7e-7,训练1个epoch。

Online Merging Optimizer:https://arxiv.org/abs/2405.17931

4.3 GRPO

相关原理见deepseek-V3一节中的GRPO。

RM的训练数据

采样什么模型?部署多个不同数据配比和对齐方法训练的模型,针对每个prompt选取不同的模型进行采样,温度也开得比较高。原因:不同模型能够在不同的能力维度上表现出差异,数据质量和多样性更好。

GRPO数据

GRPO的prompts和RM训练的Prompts相同。

Trick

训练期间处理prompt data的顺序由RM评估的reward score方差决定。方差较高的prompt会被优先处理,以确保更有效的学习。

超参设置

每个query采样8次。2048 global batch size and 2048 samples in each episode。

本文转载自​NLP工作站​,作者: hadiii ​​


收藏
回复
举报
回复
相关推荐