大语言模型微调:监督式微调与奖励模型
在机器学习领域,微调是使预训练模型适应特定任务的关键步骤。本篇博客文章将深入探讨两种微调方法:监督式微调(SFT)和奖励模型,特别是基于人类反馈的强化学习(RLHF)和直接偏好优化(DPO)。我们还将讨论支持这些过程的工具和资源,包括 Hugging Face 开发的 Transformer Reinforcement Learning (TRL) 库中的 SFTTrainer 和 DPOTrainer 类。
监督式微调(SFT)
监督式微调是一种将预训练模型适应特定任务的常见方法。它涉及在带标签的数据集上训练模型,模型学习预测每个输入的正确标签。
TRL 库提供了 SFTTrainer 类,该类旨在促进 SFT 过程。此类接受训练数据集 CSV 中的一列,该列包含系统指令、问题和答案,它们构成了提示结构。
不同的模型可能需要不同的提示结构,但一种标准方法是使用 OpenAI 的 InstructGPT 论文中描述的数据集结构。一个很好的例子是 此链接 中数据集的“text”列。
奖励模型:RLHF 和 DPO
奖励模型是另一种微调方法,它涉及训练模型以优化奖励函数。此函数通常基于人类反馈定义,因此称为基于人类反馈的强化学习(RLHF)。直接偏好优化(DPO)是一种类似的方法,其中训练模型以优化基于不同模型输出的直接比较定义的奖励函数。
TRL 库还提供了 DPOTrainer 类,该类旨在促进 DPO 过程。此类别用于将 SFT 微调模型与 AI 反馈对齐。
全量训练 vs. 低秩适应(LoRA)训练
在模型训练方面,主要有两种方法:全量训练和低秩适应(LoRA)训练。
全量训练涉及训练整个模型,这在计算上可能非常昂贵。通常需要大约 8 个 GPU 和 80GB 显存,才能使用 DeepSpeed ZeRO-3 训练整个模型。
另一方面,LoRA 或 QLoRA 微调是一种更节省资源的方法。它只训练模型的一小部分,可以在单个消费者级 24GB GPU 上完成。在这种方法中,`lora_target_modules` 被设置为 `q_proj`、`k_proj`、`v_proj` 和 `o_proj`。
Hugging Face 的 AutoTrain Advanced
如果微调过程看起来令人生畏,Hugging Face 提供了一个更简单的解决方案:AutoTrain Advanced。这个工具允许您免费微调模型。您只需要指定要微调的基础预训练模型以及用于微调的数据集。关于使用 AutoTrain 的更详细博客可以在 此链接 找到。
结论
微调是使预训练模型适应特定任务的关键步骤。无论您选择监督式微调、奖励模型,还是两者的结合,TRL 库和 Hugging Face 的 AutoTrain Advanced 工具都提供了强大的资源来促进这一过程。通过理解这些方法和工具,您可以有效地微调模型,从而在您的特定任务上取得令人瞩目的成果。