直接偏好优化¶
本 recipe 支持多种 直接偏好优化 (DPO) 风格的微调技术。这些技术旨在引导(或对齐)模型,使其表现出一些期望的行为。例如,一个常见的目是训练语言模型生成安全和诚实的输出,或使其有用且无害。
使用本 recipe 时,为了获得最佳效果,最好先使用有监督微调对模型进行微调,以确保模型在您感兴趣的领域内分布一致。为此,请查看我们的其他微调 recipe,它们支持各种 SFT 范例,详见recipe 概述。
在有监督微调之后,以下是使用基于 LoRA 的微调或全模型微调 Llama 3.1 8B 并结合 DPO 的示例
注意
您可能需要获得您感兴趣的 Llama 模型访问权限。有关访问受限存储库的详细信息,请参阅此处。
tune download meta-llama/Meta-Llama-3.1-8B-Instruct \
--ignore-patterns "original/consolidated.00.pth"
--HF_TOKEN <HF_TOKEN>
# run lora dpo on a single device
tune run lora_dpo_single_device --config llama3_1/8B_lora_dpo_single_device
# run lora dpo on two gpus
tune run --nproc_per_node 2 lora_dpo_distributed --config llama3_1/8B_lora_dpo
# run full dpo on four gpus
tune run --nproc_per_node 4 full_dpo_distributed --config llama3_1/8B_full_dpo
使用您选择的数据集(包括自定义本地数据集和 Hugging Face 数据集)轻松开始使用此 recipe。请查看我们关于偏好数据集的入门指南,了解如何进行操作。
对于此 recipe,我们提供了不同的 DPO 风格损失函数
直接偏好优化
(DPO) 损失 [1]。DPO 损失函数通过增加偏好响应相对于非偏好响应的对数概率,同时利用参考模型的对数概率来防止训练过程中策略退化。与 RLHF 一样,这是最常用的对齐技术,用于训练越来越多最先进的 LLM,例如 Llama3.1、Gemma 2、Qwen2 等。这是对齐微调的一个良好起点。统计拒绝采样优化
(RSO) 或“hinge”损失 [2]。RSO 基于支持向量机和 DPO 中的概念,应用基于 margin 的方法,惩罚低质量响应,同时确保选中和未选中对数概率之间存在显著差距。
要使用其中任何一个,只需通过 torchtune CLI 使用 loss
config 条目或标志即可
tune run lora_dpo_single_device --config llama2/7B_lora_dpo_single_device \
loss=torchtune.modules.loss.RSOLoss \
gamma=0.5
要更深入地了解使用本 recipe 时可以调整的不同参数,请参阅我们关于支持的不同 PEFT 训练范例的文档
我们的许多其他内存优化功能都可以在本 recipe 中使用。您可以在我们的内存优化概述中了解所有内存优化功能的更多信息。
参考文献