【原创】尽量使用标准 json 格式替换 jsonl 以避免 datasets 包引入数据时处理报错

文章目录

  • 问题发现
  • 问题解决
  • 问题回看

问题发现

使用 LLaMA-Factory 以 ORPO 方式训练模型,数据集习惯性按照 jsonl 的格式组织。
突然在读取数据阶段报错,且是很少见的 TypeError。对照官方模板没发现问题出在哪,又从内容层面做了初步排除,数据处理代码应该是正确的。一时陷入苦战,不得不深入到内部代码 debug。报错信息精简如下:

File "/home/xxx/miniforge3/envs/lf/lib/python3.11/site-packages/datasets/builder.py", line 2011, in _prepare_split_singlewriter.write_table(table)...File "/home/xxx/miniforge3/envs/lf/lib/python3.11/site-packages/datasets/table.py", line 1957, in array_castraise TypeError(f"Couldn't cast array of type\n{array.type}\nto\n{pa_type}")
TypeError: Couldn't cast array of type
list<item: string>
to
nullThe above exception was the direct cause of the following exception:
...for job_id, done, content in self._prepare_split_single(File "/home/xxx/miniforge3/envs/lf/lib/python3.11/site-packages/datasets/builder.py", line 2038, in _prepare_split_singleraise DatasetGenerationError("An error occurred while generating the dataset") from e
datasets.exceptions.DatasetGenerationError: An error occurred while generating the dataset

经排查核心报错代码的位置是

...arrow_writer.py", line 585, in write_table
pa_table = table_cast(pa_table, self._schema)

继续单步调试和检查关键变量,发现数据 chunk 的 schema 不正常:

self.schema
prompt: string
query: string
answer: list<item: string>child 0, item: string
history: list<item: null>child 0, item: null

我使用的是一组多轮对话数据,history 列根据对话轮数,应为空 list 或嵌套的 list of list of str,
对比正常处理的 chunk,schema 应为

self.schema
prompt: string
query: string
answer: list<item: string>child 0, item: string
history: list<item: string>child 0, item: string

又查看了上下文代码,schema 是由 chunk 内的数据推断而来,于是猜测可能是 arrow 库按照表格格式处理数据时没有覆盖某些特殊情况导致 schema 前后不一致报错。去搜 datasets 的仓库,果然发现有人遇到过同样问题:
https://github.com/huggingface/datasets/issues/6845

问题解决

本想看看能否做个 contributor 修复这个错误,但 debug 至此发现错误层数太深且精力能力有限,可能只有等官方自行修复了。
既然知道了错误原因,猜测是否是直接按表格形式读取产生的,一拍脑袋把数据改写成标准 json 内 list 的形式,即 lines of json -> json list,验证可以正常运行了。

问题回看

如果以上猜想正确,即在不指定 schema 而任由 writer 根据 chunk 数据自行推断时,有一定概率会因为 chunk 内数据类型一致但 chunk 外格式/类型不一致导致推断错误,进而归一化/cast 过程中报错。仅依靠 chunk 内推断大概是假定数据量巨大时仅采样足以处理格式正确的数据集,但显然如果数据量较大+分布有偏可能触发此类错误。
在相关函数入口指定 features 参数是一种解决办法,但简单看了下代码并不是那么直观,可能要写成一组配置并且在读入后进行标准类型映射。
作者没想到什么精妙的办法能快速解决这个问题,有没有神通广大的读者可以给些建议呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全护网行动:形式主义还是真有价值?

中国每年都投入大量人力物力进行护网行动&#xff0c;如网络攻防演练、黑客技术研究等。有人质疑这些行动是否只是形式主义&#xff0c;缺乏真正的价值。然而&#xff0c;本文将深入解释这些护网行动的原因&#xff0c;并阐明其对信息安全发展的真实价值。 网络信息安全问题的…

自养号测评实战指南:Shopee、Lazada销量翻倍不再是难题

对于速卖通、亚马逊、eBay、敦煌网、SHEIN、Lazada、虾皮等平台的卖家而言&#xff0c;提高店铺流量并转化为实际销量是共同追求的目标。在这个过程中&#xff0c;自养号进行产品测评显得尤为重要。通过精心策划和执行的测评活动&#xff0c;卖家不仅能够显著增加产品的销量&am…

Google Chrome 设备工具栏原理

1.不同预览模式 2.计算出缩放比 3.固定滚动偏移 关键代码&#xff1a; overview&#xff1a; ratioW getChildRect().width / getParentRect().width ratioH getChildRect().height / getParentRect().height maxRatio max(ratioW, ratioH) if(maxRatio < 1) return 1 …

生产车间PDA应用的规划

作为IT经理,在规划生产车间的PDA应用时,需要考虑的IT基础设施方面的前提条件。以下是一些关键的考虑因素,包括要点、实例和参考数据: 01、Infra 的前提条件 1. **网络基础设施**: - **无线覆盖**:确保车间有全面的无线信号覆盖,比如使用Wi-Fi 6技术,提供至少1Gbps的…

GPRS与4G网络的技术差异与应用选择

在移动通信的发展历程中&#xff0c;GPRS&#xff08;General Packet Radio Service&#xff09;和4G&#xff08;Fourth-Generation&#xff09;技术都扮演着举足轻重的角色。虽然两者都旨在提供无线数据传输服务&#xff0c;但在数据传输速率、延迟和覆盖范围等方面&#xff…

计算机网络实验3:路由器安全防控配置

实验目的和要求 理解标准IP访问控制列表的原理及功能理解CHAP、DHCP配置原理了解家用式无线路由配置方法实验项目内容 标准IP访问控制列表配置 CHAP验证路由器上配置DHCP网络地址转换NAT配置无线路由实现实验环境 1. 硬件&#xff1a;PC机&#xff1b; 2. 软件&#xff1a;W…

spark自定义函数实现

场景:由于系统函数无法满足实际开发需求,需要通过自定义函数来实现 示例: package sparkimport org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction} import org.apache.spark.sql.…

Helm安装集群整理

这里写目录标题 1.添加nfs存储2.安装redis集群3.安装neo4j集群4.安装clickhouse集群5. 安装zookeeper集群6. 安装es集群7. 安装openebs8.安装radondb 1.添加nfs存储 项目地址&#xff1a;https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner helm install nfs…

【35分钟掌握金融风控策略29】贷中模型调额调价策略

目录 贷中客户风险管理和客户运营体系 用信审批策略 用信审批策略决策流与策略类型 贷中预警策略 对存量客户进行风险评级 基于客户的风险评级为客户匹配相应的风险缓释措施和建议 调额策略 基于定额策略的调额策略 基于客户在贷中的风险表现的调额策略 调价策略 存…

【计算机毕业设计】springboot城市公交运营管理系统

二十一世纪我们的社会进入了信息时代&#xff0c; 信息管理系统的建立&#xff0c;大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多&#xff0c;而在线管理系统刚好能满足这些需求&#xff0c;在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

P6023 走路

走路 题目背景 小 W 下载了一款运动软件。 题目描述 小 W 准备在接下来的 m m m 天中锻炼&#xff0c;由于他不能走得太多以至于累死&#xff08;怎么可能呢&#xff09;&#xff0c;所以他这 m m m 天最多一共只能走 n n n 步。 这个运动软件为了激励小 W 走路&#xf…

【校园生活小程序_超详细部署】

校园生活小程序 1 完整小程序源码2 运行环境3 初次运行3.1 启动后端程序3.1.1 导入项目&#xff0c;找到项目的pom.xml文件&#xff0c;点击ok进行打开。3.1.2 创建数据库并插入内容 3.1.3 配置项目结构信息3.1.4 配置Tomcat服务器3.1.5 正式启动后端项目3.1.6出现BUG3.1.7 解决…

Android实践:查看Activity信息

问题&#xff1a;本地Android SDK的monitor无法正常运行&#xff0c;看不了进程相关信息&#xff0c;确认当前显示Activity十分不便 解决办法&#xff1a;使用adb shell指令可以快速查看 命令&#xff1a; adb shell dumpsys activity activities 这个命令用于获取Android设…

vscode-调试js文件

vscode 调试时报错&#xff1a; "launch.json" 找不到 Node.js 二进制文件“node”: 路径不存在。请确保 Node.js 已安装且位于你的路径中&#xff0c;或者在 launch.json 中设置 "runtimeExecutable" 在launch.json中加入即可 "runtimeExecutable&q…

Rust 标准库的结构及其模块路径

在 Rust 中&#xff0c;标准库提供了一组核心功能&#xff0c;以帮助开发者执行常见的编程任务。当使用这些功能时&#xff0c;我们需要通过特定的模块路径来引用它们。下面&#xff0c;我们将详细介绍 Rust 标准库的结构&#xff0c;并提供相应的 use 路径。 Rust 标准库模块…

Linux的常用指令 和 基础知识穿插巩固(巩固知识必看)

目录 前言 ls ls 扩展知识 ls -l ls -a ls -al cd cd 目录名 cd .. cd ~ cd - pwd 扩展知识 路径 / cp [选项] “源文件名” “目标文件名” mv [选项] “源文件名” “目标文件名” rm 作用 用法 ./"可执行程序名" mkdir rmdir touch m…

【YashanDB知识库】ycm纳管主机安装YCM-AGENT时报错“任务提交失败,无法连接主机”

问题现象 执行安装 ycm-agent 命令纳管主机时报错 问题的风险及影响 会导致 ycm-agent 纳管不成功&#xff0c;YCM 无法监控主机和数据库 问题影响的版本 yashandb-cloud-manager-23.2.1.100-linux-aarch64.tar 问题发生原因 因为 10.149.223.121 对 ycm 的主机没有开放端…

AI 情感聊天机器人之旅 —— 多轮对话存在的问题与数据积累

在 QA、逻辑推理等领域&#xff0c;多跳问答比单跳问答难得多。在聊天机器人场景中亦是如此&#xff0c;模型需要结合历史对话和用户当前的输入内容生成合适的响应。然而&#xff0c;现有的指令数据大都是单轮或者两轮的对话&#xff08;截止这篇文章落笔的日期 2023-09-10&…

瑞芯微RK3588驱动设计之DVP并口摄像头2

dts配置看瑞芯微RK3588驱动配置之DVP并口摄像头1_rockchip 调试dvp设备 直接显示摄像头数据-CSDN博客 这里看看驱动的具体实现&#xff0c;以gc2145为例。 gc2145的驱动源码如下&#xff1a; // SPDX-License-Identifier: GPL-2.0 /** GC2145 CMOS Image Sensor driver*** C…

高斯分布应用;高斯分布和高斯核有什么;正态分布的具体应用举例说明

目录 高斯分布应用 高斯分布和高斯核有什么 正态分布的具体应用举例说明 高斯分布应用