LLM项目实战:使用Llama-factory进行DPO训练

前言

LLM训练三板斧,预训练,微调,RHLF。DPO属于是最后环节RHLF中的一个方法,关于RLHF主流方法有PPO,DPO,GROP。关于这三种介绍RLHF方法,我之前分享过对着三种方法的一些思考,有兴趣的同学可以看看。

因为DPO对硬件的需求最小,显存占用最低,所以我们先采用DPO进行训练。

硬件信息:

4070 12g*2 、64g内存、操作系统:Ubuntu24.04、模型:QWEN-3vl-2B(因为我这个模型是上个多模态任务sft过的,所以选择vl模型,没有图片输入需求的同学可以下载纯语言模型)

本篇教程仅关于DPO训练,请提前配置好环境和下载好LLamafactory(关于llamafactory环境配置其实也是一大头疼的点,注意如果想要使用分布式训练,llamafactory仅支持到deeospeed10.0-16.0,截止到2025年11月20日llamafactory还没有完成对deepspeed最新版本的适配

碎碎念:很多初学大模型的同学还是使用Windows系统进行训练,本人之前也是。但是由于Windows总是出现各种奇怪的报错和显存不稳定等情况,尤其是在多卡训练中,这种情况会更加明显。后来也尝试过wsl2其他替代方案,最后还是发现linux系统有着win无法替代的优势。所以还是建议如果真想长期学习LLM的同学,直接一步到位到linux系统,少走弯路 :)

llamafactory以下简称LF

STEP1 从hugging face下载我们需要的数据库

这里采用的是hugging face中的一个医疗DPO数据集

from datasets import load_dataset # 加载数据集 ds = load_dataset("HANI-LAB/Med-REFL-DPO",'reasoning_enhancement') 
print(ds['train'][:1])

这里看到数据是可以正常加载的

STEP2 对数据进行预处理

由于我们需要使用llamafactory的框架进行dpo训练,所以需要把源arrow格式的文件转为lf能识别的json格式。下面这是官方文档中的规范格式,我们编写一个python程序完成格式的对齐

[ { "instruction": "人类指令(必填)", "input": "人类输入(选填)", "chosen": "优质回答(必填)", "rejected": "劣质回答(必填)" } ]
import json from datasets import load_dataset import os def convert_arrow_to_json(dataset_path, output_json_path): """ 将 Arrow 格式的数据集转换为指定的 JSON 格式 Args: dataset_path: Arrow 数据集的路径或 Hugging Face 数据集标识 output_json_path: 输出 JSON 文件的路径 """ # 加载数据集 # 如果是本地文件,可以使用 'load_from_disk' if os.path.exists(dataset_path): # 加载本地的 Arrow 数据集 dataset = load_dataset('arrow', data_files=dataset_path) else: dataset = load_dataset(dataset_path, name='reasoning_enhancement') # 获取训练集(根据你的描述,数据在 train split 中) train_dataset = dataset['train'] # 转换为所需的 JSON 格式 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', ''), # input 是选填的,默认空字符串 "chosen": item['chosen'], "rejected": item['rejected'] } output_data.append(json_item) # 保存为 JSON 文件 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}") def main(): # 本地 Arrow 文件路径 arrow_file_path = "path/to/your/Reasoning Enhancement.arrow" # 输出 JSON 文件路径 output_json_path = "med_refl_dpo.json" # 执行转换 convert_arrow_to_json(arrow_file_path, output_json_path) if __name__ == "__main__": main() 

完成数据集的标准化后,我们将获得的json文件复制到lf的data目录下。

之后我们需要修改 LLaMaFactory data目录下的dataset_info.json,增加自定义数据集:(官网也给出了添加数据集的标准格式)

"数据集名称": { "file_name": "data.json", "ranking": true, "columns": { "prompt": "instruction", "query": "input", "chosen": "chosen", "rejected": "rejected" } }
"MED_DPO": { "file_name": "/home/zadyd/桌面/xza/LLaMA-Factory/data/med_dpo.json", "ranking": true, "columns": { "prompt": "instruction", "query": "input", "chosen": "chosen", "rejected": "rejected" } },

STEP3 启动LF,选择合适的参数

在lm文件夹下启动终端,输入llamafactory-cli webui启动我们的可视化ui

如果是windows系统,则打开终端cd到lf目录

在网页端设置我们需要的参数,一般像我这样设置就可以

因为我是多卡训练,所以选择了 deepspeed,单卡训练的同学不需要勾选这个选项,本次训练需要 24g 左右的显存,这个显存大小有点尴尬,可以通过开启量化或者减少序列长度节约显存

大概需要 12 个小时,这一步很容易遇到环境不兼容的问题,需要耐心调整,不要心急

STEP4 合并模型

训练完成之后在 export 模块,选择训练好的文件位置,和原始文件进行合并

Read more

我用 Nexent 做了个 AI 大厨:基于 Nexent 知识库与 MCP 生态打造智能烹饪顾问实战

我用 Nexent 做了个 AI 大厨:基于 Nexent 知识库与 MCP 生态打造智能烹饪顾问实战

引言:厨房小白的自救之路 说实话,我是一个对做饭既向往又恐惧的人。向往的是那些短视频里色香味俱全的家常菜,恐惧的是每次打开冰箱,站在一堆食材面前完全不知道能做什么。我的做饭流程通常是这样的:先在 B 站搜教程视频,边看边暂停边做,一顿饭下来手机屏幕被油溅得惨不忍睹。更糟糕的是,我家还有一位对海鲜过敏的室友和一位需要控糖的老妈,每次做饭都得在脑子里疯狂计算"这个能不能放""那个谁不能吃"。 上个月,我在 GitHub 上看到了 Nexent——一个"零编排"的开源智能体平台,主打"一个提示词,无限种可能"。我当时脑子里就冒出一个想法:能不能做一个懂食材搭配、会根据季节推荐菜谱、还能照顾家人饮食禁忌的 AI 烹饪顾问? 说干就干。我花了一个周末的时间,在 Nexent 上亲手搭建了一个名叫"AI

【笔记】Windows 上安装 OpenCode AI 编码助理:从踩坑到成功的简单记录

【笔记】Windows 上安装 OpenCode AI 编码助理:从踩坑到成功的简单记录

Windows 上安装 OpenCode AI 编码助理:从踩坑到成功的简单记录 日期:2026 年 1 月 9 日 作者:AITechLab 大家好,我是 AITechLab。 最近在网上看到 OpenCode 这个开源 AI 编码助理(官网:https://opencode.ai/),它声称可以帮助开发者在终端或桌面模式下用 AI 写代码、调试项目,支持 75 多种模型,包括免费的开源模型,还强调隐私保护(不上传代码)。 OpenCode |开源AI编码代理 介绍及操作文档 |OpenCode 桌面版 | 版本 v1.1.6 ·Anomalyco/OpenCode 作为 Windows

宏智树AI——ChatGPT学术版驱动,一站式论文写作智能解决方案

宏智树AI——ChatGPT学术版驱动,一站式论文写作智能解决方案

在学术创作日益精细化、规范化的今天,每一位科研学子、研究者都曾面临论文写作的多重困境:大纲难立、文献繁杂、数据难析、格式繁琐,耗费大量时间在机械性工作上,难以聚焦核心研究价值。宏智树AI应运而生,作为一款专为论文写作量身打造的学术写作辅助平台,依托ChatGPT学术版模型驱动,搭载先进AI5.0技术架构,构建起覆盖“大纲生成到定稿答辩”的全流程学术智能解决方案,重新定义学术创作效率与质量边界,让每一份学术成果都能高效落地、彰显专业。 宏智树AI的核心竞争力,源于其深耕学术场景的技术沉淀与功能布局。不同于通用型AI写作工具,平台以ChatGPT学术版为核心驱动,结合AI5.0技术架构的迭代优势,针对学术写作的逻辑特性、规范要求进行千万级学术语料训练,精准适配各学科论文写作范式,实现“智能赋能不越界,专业辅助不缺位”,既保留研究者的核心思考,又高效解决写作中的各类痛点,让学术创作更轻松、更合规、更具深度。 硬核技术底座:ChatGPT学术版+AI5.0,解锁学术智能新高度 技术是学术辅助的核心支撑,宏智树AI以双重技术优势,筑牢学术创作的智能根基。依托ChatGPT学术版模型的强大

【深度解析】腾讯Claw三剑客横评:WorkBuddy、QClaw、CodeBuddy,3款AI Agent实测对比与选型指南

【深度解析】腾讯Claw三剑客横评:WorkBuddy、QClaw、CodeBuddy,3款AI Agent实测对比与选型指南

**摘要:**2026年AI Agent赛道最火的关键词——“养龙虾"🦞。腾讯一口气推出 WorkBuddy、QClaw、CodeBuddy 三款 Claw 系产品,分别切入企业办公、个人助手、AI编程三大场景。本文以腾讯10年程序员视角,从定位差异、核心能力、技术架构、实测体验、选型策略5个维度深度横评三款产品,帮你找到最适合自己的那只"虾”。 目录 * 前言 * 一、龙虾大战背景:为什么腾讯要出 3 只? * 1.1 OpenClaw 引爆 AI Agent 赛道 * 1.2 国内大厂入局图谱 * 二、WorkBuddy:企业级 AI 办公中台 🏢 * 2.1 产品定位 * 2.