乐于分享
好东西不私藏

国内网络HuggingFace 下载慢!一招教你下载速度提升10倍!

国内网络HuggingFace 下载慢!一招教你下载速度提升10倍!

适用场景:服务器无法访问 huggingface.co、下载大文件频繁断连、单线程速度龟速,想用最稳最快的方式把模型权重和数据集拉下来。


一、背景:为什么 HuggingFace 在国内这么难用?

对于国内的 AI 开发者和竞赛选手来说,HuggingFace 几乎是绕不开的资源站——无论是预训练权重、数据集还是 tokenizer 配置,十有八九都托管在上面。然而由于众所周知的网络原因,直接访问 huggingface.co 往往要么超时,要么速度慢到令人崩溃。

更糟糕的是,当你在云 GPU 实例(比如 AutoDL、恒源云)上训练模型时,服务器本身也无法出境访问,wget 挂着跑了几个小时,结果下载到一半直接断开——什么都没留下。

本文以 AGIBot World Challenge @ ICRA 2026 参赛过程中下载模型权重和训练数据集为实际案例,系统整理一套国内环境下 HuggingFace 大文件下载的最优实践


二、核心思路:使用 HF-Mirror 镜像站

hf-mirror.com 是目前国内最稳定的 HuggingFace 镜像站之一,使用方式极其简单——将原始 URL 中的 huggingface.co 替换为 hf-mirror.com 即可,其余路径完全一致。

原始地址(无法访问):

https://huggingface.co/agibot-world/EnerVerse-AC/resolve/main/EnerV_AC_deepspeed_v0.1.pt

镜像地址(国内可用):

https://hf-mirror.com/agibot-world/EnerVerse-AC/resolve/main/EnerV_AC_deepspeed_v0.1.pt

规则通用,数据集也适用:

# 原始https://huggingface.co/datasets/agibot-world/AgiBotWorldChallenge-2026/resolve/main/WorldModel/train.tar.gz# 镜像https://hf-mirror.com/datasets/agibot-world/AgiBotWorldChallenge-2026/resolve/main/WorldModel/train.tar.gz

三、方案一:wget(简单但有局限)

wget 是最基础的下载工具,配合 -c 参数可以实现断点续传,适合网络稳定、文件不太大的场景。

基本用法

# 下载模型权重wget -c \  -O /coding/AgiBotWorldChallenge/weights/evac/EnerV_AC_deepspeed_v0.1.pt \  "https://hf-mirror.com/agibot-world/EnerVerse-AC/resolve/main/EnerV_AC_deepspeed_v0.1.pt"# 下载 CLIP 权重wget -c \  -O /coding/AgiBotWorldChallenge/weights/clip/open_clip_pytorch_model.bin \  "https://hf-mirror.com/laion/CLIP-ViT-H-14-laion2B-s32B-b79K/resolve/main/open_clip_pytorch_model.bin"

参数说明

参数
作用
-c
断点续传,中断后可接着下
-O <路径>
指定输出文件路径和文件名

wget 的致命弱点

  • • 单线程:无论网速多好,wget 只用一个连接,大文件速度天花板极低
  • • 重试机制弱:默认遇到连接失败会放弃,需要手动加 --tries=0 才能无限重试
  • • 没有并发:10 GB 的数据集,单线程跑一晚上都是常事

💡 对于 GB 级别的大文件,强烈建议跳过 wget,直接用下面的 aria2。


四、方案二:aria2(推荐,多线程碾压级提速)

aria2 是一款支持多协议、多线程的命令行下载工具,16 线程并发相比 wget 单线程,实测速度可以提升 5~10 倍甚至更多,且原生支持断点续传和自动重试。

安装

# Ubuntu / Debiansudo apt-get update && sudo apt-get install -y aria2# 或者用 conda(不需要 sudo,更适合云实例)conda install -c conda-forge aria2 -y

完整下载命令(以训练数据集为例)

aria2c -c \  -x 16 -s 16 -k 1M \  --file-allocation=none \  --max-tries=0 --retry-wait=5 \  -d /coding/AgiBotWorldChallenge/data/WorldModel/archives \  -o train.tar.gz \  "https://hf-mirror.com/datasets/agibot-world/AgiBotWorldChallenge-2026/resolve/main/WorldModel/train.tar.gz"

参数详解

参数
含义
推荐值
-c
断点续传
必加
-x 16
最大连接数(线程数)
16(网络好时)/ 8(不稳定时)
-s 16
将文件分成 N 段并行下载
与 -x 保持一致
-k 1M
每段最小分片大小
1M
--file-allocation=none
禁止预分配磁盘空间
必加,否则启动极慢
--max-tries=0
无限重试,直到成功
大文件必加
--retry-wait=5
失败后等待 5 秒再重试
避免频繁触发限速
-d <目录>
下载目录
按需设置
-o <文件名>
输出文件名
按需设置

下载模型权重的完整示例

# 下载 EnerVerse-AC 权重aria2c -c -x 16 -s 16 -k 1M \  --file-allocation=none \  --max-tries=0 --retry-wait=5 \  -d /coding/AgiBotWorldChallenge/weights/evac \  -o EnerV_AC_deepspeed_v0.1.pt \  "https://hf-mirror.com/agibot-world/EnerVerse-AC/resolve/main/EnerV_AC_deepspeed_v0.1.pt"# 下载 CLIP 权重aria2c -c -x 16 -s 16 -k 1M \  --file-allocation=none \  --max-tries=0 --retry-wait=5 \  -d /coding/AgiBotWorldChallenge/weights/clip \  -o open_clip_pytorch_model.bin \  "https://hf-mirror.com/laion/CLIP-ViT-H-14-laion2B-s32B-b79K/resolve/main/open_clip_pytorch_model.bin"

五、进阶技巧

5.1 使用 tmux/screen 防止会话断开

在云服务器或远程 SSH 环境中,一旦终端断开,下载进程就会被杀掉。哪怕 aria2 有断点续传,重新连上之后还得重新执行命令——非常麻烦。

解决方案:在 tmux 或 screen 里跑下载命令。

# 新建 tmux 会话tmux new -s download# 在 tmux 内执行 aria2 命令aria2c -c -x 16 -s 16 ... "https://hf-mirror.com/..."# Ctrl+B, D 可以安全脱离会话(进程继续在后台跑)# 需要查看进度时:tmux attach -t download

用 screen 也一样:

screen -S download# 执行下载命令后按 Ctrl+A, D 脱离screen -r download  # 重新连接

这一步是长时间大文件下载的必备操作,别省。


5.2 配置代理加速

如果你的服务器或本地机器有 HTTP/HTTPS 代理,可以在下载前临时设置环境变量,所有命令行工具(wget、aria2、curl 等)都会自动走代理:

# 临时设置,仅对当前 shell 会话生效export https_proxy=http://你的代理IP:端口export http_proxy=http://你的代理IP:端口# 验证是否生效curl -I https://huggingface.co# 下载完成后取消unset https_proxy http_proxy

⚠️ 注意:云 GPU 实例(AutoDL 等)一般不允许出境流量,即使设置代理也可能无效。此时应优先使用 hf-mirror 镜像站。


5.3 并发数的选择策略

并发数并不是越高越好,服务器端可能会对单 IP 的并发请求做限速甚至封禁。

场景
推荐并发数
网络稳定、服务器带宽充足
-x 16 -s 16
偶发断连,速度不稳定
-x 8 -s 8
频繁被限速或报错
-x 4 -s 4
带宽本身就是瓶颈
任意值,瓶颈不在并发

5.4 下载前先确认目标路径存在

aria2 不会自动创建目录,如果 -d 指定的目录不存在会直接报错。养成下载前先建目录的习惯:

mkdir -p /coding/AgiBotWorldChallenge/weights/evacmkdir -p /coding/AgiBotWorldChallenge/weights/clipmkdir -p /coding/AgiBotWorldChallenge/data/WorldModel/archives

六、wget vs aria2 对比总结

维度
wget
aria2
安装复杂度
系统自带,零配置
需要额外安装
下载速度
单线程,慢
多线程,快 5~10 倍
断点续传
支持(-c
支持(-c
自动重试
有限(需手动配置)
支持无限重试
适用文件大小
< 500 MB
任意大小,GB 级首选
推荐程度
⭐⭐
⭐⭐⭐⭐⭐

七、完整快速参考脚本

把以下内容保存为 download_weights.sh,按需修改路径和 URL 后直接运行:

#!/bin/bashset -e# ========== 配置区 ==========BASE_DIR="/coding/AgiBotWorldChallenge"WEIGHTS_EVAC="$BASE_DIR/weights/evac"WEIGHTS_CLIP="$BASE_DIR/weights/clip"DATA_DIR="$BASE_DIR/data/WorldModel/archives"HF_MIRROR="https://hf-mirror.com"ARIA2_ARGS="-c -x 16 -s 16 -k 1M --file-allocation=none --max-tries=0 --retry-wait=5"# ============================echo "[1/3] 创建目录..."mkdir -p "$WEIGHTS_EVAC" "$WEIGHTS_CLIP" "$DATA_DIR"echo "[2/3] 下载模型权重..."aria2c $ARIA2_ARGS \  -d "$WEIGHTS_EVAC" -o "EnerV_AC_deepspeed_v0.1.pt" \  "$HF_MIRROR/agibot-world/EnerVerse-AC/resolve/main/EnerV_AC_deepspeed_v0.1.pt"aria2c $ARIA2_ARGS \  -d "$WEIGHTS_CLIP" -o "open_clip_pytorch_model.bin" \  "$HF_MIRROR/laion/CLIP-ViT-H-14-laion2B-s32B-b79K/resolve/main/open_clip_pytorch_model.bin"echo "[3/3] 下载训练数据集..."aria2c $ARIA2_ARGS \  -d "$DATA_DIR" -o "train.tar.gz" \  "$HF_MIRROR/datasets/agibot-world/AgiBotWorldChallenge-2026/resolve/main/WorldModel/train.tar.gz"echo "✅ 全部下载完成!"

运行方式:

chmod +x download_weights.sh# 建议在 tmux 内运行tmux new -s downloadbash download_weights.sh

八、小结

步骤
操作
1
将 URL 中的 huggingface.co 替换为 hf-mirror.com
2
安装 aria2apt install aria2 或 conda install aria2
3
使用 aria2c -c -x 16 -s 16 ... 多线程下载
4
用 tmux 或 screen 包裹命令,防止断会话
5
网络不稳时调低并发数至 -x 8 或 -x 4

一套流程跑通后,再大的模型权重和数据集都可以稳稳地拉下来,专注在真正重要的训练和调参上。


相关学习资料