能否从Hugging Face仅加载或下载数据集的部分分区?
关于Common Voice数据集部分加载的问题解答
是的,直接使用split="train[:20%]"参数时,Hugging Face Datasets默认会先下载完整的训练集到本地,再根据切片规则筛选出20%的样本,这就是你遇到磁盘空间不足的原因。
要实现仅加载并存储指定比例的数据集,可以用以下两种实用方法:
流式加载(推荐)
给load_dataset添加streaming=True参数,此时数据集会以流式方式获取,只下载你需要的那部分样本,不会把完整数据集存到本地。示例代码:from datasets import load_dataset # 流式加载训练集的前20% ds_stream = load_dataset( "mozilla-foundation/common_voice_16_0", "en", split="train[:20%]", streaming=True ) # 如果需要转为可离线使用的数据集,先打乱(可选)再取对应样本,最后保存到本地 ds = ds_stream.shuffle(seed=42) # 取前20%的样本(流式下len(ds_stream)会返回数据集总样本数的估算值) ds = ds.take(int(len(ds_stream) * 0.2)) # 转为列表触发实际下载,再保存到本地 ds = list(ds) from datasets import Dataset Dataset.from_list(ds).save_to_disk("./common_voice_en_train_20%")手动指定分片下载
Common Voice数据集的训练集被拆分成了多个分片,你可以在数据集详情页查看分片列表,通过data_files参数只下载特定分片,再合并后筛选比例。不过这种方法需要手动计算分片对应的样本量,操作相对繁琐,适合对数据集结构熟悉的场景。
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

