直接偏好优化¶
此配方支持多种 直接偏好优化 (DPO) 风格的微调技术。这些技术旨在引导(或 对齐)模型朝着某些期望的行为发展。例如,一个常见的目的是训练语言模型以生成安全和诚实的输出,或者 有益且无害。
为了在使用此配方时获得最佳结果,首先使用监督微调来微调您的模型可能会有所帮助,以确保您的模型在您感兴趣的领域内处于分布状态。为此,请查看我们在 配方概览 中的其他微调配方,这些配方支持各种 SFT 范例。
在监督微调之后,这是一个使用 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 on a single device
tune run lora_dpo_single_device --config llama3_1/8B_lora_dpo_single_device
# run on two gpus
tune run --nproc_per_node 2 lora_dpo_distributed --config llama3_1/8B_lora_dpo
使用此配方以及您选择的数据集(包括自定义本地数据集和 Hugging Face 的数据集)非常容易上手。查看我们关于 偏好数据集 的入门知识,了解如何操作。
对于此配方,我们包括不同的 DPO 风格的损失函数
直接偏好优化
(DPO) 损失函数 [1]。DPO 损失函数增加首选响应相对于非首选响应的相对对数概率,同时使用来自参考模型的对数概率来防止训练期间的策略退化。与 RLHF 一起,这是最常用的对齐技术,用于训练越来越多的最先进的 LLM,例如 Llama3.1、Gemma 2、Qwen2 等。这是对齐微调的一个良好起点。统计拒绝采样优化
(RSO) 或“铰链”损失函数 [2]。RSO 基于支持向量机和 DPO 的概念构建,应用基于边距的方法,该方法惩罚低质量响应,同时确保选择和非选择对数概率之间存在显着差距。
要使用这些损失函数中的任何一个,只需通过 torchtune CLI 使用 loss
配置条目或标志
tune run lora_dpo_single_device --config llama2/7B_lora_dpo_single_device \
loss=torchtune.modules.loss.RSOLoss \
gamma=0.5
为了更深入地了解使用此配方时可以使用的不同杠杆,请参阅我们关于我们支持的不同 PEFT 训练范例的文档
我们的许多其他内存优化功能也可以在此配方中使用。您可以在我们的 内存优化概览 中了解更多关于我们所有内存优化功能的信息。
参考文献