LLaMA-Factory v1 怎么运行 LoRA DPO 训练
2026/9/13 2:03:11 网站建设 项目流程

LLaMA-Factory v1 怎么运行 LoRA DPO 训练

【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory

在 LLaMA Factory 的 v1 训练中完成一次 LoRA DPO 训练:以 Qwen3-4B 为底模,用 pair 格式(chosen/rejected)偏好数据训练 LoRA 适配器,并把结果保存到指定输出目录。v1 目前支持 SFT 和 DPO 两种训练方式,DPO 用于对齐人类偏好,无需训练奖励模型。以下内容基于仓库自带的 LoRA DPO 示例配置 和 快速开始文档 整理。

环境准备

按 快速开始文档 给出的依赖表准备环境:

必需项至少推荐
python3.113.12
torch2.7.12.7.1
torchvision0.22.10.22.1
transformers5.0.05.0.0
datasets3.2.04.0.0
peft0.18.10.18.1

可选项:CUDA(NVIDIA GPU)11.6/12.2、deepspeed 0.18.4、flash-attn 2.5.6/2.7.2。文档中对应的安装命令:

# 安装 FlashAttention-2 支持 pip install flash-attn --no-build-isolation # 安装 DeepSpeed 支持 pip install deepspeed

LLaMA-Factory仓库根目录下从源码安装:

pip install -e .

查看训练配置

示例配置 train_lora_dpo.yaml 的关键项:

model: Qwen/Qwen3-4B model_class: llm # PEFT Configuration peft_config: name: lora r: 16 lora_alpha: 32 lora_dropout: 0.05 target_modules: all # Kernel Config kernel_config: name: auto # FSDP Config dist_config: name: fsdp2 dcp_path: null ### data train_dataset: data/v1_dpo_demo.yaml ### training output_dir: ./outputs/test_lora micro_batch_size: 1 cutoff_len: 2048 learning_rate: 1.0e-5 max_steps: 10 ### sample sample_backend: hf max_new_tokens: 128

几个需要留意的点:

  • peft_config声明 LoRA 超参(r=16、lora_alpha=32、target_modules: all);dist_config使用 fsdp2 分布式配置,kernel_config为 auto。

  • max_steps: 10是示例中的快速验证值,正式训练时按需调整。

  • train_dataset指向 data/v1_dpo_demo.yaml,内容如下:

    dpo_zh_demo: path: HuggingFaceH4/orca_dpo_pairs split: train_prefs converter: pair

    该数据集来自 HuggingFace,运行前需要能联网下载。如果换成自定义数据,文档要求参照 数据准备指南 配置,且 DPO 必须使用 pair 格式数据。

运行训练

在仓库根目录执行(快速开始文档以sft命令演示了同样的启用方式):

export USE_V1=1 llamafactory-cli dpo examples/v1/train_lora/train_lora_dpo.yaml

说明:

  • llamafactory-cli可以用lmf作为快捷命令。

  • 也可以在不修改 yaml 的情况下用命令行追加参数覆盖配置,例如 示例文档 中的写法:

    llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml \ learning_rate=1e-5 \ logging_steps=1
  • 使用CUDA_VISIBLE_DEVICES(GPU)或ASCEND_RT_VISIBLE_DEVICES(NPU)选择计算设备;不设置时默认使用所有可见的计算设备。

结果验证

运行过程中的判断依据(均来自 DPO 训练器 dpo_trainer.py 的实际行为):

  1. 数据集格式校验:v1 的 DPO 入口会检查数据集首条样本,缺少chosen_messages/rejected_messages字段时会直接报错:

    DPO training requires pair-format samples containing chosen/rejected responses. ... Please use pair data (e.g. a dataset with chosen_messages/rejected_messages).

    看到这个报错说明数据集不是 pair 格式,需要检查数据转换配置。

  2. 参考模型复用提示:LoRA 模式下,参考模型的 log-probs 复用底模(关闭适配器)计算,日志中会输出:

    LoRA detected — reference log-probs will reuse the base model via disable_adapter().
  3. 逐步指标:训练过程中会记录rewards/chosenrewards/rejectedrewards/accuraciesrewards/marginslogps/chosenlogps/rejectedlogits/chosenlogits/rejected等指标,可用于观察训练状态。

  4. 产物保存:训练跑完max_steps后,训练器会把模型保存到配置的output_dir,即示例中的./outputs/test_lora,检查该目录下是否生成了训练产物即可。

限制与注意

  • DPO 训练器目前只支持cp_size == 1(源码中对其他取值抛出NotImplementedError)。
  • DPO 数据必须是包含 chosen/rejected 的 pair 格式;使用 SFT 风格的普通指令数据会触发上文的数据集校验报错。
  • 示例中的max_steps: 10micro_batch_size: 1只是快速冒烟测试的取值;cutoff_len、学习率等参数请按自己的显存和数据情况在 yaml 中调整。
  • v1 阶段目前支持 SFT 和 DPO 两种训练方法;需要 DeepSpeed、FSDP、FlashAttention-2 等加速特性时安装对应可选依赖。

训练完成并确认outputs/test_lora有产物后,按快速开始文档给出的部署方式可以做推理验证:

llamafactory-cli chat --model_name_or_path path/to/your/model --template qwen

其中path/to/your/model替换为实际的模型路径,qwen替换为与底模匹配的模板名。

【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询