跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 LLaMA-Factory 的 DPO 训练实战指南

本文分享了基于 LLaMA-Factory 框架进行 DPO 训练的完整流程。内容涵盖从 HuggingFace 数据集加载、格式转换至 LF 标准 JSON、配置 dataset_info.json,到通过 WebUI 启动训练及最终模型合并。重点针对多卡环境下的 DeepSpeed 配置与显存优化提供了实战建议,并强调了 Linux 环境在 LLM 训练中的稳定性优势。适合希望低成本完成偏好对齐训练的开发者参考。

PentesterX发布于 2026/4/5更新于 2026/7/3034 浏览

背景与硬件准备

大模型训练通常包含预训练、微调(SFT)和人类反馈强化学习(RLHF)三个阶段。DPO 作为 RLHF 的一种主流方法,相比 PPO 等方案对显存要求更低,更适合资源有限的场景进行偏好对齐。

本次实战环境如下:

  • 硬件:双卡 RTX 4070 (12G*2),64G 内存
  • 系统:Ubuntu 24.04
  • 模型:Qwen-VL 系列(因涉及多模态任务,若无图片需求可选纯语言模型)

关于环境选择,强烈建议直接使用 Linux 系统进行训练。Windows 环境下常遇到显存不稳定及分布式训练报错问题,WSL2 虽能缓解但仍有局限。长期投入 LLM 开发的同学,一步到位到 Linux 能少走很多弯路。

本文简称 LLaMA-Factory 为 LF。需注意,若使用 DeepSpeed 进行分布式训练,LF 目前仅适配特定版本,配置时请留意兼容性。

一、数据准备

我们需要从 Hugging Face 加载数据集。这里以医疗领域的 DPO 数据集为例。

from datasets import load_dataset

ds = load_dataset("HANI-LAB/Med-REFL-DPO", 'reasoning_enhancement')
print(ds['train'][:1])

运行后确认数据可正常加载,即可进入下一步。

二、格式转换与配置

LLaMA-Factory 需要特定的 JSON 格式数据。官方规范结构如下:

[
  {
    "instruction": "人类指令",
    "input": "人类输入",
    "chosen": "优质回答",
    "rejected": "劣质回答"
  }
]

编写脚本将源 Arrow 文件转换为 LF 识别的 JSON 格式:

import json
import os
from datasets import load_dataset

def convert_arrow_to_json(dataset_path, output_json_path):
    # 加载数据集
    if os.path.exists(dataset_path):
        dataset = load_dataset('arrow', data_files=dataset_path)
    else:
        dataset = load_dataset(dataset_path, name='reasoning_enhancement')
    
    train_dataset = dataset['train']
    output_data = []
    
    for item in train_dataset:
        if 'instruction' in item and 'chosen' in item and 'rejected' in item:
            json_item = {
                "instruction": item['instruction'],
                "input": item.get('input', ''),
                "chosen": item['chosen'],
                "rejected": item['rejected']
            }
            output_data.append(json_item)
    
    with open(output_json_path, 'w', encoding='utf-8') as f:
        json.dump(output_data, f, ensure_ascii=False, indent=2)
    
    print(f"转换完成!共处理了 {len(output_data)} 条数据")
    print(f"JSON 文件已保存到:{output_json_path}")

if __name__ == "__main__":
    arrow_file_path = "path/to/your/dataset.arrow"
    output_json_path = "med_refl_dpo.json"
    convert_arrow_to_json(arrow_file_path, output_json_path)

转换完成后,将生成的 JSON 文件放入 LF 项目的 data 目录下。接着修改 dataset_info.json 配置文件,注册自定义数据集:

"MED_DPO": {
  "file_name": "data/med_dpo.json",
  "ranking": true,
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "chosen": "chosen",
    "rejected": "rejected"
  }
}

注意路径需根据实际存放位置调整。

三、启动训练

在 LF 项目根目录下的 src 或 lm 文件夹中打开终端,执行以下命令启动 WebUI:

llamafactory-cli webui

在浏览器界面中进行参数配置。对于单卡用户无需勾选 DeepSpeed,多卡训练则必须开启。本次双卡环境约需 24G 显存,若显存紧张,可通过开启量化或缩短序列长度来优化。

训练过程耗时较长,且可能遇到环境依赖问题,保持耐心并关注日志输出是关键。

四、模型合并

训练结束后,在 Export 模块中选择训练好的权重文件路径,与原始基座模型进行合并,生成最终可用的模型文件。

目录

  1. 背景与硬件准备
  2. 一、数据准备
  3. 二、格式转换与配置
  4. 三、启动训练
  5. 四、模型合并
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ map 容器:键值对有序管理与高效检索
  • Python 与前端集成:构建全栈应用
  • OpenClaw Secure DM Pairing:为 AI 机器人构建安全私信访问机制
  • 前端开发基础:HTML、CSS 与 JavaScript 核心入门
  • 本地 LLM 模型与 Ollama、Python 集成实战
  • 基于 AI 辅助的在线图书借阅平台设计与实现
  • 深入 llama.cpp:llama-server 从命令行到 HTTP Server
  • Instruction Tuning 与自定义指令集详解
  • Copilot、Codeium 等 AI 代码助手背后的技术原理
  • 多种编程语言数组遍历实现对比
  • Meson:现代 C/C++ 构建系统详解
  • 2026 年主流 AI 编程工具对比:GitHub Copilot、Cursor 与 Codeium 选型指南
  • GitHub Copilot 编程助手完整使用教程
  • Java 部署:使用 Jenkins Pipeline 自动化构建项目
  • STM32 项目 Git 版本管理入门教程
  • Java 工程项目管理系统功能模块与技术架构说明
  • 机器人运动学:标准 DH 与改进 DH 方法对比
  • Microi 吾码低代码平台核心功能解析
  • 苹果 macOS 26 Tahoe 内存占用过大问题及解决方案
  • Stable Diffusion XL 1.0 灵感画廊免配置部署教程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online