参考现有的中文医疗模型:MedicalGPT[1]、CareGPT[2]等领域模型的训练流程,结合 ChatGPT 的训练流程,总结如下:
在预训练阶段,模型会从大量无标注文本数据集中学习领域/通用知识;其次使用{有监督微调}(SFT)优化模型以更好地遵守特定指令;最后使用对齐技术使 LLM 更有用更安全的响应用户的提示。
训练流程的四个阶段,分别如下:
-
预训练(pre-training,pt),基于基座模型,经过海量中文医疗预料训练,得到领域适配的 ChatGLM-6B。 -
监督微调(supervised finetuning,sft),通过在线问诊等数据,构建训练数据完成指令微调。 -
RM 模型构建(reward modeling, rm),人工对预测答案排序,训练一个打分模型 -
强化学习阶段(reinforcement learning, rl),基于 PPO 算法,采用 RL 的方式,完成 fine-tuned ChatGLM-6B 模型的优化。
预训练阶段-PT
该阶段的训练数据格式如下。对应是非结构化的自然语言文本,通过设定 max_seq_len 和 block_size 等方式,实现文本数据的 chunk,batch 化,作为模型的训练数据,处理完的单条数据包含 input_ids,attention_mask 和 labels;训练的目标是模型需要根据提供的文本来预测 下一个单词。
监督微调阶段-SFT
该阶段的训练数据格式如下。一般对应的结构采用 instruction/input/output/history,根据不同的场景,input 与 history 可以做缺省处理。但是需要人工标注的指令数据集。
对齐
该阶段的主要目标是将语言模型喻人类的偏好、价值观进行对齐,这也是 RHLF 机制的作用。 RLHF 主要包括两步:
-
基于有监督微调模型基础上创建一个 reward model(RM)模型; -
基于 RM 模型使用 PPO/DPO 算法微调 SFT 模型,返回最佳 response。
奖励模型-RM
该阶段是 RHLF 的第一个阶段,训练得到一个 rm 模型用于 rl 阶段的模型打分,其结构格式如下:有多种格式的数据,可自己选择,但需要程序做额外的处理,且这些数据都是人工标注好的。
强化学习-RL
该阶段是 RHLF 的第二个阶段,也是核心部分,用于优化一个 RM 模型,并完成打分。数据格式同 SFT。一般在此阶段会使用特定的算法(DPO/PPO)来实现;引导优化后的大模型生成更符合人类偏好的内容。
总结
对于模型的微调,一开始我是想的太简单了,觉得只要按照基座官方模型文档调试即可;随着了解的深入与不断的学习,微调是个大工程而且对于领域模型来说,其训练流程:预训练 –> 监督微调 –> RHLF 中包含的事项与知识太多。 参考:【中文医疗大模型】训练全流程源码剖析
MedicalGPT: https://github.com/shibing624/MedicalGPT/blob/main/README.md
[2]CareGPT: https://github.com/WangRongsheng/CareGPT
原文始发于微信公众号(阿郎小哥的随笔驿站):聊聊大模型微调训练全流程的思考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/244054.html