Qwen3-VL微调数据准备:ShareGPT格式数据集构建指南
Qwen3-VL微调数据准备ShareGPT格式数据集构建指南1. 前言微调的第一步从数据开始如果你正在尝试让Qwen3-VL这个强大的视觉语言模型学会你的专属任务比如识别公司内部特定的表格格式、理解产品设计图的标注规范或者分析医学影像中的特定特征那么你很快就会意识到一件事预训练模型虽然聪明但它不认识你的“方言”。这就像请一位精通多国语言的翻译但他从未接触过你们行业的专业术语。微调就是教模型说你的“方言”的过程。而教任何AI模型第一步永远是准备“教材”——也就是训练数据。在众多微调框架中LLaMA-Factory因其对多模态模型的友好支持而备受青睐。它默认采用一种名为ShareGPT的数据格式来组织图文对话数据。今天我就来和你详细聊聊如何从零开始为你的Qwen3-VL模型准备一份高质量的ShareGPT格式数据集。这是整个微调流程中最关键、也最容易出错的一步数据质量直接决定了模型最终的表现。2. 理解ShareGPT格式图文对话的“剧本”在开始动手之前我们得先搞清楚ShareGPT格式到底是什么。你可以把它想象成一个为多轮对话设计的“剧本”。这个剧本不仅记录了用户和AI助手之间说了什么还指明了对话中引用了哪些“道具”——也就是图片。2.1 核心数据结构一个标准的ShareGPT格式数据集通常是一个JSON文件里面包含一个列表列表中的每个元素就是一次独立的对话样本。每个样本的核心结构如下{ messages: [...], images: [...] }messages: 这是一个列表按时间顺序记录了对话的每一轮。每一轮都是一个字典包含role说话者和content说话内容。images: 这也是一个列表里面是字符串每个字符串是对话中引用到的图片文件的绝对路径。2.2 一个完整的例子光看定义可能有点抽象我们来看一个实际的例子。假设我们想教模型识别身份证上的姓名。对应的图片文件/home/user/data/id_card_zhangsan.jpgShareGPT格式数据样本{ messages: [ { role: user, content: image\n请识别这张身份证上的姓名。 }, { role: assistant, content: 张三 } ], images: [/home/user/data/id_card_zhangsan.jpg] }关键点解析image占位符在用户的content中image是一个特殊的标记它告诉模型“嘿注意了下面我要描述的内容和images列表里的某张图有关。”对于单张图片的简单情况模型默认将image与images列表中的第一张也是唯一一张图片关联。图片路径images列表里的路径必须是服务器或容器内可访问的绝对路径。在后续使用LLaMA-Factory训练时它会根据这个路径去加载图片。对话轮次messages列表严格按顺序排列user和assistant交替出现模拟真实的对话流程。3. 实战构建你的第一个数据集理论讲完了我们动手创建一个简单的数据集。假设我们的任务是让模型学习识别几种常见水果。3.1 第一步组织你的图片文件首先创建一个清晰的文件目录。混乱的文件管理是后期调试的噩梦。建议的目录结构/data/ └── my_qwen_dataset/ ├── images/ # 存放所有图片 │ ├── apple_001.jpg │ ├── banana_001.jpg │ └── orange_001.jpg └── dataset.json # ShareGPT格式的数据文件小贴士给图片起名时最好包含一些有意义的标识比如apple_001.jpg这样在后期检查和排查问题时一目了然。3.2 第二步编写JSON数据文件现在我们来编写dataset.json文件。根据上面的目录图片的绝对路径就是/data/my_qwen_dataset/images/xxx.jpg。[ { messages: [ { role: user, content: image\n图片中是什么水果 }, { role: assistant, content: 这是一个苹果。 } ], images: [/data/my_qwen_dataset/images/apple_001.jpg] }, { messages: [ { role: user, content: image\n请描述一下图中水果的颜色和形状。 }, { role: assistant, content: 这是一个黄色的香蕉形状是弯曲的长条状。 } ], images: [/data/my_qwen_dataset/images/banana_001.jpg] }, { messages: [ { role: user, content: image\n这种水果通常怎么吃 }, { role: assistant, content: 这是一个橙子通常需要剥皮后食用里面的果肉瓣。 } ], images: [/data/my_qwen_dataset/images/orange_001.jpg] } ]恭喜你一个最简单的单轮问答数据集就构建完成了。每个样本都是一问一答对应一张图片。4. 处理复杂场景多图与多轮对话现实任务往往更复杂。比如你可能需要模型比较两张图片的差异或者进行多轮追问。ShareGPT格式同样可以优雅地处理这些情况。4.1 多张图片的引用当对话涉及多张图片时你需要在images列表中按顺序列出所有图片并在content中使用image1,image2...来指代它们。例子比较两张猫的图片{ messages: [ { role: user, content: image1和image2中的两只猫哪一只看起来更胖一些 }, { role: assistant, content: image1中的橘猫看起来更胖一些。 } ], images: [ /data/my_qwen_dataset/images/fat_cat.jpg, /data/my_qwen_dataset/images/thin_cat.jpg ] }这里image1对应images列表中的第一张图胖猫image2对应第二张图瘦猫。4.2 多轮对话带历史多轮对话能训练模型理解上下文。我们只需要在messages列表中按顺序追加对话轮次即可。例子关于一张风景照的连续对话{ messages: [ { role: user, content: image\n这张照片是在哪里拍的 }, { role: assistant, content: 这张照片拍摄于一个雪山脚下的湖泊边。 }, { role: user, content: 湖水的颜色看起来是蓝色的这是什么原因 }, { role: assistant, content: 湖水呈现蓝色通常是因为对太阳光中蓝色波段的散射作用更强同时水比较深且清澈底部反射的杂质光较少。 } ], images: [/data/my_qwen_dataset/images/lake_mountain.jpg] }在这个例子中模型在回答第二个问题时需要结合图片内容湖泊和第一轮对话的历史“雪山脚下”来进行综合推理。5. 数据质量检查与常见陷阱数据构建好了先别急着开始训练。花点时间做检查能避免很多后续的麻烦。5.1 必须检查的清单路径有效性确保images字段里的每一个路径都是绝对路径并且在该路径下确实存在对应的图片文件。你可以写个简单的Python脚本批量检查。import json import os with open(dataset.json, r) as f: data json.load(f) for item in data: for img_path in item[images]: if not os.path.exists(img_path): print(f图片不存在: {img_path})标记匹配检查content中使用的image、image1等标记数量是否与images列表中的图片数量匹配。一个image2意味着images列表至少要有2张图。角色顺序确保messages列表中role是user和assistant严格交替的并且通常以user开始以assistant结束。内容格式助理assistant的回答应该是你期望模型学习的最终、正确的输出。避免在答案中包含不确定的、引导性的或者错误的描述。5.2 需要避免的陷阱陷阱一使用相对路径。在JSON中使用./images/cat.jpg这样的相对路径在LLaMA-Factory加载时很可能找不到文件因为它运行时的当前工作目录不确定。陷阱二图片格式问题。确保图片是常见的格式如.jpg, .png并且能够被PIL或OpenCV等库正常读取。损坏的图片文件会导致训练过程崩溃。陷阱三指令模糊不清。用户的指令content应该清晰明确。例如“描述这张图”比“说说这个”要好得多。清晰的指令有助于模型建立更准确的“问题-图片-答案”关联。陷阱四答案不一致。对于相似或相同的图片问题确保助理的答案在表述上保持一致。例如对于同一张苹果的图片不要一次回答“这是一个苹果”另一次回答“这是苹果”。6. 在LLaMA-Factory中注册并使用数据集数据文件准备好后我们需要告诉LLaMA-Factory这个数据集的存在和结构。6.1 注册数据集信息找到LLaMA-Factory项目下的data/dataset_info.json文件如果不存在就创建一个。在这个文件中为你新建的数据集添加一个配置项。假设你的数据集JSON文件名为my_fruit_dataset.json添加如下配置{ ... // 其他已有的数据集配置 my_fruit_dataset: { file_name: my_fruit_dataset.json, formatting: sharegpt, columns: { messages: messages, images: images }, tags: { role_tag: role, content_tag: content, user_tag: user, assistant_tag: assistant } } }参数解释my_fruit_dataset: 这是你给数据集起的名字后续在训练配置中会用到。file_name: 你的JSON数据文件名。formatting: sharegpt: 明确指定数据格式。columns: 告诉框架你的JSON里对话列表的键名是messages图片路径列表的键名是images。tags: 定义了messages列表中每个字典里角色和内容对应的键名。6.2 在训练配置中引用在你的训练YAML配置文件例如qwen3vl_lora_sft.yaml中指定使用这个数据集### dataset dataset: my_fruit_dataset # 这里填写你在dataset_info.json中定义的名称 template: qwen2_vl cutoff_len: 2048 ...完成这一步后当你启动LLaMA-Factory训练命令时它就会自动找到并加载你的my_fruit_dataset.json文件以及其中指定的图片开始微调流程。7. 总结高质量数据是微调成功的基石为Qwen3-VL准备ShareGPT格式的数据集本质上是在精心编写一本图文并茂的“教学手册”。这本手册的质量直接决定了模型“学生”能学到多少真本事。回顾一下核心要点结构是根本严格遵守{“messages”: [], “images”: []}的格式image标记和图片路径要准确对应。路径要绝对始终使用绝对路径这是避免“文件找不到”错误的最可靠方法。指令需清晰用户的问题要明确助理的答案要准确、一致这是模型学会正确响应的关键。检查不可少在投入训练前务必进行路径有效性、格式正确性等检查。当你按照这个指南一步步构建起自己的数据集时你就已经为Qwen3-VL的定制化之旅铺好了最关键的第一段路。接下来结合LLaMA-Factory的微调能力和Qwen3-VL-WEBUI的便捷部署你就能亲眼见证一个通用的视觉大模型如何一步步成长为精通你特定业务的“领域专家”。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻

SDXL 1.0实际作品展示:Anime预设生成的日系角色高清立绘

SDXL 1.0实际作品展示:Anime预设生成的日系角色高清立绘

SDXL 1.0实际作品展示:Anime预设生成的日系角色高清立绘 1. 引言:当SDXL 1.0遇上日系动漫 如果你对AI绘画的印象还停留在“能看,但不够惊艳”的阶段,那么今天这篇文章可能会改变你的看法。我们最近深度体验了一款基于Stable Dif…

2026/7/4 10:46:05 阅读更多 →
Cosmos-Reason1-7B生产环境:嵌入IDE(VS Code)实现Ctrl+Enter触发本地推理补全

Cosmos-Reason1-7B生产环境:嵌入IDE(VS Code)实现Ctrl+Enter触发本地推理补全

Cosmos-Reason1-7B生产环境:嵌入IDE(VS Code)实现CtrlEnter触发本地推理补全 想象一下,你正在VS Code里写代码,遇到一个复杂的逻辑问题卡住了。你不想离开编辑器,也不想把代码片段复制粘贴到某个网页工具里…

2026/7/4 10:15:23 阅读更多 →
南北阁Nanbeige 4.1-3B与Git集成:智能版本控制管理

南北阁Nanbeige 4.1-3B与Git集成:智能版本控制管理

南北阁Nanbeige 4.1-3B与Git集成:智能版本控制管理 让AI帮你写提交信息、分析代码变更、优化分支策略,告别繁琐的版本管理 作为一名开发者,你可能经常遇到这样的情况:写完一堆代码后,却要花好几分钟琢磨怎么写提交信息…

2026/7/4 18:30:47 阅读更多 →

最新新闻

基于YOLOv10的红外目标检测实战指南

基于YOLOv10的红外目标检测实战指南

1. 项目背景与核心价值去年夏天,我在参与一个山区救援项目时,亲眼目睹了传统无人机监控系统的局限性。在浓烟和夜间环境下,普通摄像头完全失效,而热成像设备虽然能捕捉到热源,却无法准确识别是人、动物还是车辆。正是这…

2026/7/5 12:51:58 阅读更多 →
AIAgent之工具调用:Function Call 与 Tool Use

AIAgent之工具调用:Function Call 与 Tool Use

工具调用:Function Call 与 Tool Use工具调用是 Agent 的「手」,让大模型能操作外部世界。这篇讲 Function Calling 的原理、工具怎么定义、模型怎么选工具、参数怎么传、常见的工具类型,以及开发中的最佳实践。大家好,我是黒漂技…

2026/7/5 12:49:55 阅读更多 →
ICM-42688-P与STM32F746ZG在工业自动化中的应用

ICM-42688-P与STM32F746ZG在工业自动化中的应用

1. ICM-42688-P与STM32F746ZG的黄金组合解析 在工业自动化和机器人控制领域,传感器与微控制器的协同设计直接决定了系统的性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS运动传感器,与STMicroelectronics的STM32F746ZG Cortex-M7微控制器形成的硬…

2026/7/5 12:47:54 阅读更多 →
混合整数二次规划在模型预测控制中的应用与求解器对比

混合整数二次规划在模型预测控制中的应用与求解器对比

1. 混合整数二次规划在模型预测控制中的核心作用 混合整数二次规划(MIQP)作为模型预测控制(MPC)中处理离散决策变量的关键技术,其核心价值在于平衡计算复杂度和控制性能。在车辆动力系统控制这类典型应用中,变速箱档位选择、发动机启停等离散决策变量与连…

2026/7/5 12:47:54 阅读更多 →
YOLO实战避坑指南:从环境配置到部署落地的完整工程化流程

YOLO实战避坑指南:从环境配置到部署落地的完整工程化流程

如果你在 2024 年或 2025 年才开始接触 YOLO,可能会觉得它已经是一个“古老”且“成熟”的技术栈,网上教程遍地都是,随便找个代码跑起来似乎并不难。但当你真正想把它用起来,无论是做一个毕业设计、一个内部工具,还是想…

2026/7/5 12:45:54 阅读更多 →
RT-DETR实战:从原理到部署,掌握实时目标检测新范式

RT-DETR实战:从原理到部署,掌握实时目标检测新范式

如果你正在为毕业设计、学术论文或者项目选型而纠结,面对目标检测领域两大主流技术路线——YOLO系列和DETR系列——不知道该如何选择,那么这篇文章就是为你准备的。这不仅仅是“YOLO vs DETR”的简单对比,更是一个关于技术范式、工程实践和未…

2026/7/5 12:45:54 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻