下载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-224transformers包,可以通过如下代码实现:

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

如何禁用 TOKENIZERS_PARALLELISM=(true | false) 警告?

使用拥抱面变压器只保存最佳重量

搞定下载(文件下载,图片下载,截屏下载)

搞定下载(文件下载,图片下载,截屏下载)