返回博客列表
开发者与 AI

HuggingFace下载慢?2026中国开发者加速完整指南(镜像/hf_transfer/代理)

DEV·AI·30CH HuggingFace下载慢?2026 中国开发者加速完整指南(…

先说结论:解决 HuggingFace 下载慢,只有三条路线,按场景选即可。镜像路线(hf-mirror.com)免费、速度快,覆盖绝大多数公开模型和数据集,日常开发首选;加速库路线(hf_transfer)在链路本身不差的前提下用多线程榨干带宽,适合和镜像叠加使用;代理路线是 gated 模型(需要登录 token)、私有仓库、上传模型、访问 Spaces 等完整 Hub 生态的唯一解——这些场景镜像救不了。三条路线互不冲突,可以共存。下文每条路线都给出可直接复制粘贴的命令。


为什么 HuggingFace 在中国下载这么慢?

git clone 一个 7B 模型,速度显示 3KB/s,预计完成时间 47 天——这大概是每个在中国做 AI 开发的人都经历过的场景。三个核心原因:

  1. 跨国链路瓶颈:HuggingFace 的服务器和 CDN 节点主要部署在欧美,数据要穿过拥挤的国际出口。TCP 在高丢包环境下会自动降速,文件越大问题越严重。

  2. CDN 帮不上忙:HuggingFace 的模型文件走 Cloudflare 等 CDN 分发,而这些 CDN 在中国大陆没有可用节点,请求可能被路由到遥远的 POP 点,延迟反而更高。

  3. “大象流”被降优先级:下载几十 GB 的模型属于典型的长时间大流量连接(Elephant Flow),国际出口带宽有限,运营商的 QoS 策略会对这类连接降低优先级——所以经常是开头几分钟挺快,随后一路掉到 KB 级。

这套跨境链路问题不是 HuggingFace 独有,Docker 镜像拉取GitHub clone 都是同一个病根,解法思路也高度相似:能用国内镜像就用镜像,镜像覆盖不到的场景走代理。


路线一:hf-mirror.com 镜像站(免费方案首选)

hf-mirror.com 是社区维护的 HuggingFace 国内镜像,与官方工具链完全兼容——你不需要改任何代码,只需要设置一个环境变量 HF_ENDPOINT,所有 huggingface_hub 系的工具(huggingface-clitransformersdatasets)就会自动从镜像拉取。实测下载速度通常能到 10-50MB/s。

Linux / macOS(bash / zsh)

# 1. 安装/升级官方下载工具
pip install -U huggingface_hub

# 2. 设置镜像端点(当前终端会话生效)
export HF_ENDPOINT=https://hf-mirror.com

# 3. 下载模型(--local-dir 指定落盘目录)
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir ./Qwen2.5-7B-Instruct

# 4. 下载数据集
huggingface-cli download --repo-type dataset squad --local-dir ./squad

设置后可以先验证一下是否生效,再开始动辄几十 GB 的下载:

echo $HF_ENDPOINT   # 应输出 https://hf-mirror.com

关于落盘位置:不加 --local-dir 时,文件会进默认缓存目录 ~/.cache/huggingface/hub,由 transformers 等库自动复用;加了 --local-dir 则把文件放到你指定的目录,适合部署、拷贝到其他机器等需要”拿到实体文件”的场景。缓存盘不够大时,可以用 export HF_HOME=/data/huggingface 把整个缓存挪到大盘上。

想让镜像配置长期生效,把环境变量写进 shell 配置文件:

echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc   # zsh 用户写 ~/.zshrc
source ~/.bashrc

Windows PowerShell

PowerShell 设置环境变量的语法不同,不要照抄 bash 的 export

# 当前会话生效
$env:HF_ENDPOINT = "https://hf-mirror.com"

# 写入用户级环境变量,永久生效(新开终端后可用)
[Environment]::SetEnvironmentVariable("HF_ENDPOINT", "https://hf-mirror.com", "User")

# 之后正常使用
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir .\Qwen2.5-7B-Instruct

断点续传:大文件下载的保命符

下载几十 GB 的权重文件,中途断线是常态。huggingface-cli 的断点续传能从上次中断的位置继续,而不是从头再来:

huggingface-cli download --resume-download Qwen/Qwen2.5-7B-Instruct --local-dir ./Qwen2.5-7B-Instruct

说明:较新版本的 huggingface_hub 已经默认开启断点续传,--resume-download 会提示”已废弃”但不影响使用;旧版本则需要显式加上这个参数。无论哪个版本,中断后重新执行同一条命令即可续传。

在 Python 代码里指定镜像

如果你不方便改机器的环境变量(比如共享服务器、CI 环境),可以在代码内解决。两种写法:

方式一:代码内设置环境变量(注意必须在 import transformers / huggingface_hub 之前设置):

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

from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("bert-base-chinese")

方式二:snapshot_download 显式传入 endpoint 参数(较新版本 huggingface_hub 支持):

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="Qwen/Qwen2.5-7B-Instruct",
    local_dir="./Qwen2.5-7B-Instruct",
    endpoint="https://hf-mirror.com",
)

容器 / K8s 环境

在 Dockerfile 或 Pod 配置中注入环境变量即可:

ENV HF_ENDPOINT=https://hf-mirror.com

优点:免费、速度快、支持断点续传、与官方工具零成本兼容。

局限:公益项目带宽有上限,高峰期可能拥堵;镜像与官方有几小时到一天的同步延迟;需要登录授权的 gated 模型和私有仓库覆盖不到(见路线三)。

顺带一提,这种”换国内源”的思路和 npm / pip 换镜像源是同一套方法论——把开发环境的所有包管理器一次配齐,收益更大。


路线二:hf_transfer 高速传输库

hf_transfer 是 HuggingFace 官方用 Rust 编写的高性能传输模块,替代默认的 Python 下载逻辑,通过多线程分块把带宽打满。在链路本身不差(比如已经走了镜像或代理)的情况下,它能把单文件下载速度再抬一截:

# 1. 安装
pip install hf_transfer

# 2. 启用加速(可与镜像叠加)
export HF_HUB_ENABLE_HF_TRANSFER=1
export HF_ENDPOINT=https://hf-mirror.com

# 3. 正常下载,底层自动切换为 hf_transfer
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir ./Qwen2.5-7B-Instruct

用之前想清楚它的取舍——hf_transfer 是一个”性能优先”的底层工具:

  • 出错信息少:传输失败时报错非常简略,排查网络问题会比较痛苦;
  • 不支持断点续传:一旦中断需要重新下载该文件,几十 GB 的单个权重分片断在 95% 会很想哭;
  • 它加速的是带宽利用率,不是链路质量:如果你的瓶颈是国际出口丢包(直连 HuggingFace 的典型情况),hf_transfer 帮不了你,先解决链路(镜像或代理),再谈榨干带宽。

建议:网络稳定的内网/镜像场景开着它;跨境不稳定链路上下载超大文件时,宁可关掉它换取断点续传。


路线三:多线程下载器 hfd + aria2

对特别大的模型(70B、100B+),单线程即使走镜像也不够快。hf-mirror 官方提供的 hfd 脚本封装了 aria2c 的多线程能力:

# 1. 安装 aria2
sudo apt-get install aria2   # Ubuntu/Debian
brew install aria2           # macOS

# 2. 下载 hfd 脚本
wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh

# 3. 设置镜像
export HF_ENDPOINT=https://hf-mirror.com

# 4. 多线程下载模型(-x 为并行连接数)
./hfd.sh Qwen/Qwen2.5-7B-Instruct --tool aria2c -x 4

# 5. 下载数据集
./hfd.sh squad --dataset --tool aria2c -x 4

-x 4 表示 4 个并行连接,带宽富余可以调到 -x 8。它自动处理大文件分片和断点续传,是”镜像 + 多线程 + 可续传”三者兼得的组合,大模型下载场景比 hf_transfer 更稳妥。


git clone 大模型仓库的陷阱(以及正确替代)

很多人习惯性地 git clone 模型仓库,这在大模型场景下是个坑:

  1. git lfs 全量拉取慢git clone 会通过 git-lfs 逐个拉取所有大文件,没有多线程分块,也不能像 huggingface-cli 那样只挑需要的文件;
  2. 双倍磁盘占用:git-lfs 会在 .git/lfs/objects 里保留一份对象缓存,工作区再放一份实体文件——clone 一个 15GB 的模型,磁盘实际要吃掉约 30GB;
  3. 中断即重来:clone 过程断掉,大概率只能删掉重clone。

正确姿势:需要模型文件就用 huggingface-cli download(见路线一);确实需要 git 仓库结构(比如要提交代码、看历史)时,先跳过大文件再按需补:

# 只克隆仓库结构和小文件,跳过 LFS 大文件
GIT_LFS_SKIP_SMUDGE=1 git clone https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct

# 大文件用 huggingface-cli 按需下载到同一目录
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir ./Qwen2.5-7B-Instruct

路线四:ModelScope(魔搭)国内替代源

如果你要的模型在阿里的 ModelScope 上也有,直接从 ModelScope 下载往往更省事——服务器在国内,走阿里云带宽,不需要任何镜像配置:

pip install modelscope
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct')

也可以直接用命令行下载:

modelscope download --model Qwen/Qwen2.5-7B-Instruct

适用范围要拎清

  • 国产模型基本全覆盖且是第一发布源:Qwen、GLM、DeepSeek、Yi 等国产系模型在 ModelScope 上通常与 HuggingFace 同步发布甚至更早,下载体验远好于跨境拉取;
  • 国外新模型有同步延迟:欧美实验室的新模型(以及冷门模型、数据集)要等社区搬运,可能滞后数天甚至没有;
  • 生态绑定在 HuggingFace 的场景替代不了:依赖 transformers 自动拉取、datasets 库、HF Spaces 的工作流,换源成本不低。

结论:下国产模型优先 ModelScope,下国外模型走 hf-mirror,两者是互补关系而非二选一。


路线五:代理直连——镜像救不了的场景

前面的免费方案能覆盖”下载公开模型”这个主场景,但以下场景只能直连 huggingface.co,必须走代理

  • Gated 模型:Llama、Gemma 等需要在官网申请授权、下载时携带登录 token 验证身份的模型,授权校验发生在 HuggingFace 官方服务端;
  • 私有仓库:你自己或组织的 private repo,镜像站无法访问;
  • 上传模型 / 数据集huggingface-cli uploadgit push 只能推到官方源,镜像是只读的;
  • 完整 Hub 生态:Spaces、Inference API、Discussions、模型评估页,这些交互功能没有镜像可言;
  • CI/CD 与训练流水线:生产链路依赖第三方公益镜像存在稳定性风险,需要可控的直连通道。

终端走代理的标准写法(HTTP 代理为例,端口以你代理客户端实际监听端口为准,7890 只是常见默认值):

export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890

# 之后正常使用官方端点,不要再设 HF_ENDPOINT
huggingface-cli download meta-llama/Llama-3.1-8B-Instruct \
  --token $HF_TOKEN --local-dir ./Llama-3.1-8B-Instruct

PowerShell 对应写法:

$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:HTTP_PROXY = "http://127.0.0.1:7890"

注意两点:一是 HF_ENDPOINT 与代理二选一——设了镜像端点,流量就不会去官方源,gated 校验会失败,走代理前记得 unset HF_ENDPOINT;二是 Python 的 requests/huggingface_hub 会自动读取这两个环境变量,代码不用改。

如果你还要对 HuggingFace 仓库做 git push(上传模型权重、改 README),git 同样默认读取 HTTPS_PROXY 环境变量;也可以只对 huggingface.co 域名单独配代理,不影响访问国内 git 源:

git config --global http.https://huggingface.co.proxy http://127.0.0.1:7890

如果你的日常工作除了下模型还要访问 Claude / OpenAI API、跑 Google Colab、连 W&B——整个 ML 工具链不可能每个都找镜像,一条稳定的代理链路是更省心的整体解。JetStream 的 IEPL 专线走独立国际以太网链路,不挤公共出口,实测直连 huggingface.co 下载可以稳定在 20-50MB/s。

推荐策略:日常下公开模型用 hf-mirror(免费够快),碰到 gated 模型、私有仓库、上传需求时切代理直连。两套配置可以共存,按需切换。


各方案对比总结

方案成本速度覆盖范围适用场景
hf-mirror 镜像免费10-50MB/s公开模型/数据集日常开发首选
hf_transfer免费带宽利用率高同所走链路稳定链路上叠加提速
hfd + aria2免费多线程叠加公开模型/数据集70B+ 大模型
ModelScope免费国内直连稳定国产模型全、国外有延迟下国产模型
代理直连付费稳定 20-50MB/s全覆盖含 gated/私有/上传完整 HF 生态

常见问题

hf-mirror 镜像和 HuggingFace 官方数据完全一致吗?

镜像有几小时到一天的同步延迟。要第一时间拉刚发布的模型,直连官方源更保险。

git clone 和 huggingface-cli download 哪个好?

下载模型文件一律用 huggingface-cli download:支持断点续传、可只下载需要的文件、不产生 git-lfs 的双倍磁盘占用。git clone 只在你确实需要仓库的 git 结构时使用,并配合 GIT_LFS_SKIP_SMUDGE=1

为什么设了镜像还是很慢?

依次排查:1)高峰期镜像站拥堵,换时段重试;2)单线程瓶颈,换 hfd + aria2 多线程;3)内网限速或公司出口策略;4)你要的是 gated/私有模型,镜像本来就覆盖不到,走代理。

模型下载到哪了?磁盘快满了怎么办?

不指定 --local-dir 时,所有文件都在 ~/.cache/huggingface/hub 缓存目录里,同一个模型不会重复下载。磁盘吃紧时先用 huggingface-cli scan-cache 查看缓存占用,再用 huggingface-cli delete-cache 交互式清理不用的旧模型;长期方案是设置 HF_HOME 把缓存整体迁到数据盘。

hf_transfer 开了反而报错?

hf_transfer 错误信息简略且不支持断点续传,跨境不稳定链路上建议 unset HF_HUB_ENABLE_HF_TRANSFER 关掉它,用默认下载逻辑保住续传能力。


让分流自动化:JetStream 的做法

上面所有方案落地后,你的真实工作流大概率是”混合态”:hf-mirror 和 ModelScope 要直连国内、huggingface.co 和 Colab 要走代理,手动切换很快就会烦不胜烦。

JetStream App 内置规则分流,正好解决这个问题:huggingface.co、GitHub、Colab 等国外开发资源自动走代理,hf-mirror、ModelScope、pip 国内源自动直连,无需手动切换模式,也不用维护分流规则。macOS / Windows / iOS(iOS 通过 TestFlight 分发)全平台可用,配置几分钟搞定:

相关阅读(同系列跨境开发加速):

准备好开始了吗?

立即体验安全、快速的 VPN 服务

查看价格和免费使用

分享这篇文章