You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Hugging Face Optimum GraphCore模型训练自定义MNLI数据集时遭遇pyarrow.lib.ArrowInvalid错误的技术咨询

解决pyarrow.lib.ArrowInvalid: Failed to parse string: ' ' as a scalar of type int64错误

这个错误我之前帮朋友排查过,本质是pyarrow读取CSV时,试图把一个空格字符串转换成整数类型(int64)失败了。结合你的MNLI任务场景,大概率是数据集的label列存在异常值,或者自动类型识别出错导致的,咱们一步步来解决:

1. 优先排查label列的异常值

这是最常见的原因:你的train.csv/validation.csv/test.csv里,label列可能存在空单元格、空格字符串(比如单元格填了' '而非空值),或者其他非整数内容。

你可以用Python快速定位问题:

import pandas as pd

# 读取训练集
train_df = pd.read_csv("train.csv")
# 查看label列当前的数据类型
print("Label列当前类型:", train_df['label'].dtype)
# 筛选出label列无法转成整数的异常行
invalid_rows = train_df[~train_df['label'].astype(str).str.strip().isdigit()]
print("异常行数:", len(invalid_rows))
print("异常内容示例:\n", invalid_rows[['premise', 'hypothesis', 'label']])

找到异常行后,要么把label修正为MNLI对应的合法整数(0=entailment、1=neutral、2=contradiction),要么直接删除这些无效行,再重新保存CSV。

2. 强制指定数据集列类型

如果确认所有label都是合法整数,但pyarrow还是识别错了类型,可以手动指定列类型来规避自动识别的偏差。你需要修改run_glue.py脚本里的数据集加载逻辑:

找到脚本中使用load_dataset加载CSV的部分,修改为:

from datasets import load_dataset

# 强制指定列类型:premise和hypothesis为字符串,label为整数
dataset = load_dataset(
    "csv",
    data_files={
        "train": "train.csv",
        "validation": "validation.csv",
        "test": "test.csv"
    },
    dtype={
        "premise": "string",
        "hypothesis": "string",
        "label": "int64"
    }
)

这样脚本就会严格按照你指定的类型解析数据集,避免类型不匹配的问题。

3. 检查CSV的基础格式

有时候CSV的分隔符、引号格式也会导致解析错误:

  • 确认CSV用的是逗号分隔,如果是制表符或其他分隔符,需要在load_dataset里加上delimiter='\t'(对应制表符)参数,或者运行脚本时添加--delimiter参数(如果脚本支持的话)。
  • 检查单元格里的特殊字符(比如逗号)是否被双引号包裹,避免列被错误拆分。

4. 预转换数据集格式

如果上面的方法都觉得麻烦,你可以先用Pandas把数据集转换成完全正确的格式再保存:

import pandas as pd

# 批量处理所有数据集文件
for file in ["train.csv", "validation.csv", "test.csv"]:
    df = pd.read_csv(file)
    # 强制转换文本列类型为字符串
    df['premise'] = df['premise'].astype(str)
    df['hypothesis'] = df['hypothesis'].astype(str)
    # 先清洗label列的空格,再转成整数
    df['label'] = df['label'].astype(str).str.strip().astype(int)
    # 保存修复后的文件
    df.to_csv(f"{file.split('.')[0]}_fixed.csv", index=False)

然后用生成的train_fixed.csv等文件替换原文件,重新运行训练命令即可。


内容的提问来源于stack exchange,提问作者Siman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:28:14