使用Hugging Face load_dataset加载adversarial_qa时遇NonMatchingSplitsSizesError
解决adversarial_qa数据集加载的NonMatchingSplitsSizesError问题
问题分析
从报错信息可知,数据集元数据记录的样本量(预期train/validation/test为30000/3000/3000)与实际下载的parquet文件样本量(实际为60000/6000/6000)不匹配,大概率是数据集维护方更新了数据但未同步更新元数据,或是本地缓存的旧元数据未刷新导致冲突。
有效解决方案
1. 彻底清理本地缓存(推荐)
旧缓存的元数据是冲突根源,清理后重新下载即可解决:
- 先查看datasets缓存目录:
from datasets import get_cache_dir print(get_cache_dir()) - 删除adversarial_qa相关缓存文件夹,默认路径下执行:
rm -rf ~/.cache/huggingface/datasets/adversarial_qa - 重新运行加载代码:
dataset = load_dataset('adversarial_qa', 'adversarialQA', download_mode="force_redownload")
2. 跳过验证临时加载(应急用)
新版本datasets库用verification_mode="no_checks"替代了旧的ignore_verifications参数,可直接跳过split大小验证:
dataset = load_dataset('adversarial_qa', 'adversarialQA', verification_mode="no_checks")
3. 直接加载最新parquet文件(无需手动下载)
不依赖数据集元数据,直接指定HF上的最新parquet文件路径加载:
dataset = load_dataset( 'parquet', data_files={ 'train': 'https://huggingface.co/datasets/adversarial_qa/resolve/main/adversarialQA/train.parquet', 'validation': 'https://huggingface.co/datasets/adversarial_qa/resolve/main/adversarialQA/validation.parquet', 'test': 'https://huggingface.co/datasets/adversarial_qa/resolve/main/adversarialQA/test.parquet' } )
4. 手动修改本地元数据(进阶)
若不想删除缓存,可手动更新缓存中的元数据文件:
- 找到缓存目录下的
adversarial_qa/adversarialQA/dataset_info.json - 修改
splits字段中的num_examples和num_bytes为报错中显示的实际数值(比如train的num_examples改为60000,num_bytes改为55764872) - 保存后重新加载数据集即可
内容的提问来源于stack exchange,提问作者Penguin
相关产品推荐
相关产品推荐

