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

LLM 项目实战:使用 LLaMA-Factory 进行 DPO 训练

基于 LLaMA-Factory 框架进行 DPO(直接偏好优化)训练的全流程。内容涵盖从 Hugging Face 加载医疗 DPO 数据集,通过 Python 脚本将 Arrow 格式数据转换为 LLaMA-Factory 兼容的 JSON 格式,并在 dataset_info.json 中注册自定义数据集。随后通过 WebUI 配置训练参数,包括 DeepSpeed 分布式设置及显存优化方案,最后演示了如何导出并合并训练后的模型。该教程适用于具备基础 Python 和大模型微调知识的开发者,旨在提供低资源消耗下的偏好对齐解决方案。

性能调优发布于 2026/4/6更新于 2026/8/2364 浏览

引言

LLM 训练通常包含预训练、微调和 RLHF 环节。DPO(Direct Preference Optimization)属于 RLHF 中的一种主流方法,相比 PPO 和 GRPO,DPO 对硬件资源需求更低,显存占用更少,适合在有限资源下进行偏好对齐训练。

环境准备

建议使用 Linux 系统(如 Ubuntu),Windows 环境下多卡训练可能遇到显存不稳定等问题。

硬件参考:双显卡(如 RTX 4070 12G*2)、64GB 内存。 模型示例:Qwen-VL-2B(支持多模态,纯语言任务可选用对应语言模型)。

注意:LLaMA-Factory 目前对 DeepSpeed 版本有兼容性要求,若使用分布式训练,请确认当前版本支持的 DeepSpeed 范围。

STEP 1 从 Hugging Face 下载数据集

本教程以医疗领域的 DPO 数据集为例。

from datasets import load_dataset

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

确认数据加载正常后,继续下一步。

STEP 2 数据预处理与格式转换

LLaMA-Factory 需要特定的 JSON 格式数据。源数据为 Arrow 格式,需转换为如下结构:

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

编写 Python 脚本完成转换:

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_dpo.json"
    convert_arrow_to_json(arrow_file_path, output_json_path)

将生成的 JSON 文件复制到 LLaMA-Factory 的 data 目录下。

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

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

STEP 3 启动训练

在 LLaMA-Factory 目录下启动 WebUI:

llamafactory-cli webui

在网页端配置参数:

文章配图

若使用多卡训练,建议开启 DeepSpeed 选项;单卡训练无需勾选。根据显存情况,可调整量化等级或序列长度以优化资源占用。

文章配图

训练过程中需注意环境兼容性,如遇报错请检查依赖版本。

STEP 4 合并模型

训练完成后,在 Export 模块选择训练好的权重文件路径及原始模型路径,执行合并操作即可得到最终模型。

目录

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

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

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

更多推荐文章

查看全部
  • VSCode 扩展工具 Copilot MCP 使用教程
  • Python 金融量化分析:7 天核心技能速成
  • 语言学习通用心法:享受过程、持续输入与词汇积累
  • 开源 IPTV 播放器 IPTVnator 功能解析与使用指南
  • JavaScript 完整语法指南
  • 机器学习详解:梯度提升决策树 (GBDT) 原理
  • OpenCV:直方图均衡化
  • Ubuntu 系统 Docker 完整安装及国内镜像加速配置
  • 网络安全工程师成长指南:十年自学经验与核心建议
  • FPGA 开发:Vivado IP 核调用指南
  • 无人机双环 PID 悬停控制方案详解
  • 使用飞算 JavaAI 一键生成电商平台项目全流程
  • C++ 入门:历史、首个程序与命名空间详解
  • 基于 Q-Learning 的无人机三维动态避障路径规划(Matlab 实现)
  • RISC-V 开源处理器实战:从 Verilog RTL 设计到 FPGA 原型验证
  • 如何从零开始训练大型语言模型
  • Vue3 低代码设计器 EpicDesigner 快速上手指南
  • DGX Spark 部署 vLLM 与 Open WebUI 运行 Qwen3-Coder-Next-FP8(CUDA 13.0)
  • Docker 部署 MySQL 8.0:镜像拉取、配置与远程访问
  • 基于 Python 的跨境电商数据采集与代理 IP 策略

相关免费在线工具

  • 加密/解密文本

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