访问Hugging Face上的BigCode数据集 | AI生成和翻译

Home 2026.06

问题: 在哪里可以找到 https://huggingface.co/bigcode 背后的实际文本/代码数据?

答案:

该 URL 只是组织主页。实际数据位于该组织的 数据集(Datasets) 标签页下:https://huggingface.co/bigcode — 点击“Datasets”,或直接访问 https://huggingface.co/datasets?other=bigcode。主要语料库:

在读取数据之前有两个注意事项:

1. 它们是受限的(gated)。 你需要一个 HF 账号,在数据集页面上点击“同意并访问(Agree and access)”,然后在本地进行身份验证:

pip install -U huggingface_hub datasets
hf auth login   # 粘贴来自 https://huggingface.co/settings/tokens 的 token

2. The Stack v2 不包含文件内容。 它只提供元数据 + Software Heritage blob ID;实际文本保存在 SWH 的 S3 存储桶中,需要单独下载(并需要 AWS 凭证):

import os, boto3, smart_open
from datasets import load_dataset

session = boto3.Session(
    aws_access_key_id=os.environ["AWS_ACCESS_KEY_ID"],
    aws_secret_access_key=os.environ["AWS_SECRET_ACCESS_KEY"])
s3 = session.client("s3")

def download_blob(blob_id, encoding):
    url = f"s3://softwareheritage/content/{blob_id}"
    with smart_open.open(url, "rb", compression=".gz",
                         transport_params={"client": s3}) as f:
        return f.read().decode(encoding)

ds = load_dataset("bigcode/the-stack-v2", "Python",
                  split="train", streaming=True)
for row in ds:
    print(download_blob(row["blob_id"], row["src_encoding"])[:500])
    break

对于你的用例(在 4070 或 MI300X 上进行 nanoGPT 规模的训练),可以跳过这种复杂性 — The Stack v1 和 starcoderdata 直接包含文本内容,因此流式加载就可以正常工作:

from datasets import load_dataset

# 流式加载,不要下载 800GB
ds = load_dataset("bigcode/starcoderdata", data_dir="python",
                  split="train", streaming=True)
row = next(iter(ds))
print(row["content"][:1000])   # 实际的源代码文本

或者使用 CLI 将单个语言子集下载到磁盘:

hf download bigcode/the-stack-dedup \
  --repo-type dataset \
  --include "data/python/*" \
  --local-dir ./stack-python

文件是 parquet 格式,下载后也可以直接用 pyarrow/polars 读取。对于分词和训练流程,nanoGPT 中 data/openwebtext/prepare.py 的模式可以直接移植:流式加载 → tokenizer.encode → 追加到内存映射的 .bin 文件。

规模参考:仅 starcoderdata 的 python 子集就有约 60B tokens — 远超 760M 参数运行所需(Chinchilla 最优约为 15B tokens),因此在你的 916GB 工作站上流式加载一个切片是正确的做法,在 Air 上更是如此。

参考资料:


Back Donate