RLHF全链路微调实践要点
- 微调原因与方法:PPO在微调时存在一次性加载多个模型导致内存占用大的问题,本次采用加载LoRA部分更新参数的方式进行微调训练,以此优化内存使用。
- 操作流程与关键参数
-
模型与数据集选择:在界面上选择模型和PPO方式,指定数据集(通常为上节课生成的数据集 )。加载上节课Reward模型输出的LoRA的adapter块,既可以使用相对路径(相对于启动lama factory web UI命令的路径),也可以使用绝对路径。
-
命令参数配置:使用ppo作为微调阶段,加载原始文件的大模型加载值。输出路径是针对ppo微调之后的路径。Reward model的保存路径对应界面加载的Reward模型产生的adapter块(LoRA块)的路径,在Reward model type中配置LoRA。若使用导出的奖励模型文件,加载导出路径时需注意模型兼容性,否则会报错。
-
- 执行方式与监控:既可以在界面直接执行命令,也可以将参数拿下来进行后端执行。建议采用后端执行的方式,因为界面可能存在刷新异常、程序难以追溯等问题。启动命令前记录相关参数值,启动后可通过特定命令(如
cat
查看对应路径名称和PID )查看执行文件,确认程序运行情况。按照之前课程讲解的方法,使用tail -f
命令监控模型运行时间。 - 训练结果评估:训练完成后,通过查看奖励值和损失值评估模型训练效果。奖励值上升、损失值波动下降并趋于稳定,表明模型在学习。如当前训练的1.5B模型,奖励值约3.5,损失值逐渐稳定 。同时观察模型输出内容,如针对计算机相关问题的回答,评估其准确性、连贯性和逻辑性。若出现回答反复等情况,可能意味着训练失败,数据质量对训练结果影响较大。
练结果影响较大。 - 模型导出与再训练:若想使用导出的模型(如1.5B模型导出后用于0.5B模型训练 ),需选择特定sheet页标签,加载基座模型和LoRA块,指定输出路径进行导出。在使用导出模型训练时,需注意Reward model type的配置。若模型指向不再是单独的adapter模块,而是导出合并的模型,需将Reward model type改成
full
,否则会因缺少adapter_config.json
文件报错。