首推 huggingface 镜像站: https://hf-mirror 。
首推工具:官方的 huggingface-cli 命令行工具
这个知乎博主总结的很全面 如何快速下载huggingface模型——全方法总结
我用下面这个流程下载就OK
1. 安装依赖
pip install -U huggingface_hub
注意:huggingface_hub 依赖于 Python>=3.8,此外需要安装 0.17.0 及以上的版本,推荐0.19.0+。
2. 代码
下载
以这个模型为例amritgupta/qafacteval
# 设置环境变量
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror"
# 代码下载
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="amritgupta/qafacteval",filename="README.md",local_dir="./qafacteval")
参数
repo_id
:模型/数据集的完整id(如amritgupta/qafacteval
)filename
:Files中的某个文件(如README.md
)
3. 命令行
下载
3.1 设置环境变量
- Linux
export HF_ENDPOINT=https://hf-mirror
- Windows Powershell
$env:HF_ENDPOINT = "https://hf-mirror"
建议将上面这一行写入 ~/.bashrc。
以这两个模型和数据集为例
huggingface-cli
隶属于 huggingface_hub
库,不仅可以下载模型、数据,还可以可以登录huggingface
、上传模型、数据等。huggingface-cli
属于官方工具,优先推荐!
3.2 下载模型
点下复制,得到 模型名字 huggyllama/llama-7b
huggingface-cli download huggyllama/llama-7b --local-dir /data/llama-7b
参数
--local-dir
:安装路径(若路径不存在,则自动创建)
3.3 下载数据集
点下复制,得到 数据集名字 uoft-cs/cifar10
huggingface-cli download --repo-type dataset uoft-cs/cifar10 --local-dir cifar10
参数
--repo-type
:类型(模型/数据集)--local-dir
:安装路径(若路径不存在,则自动创建)
其他可选参数
以下参考 如何快速下载huggingface模型——全方法总结
-
可选参数
--resume-download
(已废弃)
【更新:huggingface_hub v0.23.0 已弃用 --resume-download参数,现在默认断点续传】
通过添加该参数,huggingface-cli
的下载可断点续传,可以恢复上次因主动取消或网络波动异常退出的未完成的下载。 -
可选参数
--local-dir-use-symlinks False
【更新:请注意,v0.23.0开始加--local-dir
时会关闭符号链接】
值得注意的是,有个--local-dir-use-symlinks False
参数可选,因为huggingface的工具链默认会使用符号链接来存储下载的文件,导致--local-dir
指定的目录中都是一些“链接文件”,真实模型则存储在~/.cache/huggingface
下,如果不喜欢这个可以用--local-dir-use-symlinks False
取消这个逻辑。
但我不太喜欢取消这个参数,其最大方便点在于,调用时可以用模型名直接引用模型,而非指定模型路径。
什么意思呢?我们知道,from_pretrain
函数可以接收一个模型的id,也可以接收模型的存储路径。
假如我们用浏览器下载了一个模型,存储到服务器的 /data/llama-7b
下了,调用的时候你得写模型的绝对路径
AutoModelForCausalLM.from_pretrained("/data/llama-7b")
然而如果你用的 huggingface-cli download gpt2 --local-dir /data/llama-7b
下载,即使你把模型存储到了自己指定的目录,但是你仍然可以简单的用模型的名字
来引用他。即:
AutoModelForCausalLM.from_pretrained("llama-7b")
原理是因为 huggingface
工具链会在 .cache/huggingface/
下维护一份模型的符号链接,无论你是否指定了模型的存储路径 ,缓存目录下都会链接过去,这样可以避免自己忘了自己曾经下过某个模型,此外调用的时候就很方便。
所以用了官方工具,既可以方便的用模型名引用模型,又可以自己把模型集中存在一个自定义的路径,方便管理。