Skip to content

Hugging Face 数据集(datasets)下载慢的解决方法

训练/微调时 load_dataset() 卡住、或大数据集下载超时,和下模型一样,根源是走了海外的 huggingface.co。用镜像即可解决。

方法一:datasets 库 + HF_ENDPOINT

datasets 库同样认 HF_ENDPOINT:

bash
export HF_ENDPOINT=https://hf-mirror.com
python
from datasets import load_dataset
ds = load_dataset("某组织/某数据集")

Python 里设置(务必在 import datasets 之前):

python
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
from datasets import load_dataset

方法二:huggingface-cli 先下到本地再加载

对大数据集,先用 CLI 完整下载(可断点续传),再从本地加载,比在线流式更稳:

bash
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --repo-type dataset 某组织/某数据集 --local-dir ./data
python
from datasets import load_dataset
ds = load_dataset("./data")   # 从本地目录加载

方法三:开启 hf_transfer 加速

bash
pip install hf_transfer
export HF_HUB_ENABLE_HF_TRANSFER=1

对大文件数据集提速明显。更多 CLI 用法见 👉 hf CLI 下载教程

方法四:ModelScope 数据集

常见公开数据集在 ModelScope 也有镜像,国内直连:

python
from modelscope.msdatasets import MsDataset
ds = MsDataset.load('某数据集名', subset_name='default', split='train')

方法五:流式加载省空间

超大数据集不想全量落盘时,用流式模式边下边用:

python
from datasets import load_dataset
ds = load_dataset("某组织/某数据集", streaming=True)
for sample in ds["train"]:
    ...  # 按需迭代,不一次性下载

配合 HF_ENDPOINT 镜像,流式也走加速节点。

常见问题

Q:load_dataset 还是连 huggingface.co? 确认 HF_ENDPOINT 在 import 之前设置且拼写正确;datasets 版本过旧的升级一下:pip install -U datasets

Q:数据集脚本(loading script)拉取失败? 部分老数据集依赖远程脚本,镜像可能不同步;可加 trust_remote_code=True 或改用已转为 parquet 的新版数据集。

Q:镜像上没有该数据集?代理直连 或找 ModelScope 上的等价数据集。

小结

  • 和下模型同理:HF_ENDPOINT=hf-mirror 一招解决大半
  • 大数据集先 huggingface-cli download 落地再加载,最稳。
  • 超大数据集用 streaming=True 省磁盘。

本文仅供技术学习与研究,请遵守所在国家/地区法律法规。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。