当前位置: 首页 > news >正文

将用于 Swift 微调模型的 JSON Lines(JSONL)格式数据集,转换为适用于 Qwen VL 模型微调的 JSON 格式

将用于 Swift 微调模型的 JSON Lines(JSONL)格式数据集,转换为适用于 Qwen VL 模型微调的 JSON 格式

flyfish

Qwen VL 微调代码
https://github.com/QwenLM/Qwen3-VL

SWIFT微调代码
https://github.com/modelscope/ms-swift

SWIFT微调使用的格式

(Scalable lightWeight Infrastructure for Fine-Tuning)

{"query": "<image>描述图像", "response": "图中有狗", "images": ["images/1.jpg"]}
{"query": "<image>描述图像", "response": "图中有猫", "images": ["images/2.jpg"]}

微调 Qwen3-VL 使用的格式

[{"image": "images/1.jpg","conversations": [{"from": "human","value": "<image>描述图像"},{"from": "gpt","value": "图中有狗"}]},{"image": "images/2.jpg","conversations": [{"from": "human","value": "<image>描述图像"},{"from": "gpt","value": "图中有猫"}]}
]

转换代码

import json
import osdef convert_swift_to_qwen(jsonl_path, output_json_path):"""将Swift微调的JSONL数据集转换为QwenVL格式的JSON文件:param jsonl_path: 输入train.jsonl的路径:param output_json_path: 输出train_qwen3.json的路径"""# 1. 检查输入文件是否存在if not os.path.exists(jsonl_path):print(f"错误:输入文件 {jsonl_path} 不存在,请检查路径!")return# 2. 初始化目标格式的数据集列表qwen_dataset = []# 3. 逐行读取JSONL并转换格式with open(jsonl_path, "r", encoding="utf-8") as jsonl_file:line_num = 0  # 记录行号,方便定位错误for line in jsonl_file:line_num += 1# 跳过空行if not line.strip():continuetry:# 解析当前行的JSON数据(原Swift格式)swift_data = json.loads(line.strip())# 检查原数据是否包含必要字段required_fields = ["query", "response", "images"]if not all(field in swift_data for field in required_fields):print(f"警告:第{line_num}行缺少必要字段(query/response/images),已跳过该行")continueif not swift_data["images"]:  # 检查images数组是否为空print(f"警告:第{line_num}行images数组为空,已跳过该行")continue# 4. 格式映射(核心步骤)qwen_sample = {"image": swift_data["images"][0],  # 取第一张图(原数据为数组)"conversations": [{"from": "human","value": swift_data["query"].strip()  # 人类提问(含<image>标签)},{"from": "gpt","value": swift_data["response"].strip().strip('"')  # 模型回答,去除多余引号}]}qwen_dataset.append(qwen_sample)except json.JSONDecodeError:print(f"警告:第{line_num}行JSON格式错误,已跳过该行")except Exception as e:print(f"警告:第{line_num}行处理失败,错误信息:{str(e)},已跳过该行")# 5. 检查是否有有效数据if not qwen_dataset:print("错误:没有解析到有效数据,无法生成输出文件!")return# 6. 将转换后的数据写入目标JSON文件(带缩进,方便查看)with open(output_json_path, "w", encoding="utf-8") as output_file:json.dump(qwen_dataset, output_file, ensure_ascii=False, indent=2)print(f"转换完成!共处理 {len(qwen_dataset)} 条有效数据,已保存到 {output_json_path}")# ------------------- 执行转换 -------------------
# 请根据文件实际路径修改这两个参数!
INPUT_JSONL_PATH = "train.jsonl"       # 输入文件路径
OUTPUT_JSON_PATH = "train_qwen3.json"  # 输出文件路径convert_swift_to_qwen(INPUT_JSONL_PATH, OUTPUT_JSON_PATH)
http://www.dtcms.com/a/520991.html

相关文章:

  • Jmeter定时器详解:作用范围与使用场景
  • 秦皇岛网站制作代理商网站建设价位高有低
  • 用动态规划思想解决回文串问题
  • 电子商务网站开发参考文献成都市网站建设费用及企业
  • 【ROS2】驱动开发入门
  • LLamaIndex传统的RAG
  • 大模型-自编码器Autoencoder
  • 专业建站是什么自己做的网站外网访问
  • LeetCode:37. 解数独
  • 算法 | 单链表相交
  • 比较好的建站公司大恒建设集团有限公司网站
  • 一键lnmp搭建wordpress优化设计数学
  • Crew连接多个 MCP 服务器
  • 做母婴育儿类网站好做seo排名吗网站建设细节差异化
  • 中山互联网推广:AI时代的数字营销新逻辑
  • 博罗网站建设费用无锡设计网站找哪家
  • 个人做网站要备案吗公司发展规划怎么写
  • Navicat 完整清理脚本
  • Python及Ipython解释器
  • 昇腾NPU运行Llama模型全攻略:环境搭建、性能测试、问题解决一网打尽
  • 前端通用布局(左侧侧边栏+顶部导航栏+主内容区)
  • 在线做印章的网站如何做网站导航
  • 制作微信商城网站开发怎么做仿制网站
  • 鸿蒙openharmony操作系统LiteOS-A内核技术全解析:架构、性能与开发实践
  • 【MATLAB源码-第303期】基于matlab的蒲公英优化算法(DO)机器人栅格路径规划,输出做短路径图和适应度曲线.
  • KP2203LGA/KP2205LGA芯片功能描述,内置65k/100kHz开关频率振荡器
  • asp网站程序优点东莞黄江网站建设
  • 阿里巴巴网站威海哪里做?苏州高端模板建站
  • 网站开发步骤说明书温州市建筑业联合会
  • wdt接口优化