如何多线程下载HuggingFace数据集?加速大体积数据集下载
提升HuggingFace数据集下载速度的多线程方案
针对16TB的uonlp/CulturaX这类超大数据集,单线程下载效率太低,你可以通过以下几种方式开启多线程加速:
1. 直接使用load_dataset的多进程参数
datasets库本身支持多进程下载与处理,只需在调用时指定num_proc参数,数值建议根据你的CPU核心数和网络带宽调整(比如8-16):
from datasets import load_dataset ds = load_dataset("uonlp/CulturaX", "en", num_proc=16)
2. 配置环境变量增加下载线程数
通过设置HF_DATASETS_DOWNLOAD_MAX_WORKERS环境变量,控制底层下载器的最大线程数:
- 在代码中设置:
import os os.environ["HF_DATASETS_DOWNLOAD_MAX_WORKERS"] = "16" from datasets import load_dataset ds = load_dataset("uonlp/CulturaX", "en")
- 或在终端运行代码前配置:
export HF_DATASETS_DOWNLOAD_MAX_WORKERS=16 python your_script.py
3. 用hf_transfer工具加速(推荐)
HuggingFace官方推出的hf_transfer专门优化了大文件的多线程下载,对超大数据集效果显著:
- 安装工具:
pip install hf_transfer
- 启用该工具后再下载:
import os os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1" from datasets import load_dataset ds = load_dataset("uonlp/CulturaX", "en")
额外优化提示
- 确保磁盘IO性能足够,避免因写入速度限制拖慢下载进度;
- 数据集会自动缓存到本地目录,后续加载无需重复下载;
- 若遇下载失败,可通过
max_retries参数增加重试次数:
ds = load_dataset("uonlp/CulturaX", "en", num_proc=16, max_retries=5)
内容的提问来源于stack exchange,提问作者Franck Dernoncourt
相关产品推荐
相关产品推荐

