如何快速下载huggingface模型——全方法总结

6,296次阅读
没有评论

Update: 推荐 huggingface 镜像站: https://hf-mirror.com 。
Update: 推荐官方的 huggingface-cli 命令行工具、以及个人开发的 hfd脚本

AI开发绕不过一个问题是,如何从hugging face下载模型/数据集,相关问题想必大家都没少搜过,方法竟五花八门,本人也曾在stackoverflow上回答过类似问题,然而很难见有文章将各类方法一次性讲全

其实网络快、稳的话,随便哪种方法都挺好,然而国内网络问题,断点续传、多线程下载 等特性就显得尤为必要了,否则动辄断掉重来、下载速度太慢,浪费生命!基于这个考虑,本文集成官方方法、第三方奇技淫巧,对各类方法做了个总结和排序,以飨读者:

方法类别 推荐程度 优点 缺点
基于URL 浏览器网页下载 ⭐⭐⭐ 通用性好 手动麻烦/无多线程
多线程下载器 ⭐⭐⭐⭐ 通用性好 手动麻烦
CLI工具 git clone命令 ⭐⭐ 简单 无断点续传/冗余文件/无多线程
专用CLI工具 huggingface-cli+hf_transfer ⭐⭐⭐ 官方下载工具链,带加速功能 容错性低
huggingface-cli ⭐⭐⭐⭐⭐ 官方下载工具功能全 不支持多线程
Python方法 snapshot_download ⭐⭐⭐ 官方支持,功能全 脚本复杂
from_pretrained 官方支持,简单 不方便存储,功能不全
hf_hub_download 官方支持 不支持全量下载/无多线程

数据集的下载同理参考,以下工具都支持

本文对上述方法进行详细介绍,文末介绍几个常见问题:

  • Q1: 如何下载 Llama 等需要登录的模型?
  • Q2: 如何利用镜像站下载hf模型?

1. 浏览器网页下载

模型项目页的 Files 栏中可以获取文件的下载链接。无需登录直接点击下载,还可以复制下载链接,用其他下载工具下载。这一点比国内某些又要注册登录,还不给出直链的平台,开放太多。

2. 多线程下载器

常规工具如浏览器默认采用单线程下载,由于国内网络运营商线路质量、QoS等因素有时候会很慢,多线程加速是一种有效、显著提高下载速度的方法。

经典多线程工具推荐两个:IDM、Aria2。 IDM 适用于 Windows、aria2 适用于 Linux。本文头图就是 IDM 工具。因此获取URL后,可以利用这些多线程工具来下载。以我的一次实测为例,单线程700KB/s,IDM 8线程 6MB/s。千兆宽带下,利用IDM能跑到80MB/s+。

手动获取仓库中所有 URL 比较麻烦,因此我写了一个命令行脚本 hfd.shGitst链接),结合自动获取 url 以及 aria2 多线程下载,适合于 Linux。具体原理见下一节。

该工具同样支持设置镜像端点的环境变量:

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

基本命令:

./hdf.sh bigscience/bloom-560m --tool aria2c -x 4

如果没有安装 aria2,则可以默认用 wget:

./hdf.sh bigscience/bloom-560m

3. Git clone

此外官方还提供了 git clone repo_url 的方式下载,这种方法相当简单,然而却是最不推荐直接用的方法,缺点有二:

  • 1)不支持断点续传,断了重头再来;
  • 2)clone 会下载历史版本占用磁盘空间,即使没有历史版本,.git文件夹大小也会存储一份当前版本模型的拷贝以及元信息,导致整个模型文件夹磁盘占用两倍以上,对于有些存在历史版本的模型,下载时间两倍以上,对于网络不够稳,磁盘不够大的用户,严重不推荐!

一种比较好的实践是,设置 GIT_LFS_SKIP_SMUDGE=1 环境变量(这可能也是为什么官方huggingface页面提到这个参数的原因),再 git clone,这样 Git 会先下载仓库中除了大文件之外的文件。然后我们再用一些支持断点续传的工具来下载大文件,这样既支持了断点续传,.git 目录也不会太大(一般几百KB)。这整个流程,其实就是我上一节提到的 hfd 脚本的实现逻辑,感兴趣的可以参考/使用。

4. huggingface-cli+hf_transfer

huggingface-cli 和 hf_transfer 是 hugging face 官方提供的专门为下载而设计的工具链。前者是一个命令行工具,后者是下载加速模块。

4.1 huggingface-cli

huggingface-cli 隶属于 huggingface_hub 库,不仅可以下载模型、数据,还可以可以登录huggingface、上传模型、数据等。huggingface-cli 属于官方工具,其长期支持肯定是最好的。优先推荐!

安装依赖

pip install -U huggingface_hub

注意:huggingface_hub 依赖于 Python>=3.8,此外需要安装 0.17.0 及以上的版本,推荐0.19.0+。

基本用法

huggingface-cli download --resume-download bigscience/bloom-560m --local-dir bloom-560m

下载数据集

huggingface-cli download --resume-download --repo-type dataset lavita/medical-qa-shared-task-v1-toy

值得注意的是,有个--local-dir-use-symlinks False 参数可选,因为huggingface的工具链默认会使用符号链接来存储下载的文件,导致--local-dir指定的目录中都是一些“链接文件”,真实模型则存储在~/.cache/huggingface下,如果不喜欢这个可以用 --local-dir-use-symlinks False取消这个逻辑。

但我不太喜欢取消这个参数,其最大方便点在于,调用时可以用模型名直接引用模型,而非指定模型路径。

什么意思呢?我们知道,from_pretrain 函数可以接收一个模型的id,也可以接收模型的存储路径。

假如我们用浏览器下载了一个模型,存储到服务器的 /data/gpt2 下了,调用的时候你得写模型的绝对路径

AutoModelForCausalLM.from_pretrained("/data/gpt2")

然而如果你用的 huggingface-cli download gpt2 --local-dir /data/gpt2 下载,即使你把模型存储到了自己指定的目录,但是你仍然可以简单的用模型的名字来引用他。即:

AutoModelForCausalLM.from_pretrained("gpt2")

原理是因为huggingface工具链会在 .cache/huggingface/ 下维护一份模型的符号链接,无论你是否指定了模型的存储路径 ,缓存目录下都会链接过去,这样可以避免自己忘了自己曾经下过某个模型,此外调用的时候就很方便。

所以用了官方工具,既可以方便的用模型名引用模型,又可以自己把模型集中存在一个自定义的路径,方便管理。

当然,该工具目前还是有一些缺点的:

一是其存储逻辑不太直观,如上所属的缓存与链接逻辑,使得新手经常询问,模型究竟下载到哪里去了?

二是不支持单文件多线程。目前的行为是多文件并行,一次性会同时下载多个文件。

三是遇到网络中断会报错退出,不会自动重试,需要重新手动执行。【更新,v0.19.0已支持自动重试】

4.2 hf_transfer

hf_transfer 依附并兼容 huggingface-cli,是 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 开启失败!总之观察是否有进度条就可以知道有没有开启成功,没有进度条就说明开启成功!

5. 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 了。

6. from_pretrained

不过多介绍了。常规方法。

7. hf_hub_download

不过多介绍了。常规方法。

Q1:如何下载hf上需要登陆的模型?

由于模型发布者的版权的要求,部分模型无法公开访问下载,需要在 huggingface 上申请许可通过后,才可以下载。这类模型称之为 Gated Model。基本步骤是:

  • 1.申请许可
  • 2.获取 access token(用于命令行和python方法调用)
  • 3.下载

申请许可

此步骤必须在 huggingface 官网注册登录后申请,由于网络安全原因,镜像站一般不支持。

申请后一般等待几分钟到几天不等(一般几分钟就行),会发邮件通知你审批结果。

获取 access token

申请通过后,就可以在模型主页的 Files and versions 中看到模型文件了,浏览器的话直接点击下载即可。但是如果想要用工具例如 huggingface-cli 下载,则需要获取 access token。

Access Token 获取地址: https://huggingface.co/settings/tokens

访问 huggingface 设置页面的 token 管理页,选择 New 一个 token,只需要 Read 权限即可,创建后便可以在工具中调用时使用了。

下载

除了登陆后浏览器直接下载,几种工具的使用方法分别介绍如下:

Git clone

https

git clone https://<hf_username>:<hf_token>@huggingface.co/meta-llama/Llama-2-7b-chat-hf

huggingface-cli: 添加 –token 参数

huggingface-cli download --token hf_*** --resume-download bigscience/bloom-560m --local-dir bloom-560m

curl, wget:在 header 中添加token

curl -L --header "Authorization: Bearer hf_***" -o model-00001-of-00002.safetensors https://huggingface.co/meta-llama/Llama-2-7b-chat-hf/resolve/main/model-00001-of-00002.safetensors
wget --header "Authorization: Bearer hf_***" https://huggingface.co/meta-llama/Llama-2-7b-chat-hf/resolve/main/model-00001-of-00002.safetensors

snapshot_download:调用 login 方法

import huggingface_hub huggingface_hub.login("hf_***")

Q2:如何利用镜像站下载hf模型?

直接访问镜像站,获取文件URL

镜像站 https://hf-mirror.com

代码类工具设置 HF_ENDPOINT 环境变量

适用于 huggingface 官方的工具和库,包括:

  • huggingface-cli
  • snapshot_download
  • from_pretrained
  • hf_hub_download
  • timm.create_model

设置方法

Windows Powershell

$env:HF_ENDPOINT = "https://hf-mirror.com"

Linux

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

Python

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

注意os.environ得在import huggingface库相关语句之前执行。

总结

以上,我们介绍了浏览器、多线程工具、git clone、huggingface-cli、hf_transfer、python方法、hfd脚本等众多方法,各自有其适用场景,大家根据自己的操作系统的支持情况以及个人习惯来选择。

个人推荐:

  • Linux/Mac OS/windows 默认推荐使用huggingface-cli,对外网连接较好(丢包少)的时候,可尝试 huggingface-cli+hf_transfer(可选)。
  • 网络连接不好,推荐先GIT_LFS_SKIP_SMUDGE=1 git clone其次再对大文件用第三方、成熟的多线程下载工具,Linux 推荐hfd脚本+aria2c,Windows 推荐 IDM。用第三方工具的好处是,下载上百GB的模型、数据集,你可以放个一晚上,第二天就下载好了,而不是第二天早晨发现下载了10%断了还得继续。
  • 偶尔小文件下载,直接访问镜像站,用浏览器下载。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 1
评论(没有评论)

文心AIGC

2024 年 1 月
1234567
891011121314
15161718192021
22232425262728
293031  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开

清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开

清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开 Jay 2026-01-08 20:18:...
训具身模型遇到的很多问题,在数据采集时就已经注定了丨鹿明联席CTO丁琰分享

训具身模型遇到的很多问题,在数据采集时就已经注定了丨鹿明联席CTO丁琰分享

训具身模型遇到的很多问题,在数据采集时就已经注定了丨鹿明联席CTO丁琰分享 衡宇 2026-01-08 20:...
开源“裸考”真实世界,国产具身智能基座模型拿下全球第二!

开源“裸考”真实世界,国产具身智能基座模型拿下全球第二!

开源“裸考”真实世界,国产具身智能基座模型拿下全球第二! 西风 2026-01-08 19:02:20 来源:...
「北京版幻方」冷不丁开源SOTA代码大模型!一张3090就能跑,40B参数掀翻Opus-4.5和GPT-5.2

「北京版幻方」冷不丁开源SOTA代码大模型!一张3090就能跑,40B参数掀翻Opus-4.5和GPT-5.2

「北京版幻方」冷不丁开源SOTA代码大模型!一张3090就能跑,40B参数掀翻Opus-4.5和GPT-5.2...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
首家央企AI独角兽浮出水面!背靠自研大模型,4家国家队资本背书

首家央企AI独角兽浮出水面!背靠自研大模型,4家国家队资本背书

首家央企AI独角兽浮出水面!背靠自研大模型,4家国家队资本背书 Jay 2026-01-07 15:24:04...
悲报!Stack Overflow彻底凉了,比18年前上线首月问题数量还少

悲报!Stack Overflow彻底凉了,比18年前上线首月问题数量还少

悲报!Stack Overflow彻底凉了,比18年前上线首月问题数量还少 闻乐 2026-01-05 19:...
老黄All in物理AI!最新GPU性能5倍提升,还砸掉了智驾门槛

老黄All in物理AI!最新GPU性能5倍提升,还砸掉了智驾门槛

老黄All in物理AI!最新GPU性能5倍提升,还砸掉了智驾门槛 闻乐 2026-01-06 09:09:0...
OpenAI推理第一人离职,7年打造了o3/o1/GPT-4/Codex

OpenAI推理第一人离职,7年打造了o3/o1/GPT-4/Codex

OpenAI推理第一人离职,7年打造了o3/o1/GPT-4/Codex 衡宇 2026-01-06 13:0...
OpenAI推理第一人离职,7年打造了o3/o1/GPT-4/Codex

OpenAI推理第一人离职,7年打造了o3/o1/GPT-4/Codex

OpenAI推理第一人离职,7年打造了o3/o1/GPT-4/Codex 衡宇 2026-01-06 13:0...