直接偏好优化¶
本配方支持几种直接偏好优化(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风格损失:
Direct Preference Optimization(DPO) 损失 [1]。DPO 损失函数 增加了首选响应相对于非首选响应的相对对数概率,同时使用参考模型的对数概率 来防止训练期间策略退化。与 RLHF 一起,这是最常用的 对齐技术,用于训练越来越多的最先进的 LLM,例如 Llama3.1、Gemma 2、Qwen2 等。 这是对齐微调的一个很好的起点。Statistical Rejection Sampling Optimization(RSO) 或“铰链”损失 [2]。 RSO 基于支持向量机和 DPO 的概念,应用了一种基于边际的方法,惩罚低质量的响应,同时确保所选和未选对数概率之间存在显著差距。
要使用这些,只需通过torchtune 命令行界面使用loss配置项或标志:
tune run lora_dpo_single_device --config llama2/7B_lora_dpo_single_device \
loss=torchtune.modules.loss.RSOLoss \
gamma=0.5
为了更深入地了解使用此配方时可以调整的不同杠杆,请参阅我们支持的PEFT训练范式的文档:
我们许多其他的内存优化功能也可以在这个配方中使用。您可以在我们的内存优化概述中了解更多关于我们所有内存优化功能的信息。
参考文献: