Skip to content

Hugging Face 加速

本文介绍如何在 Linux 环境中使用 HF-Mirror 加速 Hugging Face 模型和数据集下载,适合 GPU 容器、训练服务器及自动化任务。

概述

HF-Mirror 镜像地址为:

text
https://hf-mirror.com

Hugging Face 工具链会读取 HF_ENDPOINT 环境变量。将该变量设置为镜像地址后,hf、旧版 huggingface-cli 以及 huggingface_hub 的 Python API 会优先通过镜像下载资源。

HF-Mirror 是第三方公益服务,并非 Hugging Face 或立方云官方服务。镜像可用性和资源同步状态可能发生变化,使用前请同时保留 Hugging Face 官方地址作为回退方案。

安装命令行工具

安装或升级 huggingface_hub

bash
python3 -m pip install -U huggingface_hub

确认新版 hf 命令可用:

bash
hf --help

如果环境中只有 huggingface-cli,可以继续使用本文后面的兼容命令,也可以升级 huggingface_hub

配置镜像地址

当前终端临时生效

bash
export HF_ENDPOINT=https://hf-mirror.com

检查变量是否设置成功:

bash
printf '%s\n' "$HF_ENDPOINT"

输出应为:

text
https://hf-mirror.com

该配置只在当前 Shell 会话中有效,关闭终端后会失效。

持久化配置

使用 Bash 时,将下面一行添加到 ~/.bashrc

bash
export HF_ENDPOINT=https://hf-mirror.com

然后重新加载配置:

bash
source ~/.bashrc

使用 Zsh 时,将同一配置添加到 ~/.zshrc,然后执行:

bash
source ~/.zshrc

如只希望单次命令使用镜像,可以将环境变量写在命令前,不改变当前终端的后续配置:

bash
HF_ENDPOINT=https://hf-mirror.com hf download openai-community/gpt2

使用 hf 下载

下载模型

将整个模型仓库下载到指定目录:

bash
hf download openai-community/gpt2 --local-dir ./gpt2

只下载单个文件:

bash
hf download openai-community/gpt2 config.json --local-dir ./gpt2

下载数据集

下载数据集时添加 --repo-type dataset

bash
hf download Salesforce/wikitext \
  --repo-type dataset \
  --local-dir ./wikitext

新版 hf download 会使用本地缓存并自动处理可恢复的下载,不需要额外添加旧版的 --resume-download 参数。

兼容 huggingface-cli

旧环境可以继续使用 huggingface-cli download。只要已经设置 HF_ENDPOINT,下载请求同样会使用镜像。

下载模型:

bash
huggingface-cli download openai-community/gpt2 --local-dir ./gpt2

下载数据集:

bash
huggingface-cli download Salesforce/wikitext \
  --repo-type dataset \
  --local-dir ./wikitext

如果命令不存在或参数不受支持,请升级 huggingface_hub 并改用新版 hf 命令。

在 Python 中使用

设置 HF_ENDPOINT 后,huggingface_hub 和 Transformers 会自动读取该配置。

下载完整仓库

python
from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="openai-community/gpt2",
    local_dir="./gpt2",
)

使用 Transformers 加载模型

python
from transformers import AutoModel, AutoTokenizer

model_id = "openai-community/gpt2"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModel.from_pretrained(model_id)

如果脚本只需单次使用镜像,可以在启动时指定环境变量:

bash
HF_ENDPOINT=https://hf-mirror.com python3 train.py

部分数据集或项目包含独立下载脚本,脚本中可能写死其他下载地址。这类地址不会自动读取 HF_ENDPOINT,需要按照项目说明单独处理。

使用 hfd 下载

HF-Mirror 提供的 hfd 基于 aria2,适合下载较大的模型仓库。运行前先确认系统已经安装 aria2c

bash
command -v aria2c

如果没有输出,请先使用当前 Linux 发行版的软件包管理器安装 aria2。然后下载脚本并添加执行权限:

bash
wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh

下载模型:

bash
./hfd.sh openai-community/gpt2

下载数据集:

bash
./hfd.sh Salesforce/wikitext --dataset

hfd.sh 是外部脚本,执行前应先阅读脚本内容,并确认来源和下载地址符合预期。

下载 Gated Repo

部分模型属于 Gated Repo,需要先在 Hugging Face 官方网站完成登录、阅读许可协议并申请访问权限:

  1. 打开对应模型的 Hugging Face 官方页面并提交访问申请。
  2. 获得权限后,在官方 Access Tokens 页面创建只读 Token。
  3. 将 Token 保存到当前会话的环境变量中,不要写入代码、镜像或公开日志。
bash
export HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxx

通过新版命令下载:

bash
hf download OWNER/REPOSITORY \
  --token "$HF_TOKEN" \
  --local-dir ./repository

使用完毕后可以清除当前会话中的变量:

bash
unset HF_TOKEN

公共镜像可能不支持登录或尚未同步受限资源。如果下载失败,请确认官方账号已经获得授权,并优先通过 Hugging Face 官方地址下载。不要把 Token 直接写入下载 URL,也不要在工单、截图或聊天记录中公开 Token。

恢复官方地址

只恢复当前终端:

bash
unset HF_ENDPOINT

如果已将配置写入 ~/.bashrc~/.zshrc,请删除对应的 export HF_ENDPOINT=... 行,再重新加载 Shell 配置。

常见问题

仍然访问 huggingface.co

先确认环境变量:

bash
printf '%s\n' "$HF_ENDPOINT"

然后确认命令与 Python 程序运行在同一个 Shell 会话中。部分第三方库可能不读取 HF_ENDPOINT,需要查看该项目自己的镜像或代理配置。

找不到仓库或文件

镜像同步可能存在延迟。请先在 Hugging Face 官方页面确认仓库 ID、文件名和 Revision 是否正确;官方存在但镜像暂未同步时,可以临时取消 HF_ENDPOINT 后重试。

磁盘空间不足

Hugging Face 默认会保留缓存,大模型可能同时占用缓存目录和 --local-dir 指定目录。下载前可以检查磁盘空间:

bash
df -h
du -sh ~/.cache/huggingface 2>/dev/null

确认缓存不再需要后,再按照 Hugging Face 官方缓存管理方式清理。

注意事项

  • 镜像服务不保证所有仓库和 Revision 都能实时同步。
  • 重要模型和数据集应记录仓库 ID、Revision 或 Commit Hash,保证结果可复现。
  • 不要将 Hugging Face Token 写入代码仓库、Dockerfile、Shell 历史或公开日志。
  • 下载模型和数据集前,请确认其 License、使用限制和访问授权。
  • 生产任务应准备官方地址或内部对象存储作为备用下载源。