跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
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/8/2137 浏览

概述

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. 步骤四:模型合并
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Web3D 技术栈指南:Blender、Three.js 与数字孪生开发
  • 云边端一体化解析:AI 时代的基础设施核心
  • AI 中的 Skills 详解:核心机制与应用场景
  • Spring Boot Web 三大核心交互实战:表单、AJAX 与 JSON
  • MCP 插件实战:Browser Tools 集成指南
  • C++ 高并发内存池实战:ThreadCache 设计与实现
  • 学术论文如何应对查重与 AIGC 检测的双重挑战
  • 纯 CSS 实现 3D 文字效果实战教程
  • OpenClaw 本地 AI 智能体 Windows10 部署指南
  • 大模型开发框架 LangChain 技术实战入门
  • Python 基础语法精讲(一):常量、变量与运算符
  • C++ 面试基础知识点:语言特性与内存管理
  • Pico 4XVR 1.10.13 安装与使用教程
  • AudioLDM-S 为 AR 教学应用生成交互式触发声效
  • Vue3 开发主流 AI 代码助手推荐与配置指南
  • Pi0 机器人大模型在昇腾 A2 上的部署与性能测评
  • Python 中秋月相可视化:从算法到 Web 渲染实战
  • Edict:基于三省六部制的 AI Agent 协作框架
  • Python FastAPI 入门实战指南
  • Python 10 个超实用小技巧,提升开发效率

相关免费在线工具

  • 加密/解密文本

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