快捷方式

直接偏好优化

本 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 中使用。您可以在我们的内存优化概述中了解所有内存优化功能的更多信息。

参考文献

文档

访问 PyTorch 全面开发者文档

查看文档

教程

获取初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源