跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

基于 LLaMA-Factory 的 LLM DPO 训练实战

基于 LLaMA-Factory 框架实现 LLM 模型的 DPO 训练全流程。包含从 Hugging Face 获取医疗 DPO 数据集、编写脚本将 Arrow 格式转换为 LLaMA-Factory 标准 JSON 格式、修改 dataset_info.json 注册自定义数据集、通过 WebUI 配置 DeepSpeed 多卡训练参数,最后导出并合并模型。适用于具备 Linux 环境及 GPU 资源的开发者进行偏好优化微调。

灭霸发布于 2026/4/8更新于 2026/4/253 浏览

概述

LLM 训练通常包含预训练、微调和 RLHF(人类反馈强化学习)环节。DPO(Direct Preference Optimization)是 RLHF 中的一种主流方法,相比 PPO 等方法对硬件需求更低,显存占用更少,适合资源有限的场景进行偏好优化。

硬件与环境

  • 显卡:4070 12G * 2
  • 内存:64G
  • 操作系统:Ubuntu 24.04
  • 模型:QWEN-3vl-2B(多模态 SFT 后模型,无图片输入需求可选纯语言模型)

注意:若使用分布式训练,请确认 LLaMA-Factory 支持的 DeepSpeed 版本。当前建议检查官方文档以适配最新 DeepSpeed 版本。

推荐使用 Linux 系统进行训练,Windows 环境在多卡训练时容易出现显存不稳定及报错问题。

步骤一:数据准备

从 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 格式的数据集。需编写脚本将源 Arrow 格式转换为 LF 识别的标准格式。

标准格式示例:

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

转换脚本如下:

import json
from datasets import load_dataset
import os

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)} 条数据")

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 文件复制到 LLaMA-Factory 的 data 目录下。

修改 dataset_info.json 添加自定义数据集配置:

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

步骤三:启动训练

在 LLaMA-Factory 目录下启动 WebUI:

llamafactory-cli webui

在网页端配置参数:

  • 单卡训练无需勾选 DeepSpeed,多卡训练建议选择 DeepSpeed。
  • 本次训练约需 24G 显存,可通过开启量化或减少序列长度优化。
  • 预计训练时间约 12 小时,期间需注意环境兼容性。

步骤四:模型合并

训练完成后,在 Export 模块选择训练好的权重文件与原始模型进行合并,生成最终可用模型。

目录

  1. 概述
  2. 硬件与环境
  3. 步骤一:数据准备
  4. 步骤二:数据预处理
  5. 步骤三:启动训练
  6. 步骤四:模型合并
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 网络安全渗透测试全流程与核心工具指南
  • STL 转 STEP 转换指南:从 3D 打印到工程设计
  • 基于 Java 和 MyBatis 的 Web 时间日程管理系统
  • LazyCraft 开源:全功能智能体构建平台,支持应用编排与模型管理
  • 基于微信小程序的高校智慧党建平台设计与实现
  • HarmonyOS Canvas 绘图实战:从静态圆到动态交互
  • 通用大模型企业落地难点与精调优化实践
  • 论文万方 AIGC 检测工具选择与降重策略
  • OpenClaw 权限配置完全指南
  • uv 虚拟环境管理:venv 创建、激活与 Python 版本指定
  • 2026 GitHub 热门 Python 项目:AI 代理与数据工具精选
  • Moji 2.0 小智 AI 桌面机器人复刻:基于乐鑫 ESP32 与大模型
  • Spring Boot 3.x CSP 配置导致前端资源加载失败问题及解决
  • AI Agent 五层全能架构解析:从 OpenClaw 到 Claude Code
  • FLASH 坏块监测系统算法题解
  • GitHub 2021 年度报告:全球开发者达 7300 万,中国位居第二
  • uv 与 conda 对比:Python 环境管理工具选型指南
  • C++ 继承机制详解
  • Stack-Chan 机器人入门指南:基于 M5Stack 的 JavaScript 驱动
  • Flutter 集成 genkit 实现鸿蒙端 AI 流式响应与提示词工程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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