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

求助:Hugging Face用split参数仍无法仅下载部分数据集

解决MLCommons/peoples_speech数据集部分下载的问题

你遇到的问题是因为MLCommons/peoples_speech数据集采用分片存储,直接使用split="train[:10%]"会先下载所有分片文件再执行切片操作,所以无法实现仅下载部分数据的需求。以下是两种可行的解决方案:

方案1:流式加载并截取样本

通过streaming=True参数启用流式加载,此时数据集不会一次性下载到本地,而是按需获取样本,再通过take()方法截取指定比例的样本:

from datasets import load_dataset

# 流式加载训练集,截取前10%样本
train_stream = load_dataset("MLCommons/peoples_speech", "clean", split="train", streaming=True)
# 获取总样本数并计算10%的数量
train_sample_count = int(len(train_stream) * 0.1)
train = train_stream.take(train_sample_count)

# 测试集同理操作
test_stream = load_dataset("MLCommons/peoples_speech", "clean", split="test", streaming=True)
test_sample_count = int(len(test_stream) * 0.1)
test = test_stream.take(test_sample_count)

如果需要将流式数据集转换为可离线使用的普通数据集,可以再执行:

from datasets import Dataset

train = Dataset.from_list(list(train))
test = Dataset.from_list(list(test))

方案2:手动指定要下载的分片文件

先查看数据集的分片文件列表,然后选择部分分片下载,避免下载全部文件:

  1. 先获取数据集的分片信息:
from datasets import get_dataset_infos

# 获取数据集的详细信息
dataset_info = get_dataset_infos("MLCommons/peoples_speech", "clean")
# 打印训练集的所有分片文件路径
print(dataset_info["train"].splits["train"].data_files)
  1. 根据输出的文件列表,选择部分分片加载(比如前2个分片):
train = load_dataset(
    "MLCommons/peoples_speech",
    "clean",
    split="train",
    data_files=dataset_info["train"].splits["train"].data_files[:2]
)

test = load_dataset(
    "MLCommons/peoples_speech",
    "clean",
    split="test",
    data_files=dataset_info["train"].splits["test"].data_files[:2]
)

这种方式可以精准控制下载的文件数量,适合需要固定大小数据的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:51:35