【大模型下载】快速下载huggingface模型—方法总结
本文介绍了从HuggingFace下载AI模型的多种方法:1. 浏览器单线程下载(不推荐);2. 多线程工具(IDM/Aria2)可显著提升速度;3. 专用脚本hfd支持Linux/MacOS多线程下载;4. Git方式简单但效率低;5. 官方推荐工具huggingface-cli支持断点续传;6. hf_transfer模块可提高下载速度但稳定性较差;7. snapshot_download方法
一、网页浏览器下载
模型项目页的 Files 栏中可以获取文件的下载链接。无需登录直接点击下载,还可以复制下载链接,用其他下载工具下载。但我下载老是会失败,因此不用这个方法。
网址:
https://hf-mirror.com/deepseek-ai/DeepSeek-V3.1-Base/tree/main

二、多线程下载器
常规工具如浏览器默认采用单线程下载,由于国内网络运营商线路质量、QoS等因素有时候会很慢,多线程加速是一种有效、显著提高下载速度的方法。
经典多线程工具推荐两个:IDM、Aria2。 IDM 适用于 Windows、aria2 适用于 Linux/Mac OS。本文头图就是 IDM 工具。因此获取URL后,可以利用这些多线程工具来下载。以我的一次实测为例,单线程700KB/s,IDM 8线程 6MB/s。千兆宽带下,利用IDM能跑到80MB/s+。
然而,手动获取仓库中所有 URL 再去用 IDM 下载比较麻烦,因此我专门写了一个专用的多线程下载脚本 hfd,见如下介绍。
专用多线程下载器 hfd
hfd 是基于 curl 和 aria2 实现的专用于huggingface 下载的命令行脚本: hfd.sh(Gitst链接)。hfd 相比 huggingface-cli ,鲁棒性更好,很少会有奇奇怪怪的报错,此外多线程控制力度也更细,可以设置下载线程数、并行文件数。缺点是目前仅适用于 Linux 和 Mac OS。
其原理是 Step1:通过Hugging Face API获取模型/数据集仓库对应的所有文件 url;Step2:利用 aria2 多线程下载文件。
该工具同样支持设置镜像端点的环境变量:
export HF_ENDPOINT="https://hf-mirror.com"
基本命令:
./hfd.sh gpt2
如果没有安装 aria2,则可以改用 wget:
./hdf.sh bigscience/bloom-560m --tool wget
--include 指定下载特定文件
# Qwen2.5-Coder下载q2_k量化版本的模型
hfd Qwen/Qwen2.5-Coder-32B-Instruct-GGUF --include qwen2.5-coder-32b-instruct-q2_k.gguf
# gpt2下载onnx路径下的所有json文件
hfd gpt2 --include onnx/*.json
--exclude 排除特定文件的下载
# gpt2仓库,不下载.bin格式的模型以及onnx模型
hfd gpt2 --exclude *.bin onnx/*
注意:语法方面,--include a --include b 和 --include a b 等价。
完整命令格式:
$ ./hfd.sh --help
用法:
hfd <REPO_ID> [--include include_pattern1 include_pattern2 ...] [--exclude exclude_pattern1 exclude_pattern2 ...] [--hf_username username] [--hf_token token] [--tool aria2c
|wget] [-x threads] [-j jobs] [--dataset] [--local-dir path]
描述:
使用提供的仓库ID从Hugging Face下载模型或数据集。
参数:
仓库ID Hugging Face仓库ID(必需)
格式:'组织名/仓库名'或旧版格式(如 gpt2)
选项:
包含/排除模式 用于匹配文件路径的模式,支持通配符。
例如:'--exclude *.safetensor .md', '--include vae/*'。
--include (可选)指定要下载的文件包含模式(支持多个模式)。
--exclude (可选)指定要排除下载的文件模式(支持多个模式)。
--hf_username (可选)Hugging Face用户名用于认证(非邮箱)。
--hf_token (可选)Hugging Face令牌用于认证。
--tool (可选)使用的下载工具:aria2c(默认)或wget。
-x (可选)aria2c的下载线程数(默认:4)。
-j (可选)aria2c的并发下载数(默认:5)。
--dataset (可选)标记下载的是数据集。
--local-dir (可选)存储下载数据的目录路径。
默认下载到当前目录下以'仓库名'命名的子目录。(如果记仓库ID为'组织名/仓库名')。
示例:
hfd gpt2
hfd bigscience/bloom-560m --exclude *.bin .msgpack onnx/
hfd meta-llama/Llama-2-7b --hf_username myuser --hf_token mytoken -x 4
hfd lavita/medical-qa-shared-task-v1-toy --dataset
多线程和并行下载:
hfd 在使用 aria2c 作为下载工具时,支持两种并行配置:
- 单文件线程数 (
-x):控制每个文件的连接数,用法:hfd gpt2 -x 8,建议值:4-8,默认:4 线程。限制最大为10,别开太多了,服务器压力太大了 。 - 并发文件数 (
-j):控制同时下载的文件数,用法:hfd gpt2 -j 3,建议值:3-8,默认:5 个文件。限制最大为10,同上别开太大。
组合使用:
hfd gpt2 -x 8 -j 3 # 每个文件 8 个线程,同时下载 3 个文件
三、Git clone
git lfs install
git clone https://hf-mirror.com/deepseek-ai/DeepSeek-V3.1-Base

这种方法相当简单,然而却是最不推荐直接用的方法,缺点有二:
- 1)不支持断点续传,断了重头再来;
- 2)clone 会下载历史版本占用磁盘空间,即使没有历史版本,
.git文件夹大小也会存储一份当前版本模型的拷贝以及元信息,导致整个模型文件夹磁盘占用两倍以上,对于有些存在历史版本的模型,下载时间两倍以上,对于网络不够稳,磁盘不够大的用户,严重不推荐!
四、huggingface-cli
个人用着最好的一个!!huggingface-cli 隶属于 huggingface_hub 库,不仅可以下载模型、数据,还可以可以登录huggingface、上传模型、数据等。huggingface-cli 属于官方工具,其长期支持肯定是最好的。优先推荐!
安装依赖
pip install -U huggingface_hub
基本用法-下载模型
示例-----将deepseek-ai/DeepSeek-V3.1-Base下载到当前文件夹的model文件夹
huggingface-cli download deepseek-ai/DeepSeek-V3.1-Base --local-dir ./model
中间的deepseek-ai/DeepSeek-V3.1-Base可以由这里替换成你想下载的模型

可选参数 --resume-download
通过添加该参数,huggingface-cli的下载可断点续传,可以恢复上次因主动取消或网络波动异常退出的未完成的下载。
因此最终的命令为
huggingface-cli download deepseek-ai/DeepSeek-V3.1-Base --local-dir ./model --resume-download
五、hf_transfer
hugging face 官方专门为提高下载速度基于 Rust 开发的一个模块,开启后在带宽充足的机器上可以跑到 500MB/s。
然而缺点是:
- 1. 没有进度条【更正,v0.19.0+开始支持进度条了】:是真的没有进度条,有进度条说明你没有开启成功。
- 2. 鲁棒性差,遇到网络不稳定会报错,并提示用户考虑关闭该模块提高容错性。可能这个模块还没有很成熟吧,对国内这种丢包率高的网络还是水土不服。
尽管如此,还是推荐给大家,看各自网络情况吧。
项目地址:https://github.com/huggingface/hf_transfer。
开启方法
(1)安装依赖
pip install -U hf-transfer
(2)设置 HF_HUB_ENABLE_HF_TRANSFER 环境变量为 1。
Linux
export HF_HUB_ENABLE_HF_TRANSFER=1
Windows Powershell
$env:HF_HUB_ENABLE_HF_TRANSFER = 1
开启后使用方法同 huggingface-cli:
huggingface-cli download --resume-download bigscience/bloom-560m --local-dir bloom-560m
注意:如果看到进度条,说明 hf_transfer 没开启成功!例如以下情况:
--resume-download 参数,指的是从上一次下载的地方继续,一般推荐总是加上该参数,断了方便继续。然而如果你一开始没有开启 hf_transfer,下载中途停掉并设置环境变量开启,此时用 --resume-download 会由于不兼容导致 hf_transfer 开启失败!总之观察是否有进度条就可以知道有没有开启成功,没有进度条就说明开启成功!
六、 snapshot_download
huggingface 官方提供了snapshot_download 方法下载完整模型,参数众多、比较完善。相比下文另两个 python 方法,推荐 snapshot_download 方法来下载模型,支持断点续传、多线程、指定路径、配置代理、排除特定文件等功能。然而有两个缺点:
- 1))该方法依赖于 transformers
- 库,而这个库是个开发用的库,对于自动化运维有点重;
- 2) 该方法调用比较复杂,参数较多,例如默认会检查用户缓存目录下是否已有对应模型,如已有则会创建符号链接,不理解的容易导致问题。外加需要配置代理。常见参数配置如下:
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="bigscience/bloom-560m",
local_dir="/data/user/test",
proxies={"https": "http://localhost:7890"},
max_workers=8
)
对于需要登录的模型,还需要两行额外代码:
import huggingface_hub
huggingface_hub.login("HF_TOKEN") # token 从 https://huggingface.co/settings/tokens 获取
一般很难记住这么多代码,经常性要下载模型的,不如用上文介绍的官方的命令行工具 huggingface-cli 了。
更多推荐

所有评论(0)