本文汇总了llama factory等模型训练框架会经常遇到的一些配置参数和经验。最开始学习大模型训练的时候,经常会遇到大量参数,网上资料又多又杂乱,我索性自己整理汇总了一下,费了不少功夫。后续会持续更新和解释。
大模型训练常用步骤和方法
模型训练通常包含哪些阶段
Pre-Training
Pre-Training:预训练阶段。
这个阶段是用来训练基础模型的,是最消耗算力的阶段,也是大模型诞生的起始阶段。
Supervised Finetuning(SFT)
sft:指令微调/监督微调阶段
和预训练阶段相比,这个阶段最大的变化就是训练数据由"量多质低"变为"量少质高",训练数据主要由人工进行筛选或生成。这个阶段完成后其实已经能获得一个可以上线的大模型了
RLHF
RLHF:基于人类反馈的强化学习(Rainforcement Learning from Human Feedback,RLHF)一般可以分成以下两个环节:
奖励建模阶段(Reward Modeling)
在这一阶段,模型学习和输出的内容发生了根本性的改变。前面的两个阶段,预训练和微调,模型的输出是符合预期的文本内容;奖励建模阶段的输出不仅包含预测内容,还包含奖励值或者说评分值,数值越高,意味着模型的预测结果越好。这个阶段输出的评分,并不是给最终的用户,而是在强化学习阶段发挥重大作用。
强化学习阶段(Reinforcement Learning)
这个阶段整合了前面的成果,针对特定的输入文本,通过 SFT 模型获得多个输出文本。
基于 RM 模型对多个输出文本的质量进行打分,这个打分实际上已经符合人类的期望了。
基于这个打分,为多个输出文本结果加入权重。这个权重其实会体现在每个输出 Token 中。
将加权结果反向传播,对 SFT 模型参数进行调整,就是所谓的强化学习。
常见的强化学习策略包括PPO与DPO,DPO主要用于分布式训练,适合大规模并行处理的场景,PPO通常指的是单机上的算法就可以了。
大模型训练模式选择
根据领域任务、领域样本情况、业务的需求进行选择,这个非常看重实战经验,不测试也很难找到适合本领域的最优解。
模式一:基于base模型+领域任务的SFT;
模式二:基于base模型+领域数据 continue pre-train +领域任务SFT;
模式三:基于base模型+领域数据 continue pre-train +通用任务SFT+领域任务SFT;
模式四:基于base模型+领域数据 continue pre-train +通用任务与领域任务混合SFT;
模式五:基于base模型+领域数据 continue pre-train(混入SFT数据+通用任务与领域任务混合SFT;
模式六:基于chat模型+领域任务SFT;
模式七:基于chat模型+领域数据 continue pre-train +领域任务SFT
大模型训练经常遇到的参数配置解释
不同训练阶段的相关选项
Supervised Fine-Tuning(监督微调)
这是一种常见的微调方法,通过将预训练模型应用于新任务并使用有标签数据来微调模型,以优化特定任务的性能。
Reward Modeling(奖励建模)
这是一种用于强化学习(Reinforcement Learning)的方法,通过定义奖励函数来引导智能体学习目标动作或策略。
PPO(Proximal Policy Optimization)
PPO是一种用于训练强化学习模型的优化算法,旨在提高训练效率并实现稳定性。