问题描述

在huggingface上下载很大的数据集,用多个parquet文件的格式下载到本地。使用load_dataset加载的时候,进度条加载到一半会报错DatasetGenerationError: An error occurred while generating the dataset;如果加载为IterableDataset,则在读取到对应位置时报错OSError: Corrupt snappy compressed data.

解决思路

一开始以为是单条数据错误,想把这条数据用try catch来handle住,失败。后来意识到,load_dataset加载的时候,进度条的数据量是跳变的,说明加载机制是读取每个parquet文件,读取完成后把这个文件的条目数加在总数上。能卡在一个具体的点上,说明出问题的是某一个parquet文件。于是检查每个parquet文件的校验码,发现某个文件校验失败。重新下载后,数据集可以正常加载,无论是否streaming.

反思

由于校验流程比较麻烦耗时,平时下载数据集一般只简单看一下文件大小是否正确,如果每个文件的数据大小都正确,就直接开始做。这次的教训说明,当文件多了之后,校验还是很重要的。以后应该写一个自动校验的程序,来确保下载的数据来源正确。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐