目录

直接首选项优化

此配方支持多种直接首选项优化 (DPO) 样式的微调技术。 这些技术旨在引导(或调整)模型朝着一些理想的行为发展。 例如,一个共同的目标是训练语言模型以产生安全和诚实的输出。 或者乐于助人且无害

要在使用此配方时看到最佳结果,首先使用监督式微调来微调您的模型以确保您的模型 on-distribution 的 on-distribution 权限。为此,请在配方概述中查看我们的其他微调配方,其中 支持各种 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 的概念之上,应用基于边距的方法,对 低质量响应,同时确保 chosen 和 un-chosen 对数概率之间存在显著差距。

要使用其中任何一个,只需通过 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 培训范式:

我们的许多其他内存优化功能都可以在此配方中使用。您可以在我们的内存优化概述中了解有关我们所有内存优化功能的更多信息。

引用:

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源