如何下载Hugging Face数据查看器可见但无法获取的数据集?
EleutherAI/pile数据集获取与拆分说明
问题描述
能在Hugging Face数据查看器中看到EleutherAI/pile数据集,但修改下载URL或运行脚本均无法获取数据,需明确该数据集的拆分情况及正确获取方式。
数据集拆分详情
EleutherAI/pile的拆分分为两类:
- 全量数据集:标识为
all,整合所有22个子数据集的完整数据 - 子数据集拆分:每个子数据集独立提供,包含
train、validation、test三个标准划分,常见子数据集包括:- hacker_news:黑客社区内容
- nih_exporter:NIH公开科研数据集
- pubmed:PubMed学术文献库
- uspto:美国专利商标局数据
- enron_emails:安然公司公开邮件集
- wikitext:维基百科文本子集
正确获取数据的方法
代码问题修正
你的代码中直接使用Hugging Face数据查看器的URL作为数据源是错误的,该URL仅用于网页预览,无法作为下载链接。正确方式是通过datasets.load_dataset直接调用数据集官方标识,无需手动指定第三方URL。
修正后的完整代码
# 导入依赖库 from datasets import load_dataset import torch from transformers import GPT2Tokenizer, GPT2LMHeadModel import datetime import wandb # 基础配置 mode = 'online' num_batches = 600 streaming = False batch_size = 512 today = datetime.datetime.now().strftime('%Y-m%m-d%d-t%Hh_%Mm_%Ss') # 选择加载目标:全量数据集或单个子数据集 # 加载全量数据集 path, name = 'EleutherAI/pile', 'all' # 加载单个子数据集(示例:hacker_news) # path, name = 'EleutherAI/pile', 'hacker_news' run_name = f'{path} div_coeff_{num_batches=} ({today=} {name=})' print(f'{run_name=}') # 初始化wandb(按需使用) debug = mode == 'dryrun' run = wandb.init(mode=mode, project="beyond-scale", name=run_name, save_code=True) wandb.config.update({ "num_batches": num_batches, "path": path, "name": name, "today": today, "batch_size": batch_size, "debug": debug }) print(f'{debug=}') print(f'{wandb.config=}') # 加载分词器与模型 tokenizer = GPT2Tokenizer.from_pretrained("gpt2") if tokenizer.pad_token_id is None: tokenizer.pad_token = tokenizer.eos_token probe_network = GPT2LMHeadModel.from_pretrained("gpt2") device = torch.device(f"cuda:{0}" if torch.cuda.is_available() else "cpu") probe_network = probe_network.to(device) # 加载数据集 def my_load_dataset(): # 直接通过官方标识加载,自动处理数据源 return load_dataset(path, name, streaming=streaming, split="train").with_format("torch") dataset = my_load_dataset() print(f'{dataset=}') batch = dataset.take(batch_size) print(f'{next(iter(batch))=}') column_names = next(iter(dataset)).keys() print(f'{column_names=}')
核心注意事项
- 无需自定义URL:
load_dataset会自动关联EleutherAI/pile的官方数据源,无需手动设置data_files参数。 - 流式加载优化:若数据集超出本地存储能力,可设置
streaming=True启用流式加载,逐批获取数据。 - 子数据集加载:只需将
name参数替换为对应子数据集名称,即可单独加载目标子数据集。
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

