我们经常会使用到hugging face开源的transformers包,调用from_pretrained方法直接下载模型时,经常会下载很久甚至失败.
而且由于它自动将下载的模型保存至root/.cache/huggingface/transformers
文件夹下,这不方便我们对模型进行备份。
为了解决这个问题,下面我们将实现“下载huggingface-transformers模型至本地,并使用from_pretrained方法加载”。
一、下载huggingface_hub包
pip install huggingface_hub
二、编写python脚本下载模型
比如我们现在想要下载google/vit-base-patch16-224
transformers包,可以通过如下代码实现:
from huggingface_hub import snapshot_download
snapshot_download(repo_id="google/vit-base-patch16-224", allow_patterns=["*.json", "pytorch_model.bin", "vocab.txt"], local_dir="./my_model/")
其中,repo_id
含义为模型在huggingface的路径,allow_patterns
为你想要下载的文件(因为repo_id目录下文件很多,你可以通过此参数下载自己想要的文件),local_dir
含义为模型保存在本地的路径。
Hugging Face官方也给出了使用工具下载模型的方法,链接地址
三、在代码中加载本地模型
模型下载到本地前,加载模型的方式为:
VIT_MODEL_NAME_OR_PATH = "google/vit-base-patch16-224"
model = VisionEncoderDecoderModel.from_pretrained(vision_encoder_decoder_model_name_or_path)
下载到本地后,我们就可以这样加载模型了:
vision_encoder_decoder_model_name_or_path = "./my_model/"