LLama3技术报告笔记(SFT+DPO)

reward model: 基于预训练模式,使用人工标注的Pair数据,得到;

在原有的2类response基础上,加入一类edited:把人在chosen response上的修改;edited>chosen>rejected;

把prompt和2~3个response放在同一个样本里(response顺序打乱)(output到底是什么?没说);和经典方法效果是类似的,比经典方法的训练速度快;(经典方法:prompt和每个response分别当作1个样本,预测结果是1个分数(文本还是浮点数?)

SFT: 使用reward model对模型回复进行rejection sampling,得到的数据,再加一些其他源头的数据,做SFT训练;

使用标准的交叉熵做损失函数;

DPO: 相比PPO,DPO能用更小的计算量达到更好的效果;

图上画的是人标的pairwise数据和领域数据;文字里说是前面几轮里最好的DPO模型生成的数据;

标准DPO基础上做的额外改动:

1. 不把<xxx>等标签token放入DPO loss里;(如果不用这招,观察到,生成的尾部重复、突然生成终止token) (原因猜测:chosen和rejection样本里,都有这些标签,导致模型认为这些标签又得增强又得减弱)

2. 在chosen tokens的loss上加了个额外loss,为了增强训练的稳定性;

Model averaging:

(全部平均为1个模型吗?reward model也算进去?) 

一共训练了6轮;每轮用于reward model和DPO的perference标注都是新的,SFT数据也是新的,用之前的模型合成并用reward model做reject sampling得到;

Preference数据

使用多个不同的模型(使用不同的数据混合、不同的垂直数据,训练出来的);每次从2个不同模型里采样得到2个response;

由人来判别谁是chosen谁是rejection,并且给胜出程度进行打分(4~1分);人可以对chosen response进行改写(edited),或者人把自己的意见(feedback)输入大模型,让大模型得到更好的输出,来做edited;edited>chosen>rejection;

采用多轮对话,每轮作为1个样本,该样本包含之前的问答;(2个模型生成的response不同,那么,后续turn的prompt也就不同了?)

如上表格,数据混合比例。general English占比82%,包括QA、指令follow等各种类型;相比LLama2,增加了样本的长度,可视为增大了复杂度; 做了数据质量分析,期间给标注人员反馈,用来refine prompt和调整标注员行为;哪儿疼补哪儿,上一轮模型的短板能力,下一轮增大该能力的数据复杂度。

训练reward model,用了所有偏好数据;训练DPO,只用了来自各种能力的最新的数据;

reward训练和DPO训练,都只用了差异大(相差4分或3分)的preference数据样本,扔弃差异小(2分或1分)的样本;

SFT数据

1. 人工构造的prompt数据+模型生成且经rejection-sampling过滤的responses 

2. 特定领域上的合成的数据;

3. 很少量的人工构造数据;

Rejection sampling: 从之前最好的模型ckpt,生成10~30个responses,经过reward model,取最优的那个;靠后的rounds,调整system prompt来指定语气、风格、格式等;

采用PagedAttention提高效率;可以将同一个prompt的KV重复利用很多次,生成很多个responses;

每轮根据评测结果, 在内容类别、复杂度、质量,这几个维度上,动态调整数据混合比例;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值