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

如何下载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=}')

核心注意事项

  1. 无需自定义URL:load_dataset会自动关联EleutherAI/pile的官方数据源,无需手动设置data_files参数。
  2. 流式加载优化:若数据集超出本地存储能力,可设置streaming=True启用流式加载,逐批获取数据。
  3. 子数据集加载:只需将name参数替换为对应子数据集名称,即可单独加载目标子数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:07:22