由于不知名原因,现在下载huggingface的模型和数据集非常慢,甚至无法下载。
https://hf-mirror.com
是一个非常好用的huggingface镜像,可以加速模型和数据集的下载,这里简要介绍其使用方法。
假设这是我们加载模型的代码main.py
:
import torch
from transformers import BertModel
model = BertModel.from_pretrained("bert-base-uncased")
如果没有提前下载好模型,也没有设置镜像和proxy
的话,直接运行python main.py
可能无法下载。这里我们推荐使用非侵入式的方式设置环境变量,从而顺利从镜像站下载模型。以下是两种设置环境变量的方式,任选其一即可。
- 永久环境变量设置
- 在
.bashrc
文件中添加一行:
export HF_ENDPOINT=https://hf-mirror.com
- 执行
source .bashrc
- 重新运行
main.py
,即可下载、加载模型。
- 临时环境变量设置
- 在
main.py
文件的最前面添加以下代码:
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
- 重新运行
main.py
,即可下载、加载模型。
除了能够进行模型的加载,huggingface镜像还可以加速数据集和大文件的下载,可以作为一个文件中转站,这里我们介绍如何使用huggingface镜像下载大文件
准备工作
需要提前注册一个huggingface账号,然后在https://huggingface.co/username
中生成一个token,用于后续的上传、下载文件。
需要安装git,git lfs工具
创建仓库
首先,需要在huggingface上创建一个仓库,用于存放上传的文件,可以选择模型或者数据集,这里以模型为例。点击右上角的New model
,输入模型名称,选择Upload a model
,然后点击Create repository
。
这样就创建了一个仓库,可以看到仓库的地址,比如https://huggingface.co/username/model_name
。
上传文件
这里推荐使用命令行的方式上传文件。
- 克隆仓库:
git clone https://hf-mirror.com/username/model_name
- 进入仓库:
cd model_name
- 将要上传的文件放到仓库中,比如
cp /path/to/model.bin .
- 跟踪大文件:
git lfs track "*.bin"
,如果是其他类型的文件,可以修改*.bin
为对应的文件类型,比如*.pth.*
。 - 提交文件:
git add .
,git commit -m "add model"
。 - 上传文件:
git push
,这里的main
是分支名称,如果是其他分支,可以修改为对应的分支名称。
注意:如果上传文件失败,说明需要权限。我们使用上面生成的token,添加权限。
git remote set-url origin https://<user_name>:<token>@hf-mirror.com/<repo_path>
然后再上传。
具体参考这里:https://huggingface.co/blog/password-git-deprecation
上传成功后,可以在仓库主页中看到上传的文件。
这里只展示了大文件的上传,如果是小文件,可以直接使用git add
、git commit
、git push
上传。
下载文件
这里介绍命令行直接下载源目录的方法。
首先,下载以下脚本:https://gist.githubusercontent.com/unikcc/9f146b74118ab194ca604b6733d82361/raw
,命名为download.sh
,并且加上可执行权限:chmod +x download.sh
然后,将以下文件保存为run.sh
#!/usr/bin/bash
export HF_ENDPOINT="https://hf-mirror.com"
./down.sh username/model_name --hf_username xxx --hf_token hf_xxx --tool aria2c -x 4
把username/model_name
替换为你要下载的文件的名称,例如facebook/bart-large-mnli
最后,执行bash run.sh
,即可下载文件。