ShareGPT数据集在DPO训练中的应用:直接偏好优化训练的数据格式和配置教程

雨晨酱_4111

雨晨酱_4111

2026-05-25

769人浏览

原创

sharegpt数据需严格转换为dpo三元组格式:确保conversations以human结尾,chosen/rejected为含from/value的字典,转为jsonl,配置dataset_info.json启用ranking=true,并清洗文本、校验schema。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

sharegpt数据集在dpo训练中的应用:直接偏好优化训练的数据格式和配置教程

如果您正在使用ShareGPT格式的数据进行DPO(直接偏好优化)训练,但模型无法正常加载或训练报错,则很可能是由于数据结构不符合DPO专用格式要求。以下是针对ShareGPT数据集在DPO训练中正确应用的详细操作步骤:

一、确认ShareGPT数据必须满足DPO三元组结构

ShareGPT原始格式仅支持多轮对话序列,而DPO训练强制要求每个样本包含明确的prompt上下文、一个优选回复(chosen)和一个劣选回复(rejected),二者必须为独立对象而非字符串。若conversations中最后一个消息不是human类型,或chosen/rejected字段缺失from字段,则LLaMA-Factory等训练框架将直接拒绝解析。

1、检查每个样本的conversations字段,确保最后一项的from值为"human";

2、验证chosen与rejected字段是否为字典对象,且均包含"from": "gpt"和"value"两个键;

3、删除所有conversations中from为"gpt"的末尾消息,仅保留以human结尾的单轮提问上下文;

4、将原conversations中倒数第二条gpt回复移出,作为rejected.value,将人工标注的优质回复填入chosen.value。

二、重写JSONL文件以适配DPO训练器

LLaMA-Factory等主流训练框架不接受原始ShareGPT JSON数组,必须转换为每行一个合法DPO样本的JSONL格式,并确保字段名与配置文件严格一致。任意字段名拼写错误(如"messages"误写为"message")都会导致列映射失败。

1、用Python逐行读取原始ShareGPT JSON文件;

2、对每一行数据提取conversations列表,截取至最后一个human消息为止;

3、新建字典,显式设置"conversations"键对应截断后的列表,"chosen"和"rejected"键分别赋值为带from/value结构的字典;

4、将新字典以json.dumps()写入新文件,每行一个样本,保存为UTF-8无BOM编码。

三、配置dataset_info.json启用ranking模式

即使数据内容正确,若未在dataset_info.json中声明ranking=true及字段映射关系,训练器仍将按SFT模式解析,忽略chosen/rejected字段。该配置是触发DPO专用数据加载路径的开关。

1、在dataset_info.json中新增数据集条目,名称需与脚本中--dataset参数完全一致;

协和·太初
协和·太初

协和·太初是一款面向罕见病辅助诊疗的医学 AI 大模型。

下载

2、设置"formatting": "sharegpt";

3、显式添加"ranking": true字段;

4、在columns对象中精确指定:"messages": "conversations"、"chosen": "chosen"、"rejected": "rejected"。

四、验证数据可被tokenizer正确分词

DPO训练要求chosen与rejected的token序列长度必须严格对齐,否则在计算对比损失时会因shape mismatch报错。若原始文本含大量不可见控制字符或非标准空格,会导致分词后长度突变,进而中断训练。

1、加载HuggingFace tokenizer,对任一样本的chosen.value和rejected.value分别调用encode();

2、比对二者返回的input_ids长度,差异超过3个token即需清洗;

3、使用正则表达式r'[\u200b-\u200f\u202a-\u202f\u2066-\u2069]'清除零宽字符;

4、将连续空白符(\s+)统一替换为单个空格,并strip首尾空白。

五、启动训练前执行schema校验脚本

手动检查百条样本易遗漏边界情况。应运行轻量级校验脚本,自动扫描全部样本并报告缺失字段、类型错误及长度异常,避免训练启动后因单条脏数据崩溃。

1、编写Python脚本,导入jsonlines库逐行读取JSONL文件;

2、对每一行执行isinstance(line, dict) and "conversations" in line and "chosen" in line and "rejected" in line;

3、对chosen/rejected分别校验isinstance(x, dict) and "from" in x and "value" in x and x["from"] == "gpt";

4、输出所有违反规则的行号及错误类型,例如:"line 87: chosen.value is None"。

相关专题

更多
剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

2026.10.14

0

13

二狗PPT大纲编辑实操指南
二狗PPT大纲编辑实操指南

本专题聚焦二狗PPT结构化大纲的生成和修改,讲解标题、正文、目录、页数与页面顺序的调整方法,提升汇报逻辑和内容完整性。

2026.10.14

0

15

二狗PPT文档转PPT全教程
二狗PPT文档转PPT全教程

本专题讲解二狗PPT解析Word、PDF、Excel和PPT资料的方法,涵盖文件上传、内容提取、大纲整理、异常处理与转换后校对。

2026.10.14

0

13

讯飞绘文全功能使用教程
讯飞绘文全功能使用教程

本专题系统整理讯飞绘文官网入口、注册登录、工作台及内容创作流程,帮助用户熟悉常用功能,快速完成首篇图文内容。

2026.10.14

0

14

讯飞绘文AI写作与文案生成合集
讯飞绘文AI写作与文案生成合集

本专题聚焦讯飞绘文AI写作、提纲生成、文章改写和文案润色,覆盖从主题输入到成稿优化的关键操作与实用技巧。

2026.10.14

0

14

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

100

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习