下载huggingface-transformers模型至本地,并使用from_pretrained方法加载
Posted 一位安分的码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下载huggingface-transformers模型至本地,并使用from_pretrained方法加载相关的知识,希望对你有一定的参考价值。
我们经常会使用到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/"
huggingface-transformers:训练 BERT 并使用不同的注意力对其进行评估
【中文标题】huggingface-transformers:训练 BERT 并使用不同的注意力对其进行评估【英文标题】:huggingface-transformers: Train BERT and evaluate it using different attentions 【发布时间】:2020-08-23 07:13:52 【问题描述】:这是一个澄清问题。我正在尝试使用标准注意力训练BERT provided by huggingface,并使用不同的注意力定义进行评估。
我考虑的操作是在下面的命令中将bert-base-uncased
更改为我训练好的模型的路径(使用标准注意力),并在我自定义的注意力版本的安装下运行--do_eval
。
export GLUE_DIR=/path/to/glue
export TASK_NAME=MRPC
python ./examples/run_glue.py \
--model_name_or_path bert-base-uncased \
--task_name $TASK_NAME \
--do_eval \
--data_dir $GLUE_DIR/$TASK_NAME \
--max_seq_length 128 \
--per_gpu_eval_batch_size=8 \
--per_gpu_train_batch_size=8 \
--learning_rate 2e-5 \
--num_train_epochs 3.0 \
--output_dir /tmp/$TASK_NAME/
但是,我得到了意想不到的结果。所以我想确保我使用了正确的命令。有人可以和我确认或纠正我吗?
已编辑:版本为 2.8.0。
【问题讨论】:
请发布错误信息并添加您正在使用的转换器版本。 我没有错误信息,它正在输出结果。我编辑并添加了版本。 @cronoik “安装下我的自定义关注”是什么意思?你做了什么?您是否替换了相应的转换器方法? 是的。我改变了 BertSelfAttention 的实现。对困惑感到抱歉。 @cronoik 是的,应该可以。结果应该与原来的 BertSelfAttention 不同。不是这样吗? 【参考方案1】:是的。经@cronoik 确认,这是正确的操作。
【讨论】:
以上是关于下载huggingface-transformers模型至本地,并使用from_pretrained方法加载的主要内容,如果未能解决你的问题,请参考以下文章
huggingface-transformers:训练 BERT 并使用不同的注意力对其进行评估
使用自定义 X 和 Y 数据训练 TFBertForSequenceClassification