轩辕-6bRLHF落地实战
模型介绍:轩辕-6B · 模型库 (modelscope.cn)
1.1偏好数据集构建
1.1.1Prompt构建
1.1.2 Response生成
保证RM训练数据和测试数据分布一致
使用模型来生成response,为了评价response的质量,可以提高采样参数中的temperature和top_p的值。
1.1.3偏好标注
rank标注:对多个response进行排序。instruct-GPT
pair标注:一条prompt只生成两个response。llama2
轩辕-6b:
2.2RM训练
在transformer中最后输出的是softmax后生成的概率,这个概率表示下一个生成词哪个概率最大的向量。在reward model中改为一个线性层,因此其不需要向量,需要一个评价结果的标量。
2.2.1损失函数
2.2.2Reward Model 选择
1.测试精度。
2.RM输出的reward值,不能过大过小。
3.需要拉开奖励值之间的差距。
3.3 RLHF训练
3.3.1结构
actor model和reference model为XuanYuan-6B-SFT, critic model和reward model用训练好的XuanYuan-6B-RM进行初始化。训练中,actor model和critic model需要进行更新,而reference model和reward model则!保持不变
3.3.2数据
强化训练的数据为prompt数据数据组成:偏好数据的prompt,增加了额外的新prompt,比例为1:11.偏好数据中的p2ompt用于强化训练会使训练过程更为“容易”,很大程度上可以避免RM打分不准而导致的一系列问题,如reward hacking、训练不收敛等。2.仅采用偏好数据中的prompt是不够的,这样模型见到的数据过于局限,不利于提升模型的泛化性能。因此增加了额外的新prompt一起用于强化训练。新prompt的构建方式和偏好数据中prompt构建方式相同。
3.3.3训练
应用了deepseed-chat的结构
目标
超参选择
KL散度beta参数、学习率(5e-7)、loss精度(fp32)
3.3.4模型选择和人工评估
DeepSpeed-Chat 源码学习
微调模型
运行:bash training_scripts/single_gpu/run_1.3b.sh
在output文件下 查看训练日志:tail -f training.log
对微调后的模型进行评估
执行脚本 :bash evaluation_scripts/run_prompt.sh
模型推理inference
在output下输入pwd可以查看微调后的模型保存的路径
python3 ./inference/chatbot.py --path {args.path}
参考说明
12大模型全栈-强化学习05-RLHF实战-端到端全流程解决方案-轩辕大模型强化学习完整流程介绍(数据+奖励模型+强化学习调参经验)_哔哩哔哩_bilibili
DeepSpeed-Chat 模型训练实战 | 大模型训练入门实战 (techdiylife.github.io)
DeepSpeed分布式训练框架 DeepSpeed-Chat Step-1-02 actor 模型微调_哔哩哔哩_bilibili