下载变压器模型以离线使用

Posted

技术标签:

【中文标题】下载变压器模型以离线使用【英文标题】:Downloading transformers models to use offline 【发布时间】:2020-09-27 09:22:58 【问题描述】:

我有一个训练有素的 Transformers NER 模型,我想在未连接到互联网的机器上使用它。加载此类模型时,当前它会将缓存文件下载到 .cache 文件夹。

要离线加载和运行模型,您需要将 .cache 文件夹中的文件复制到离线机器上。但是,这些文件有很长的非描述性名称,如果您要使用多个模型,则很难识别正确的文件。对此有什么想法吗?

Example of model files

【问题讨论】:

如何保存模型?您可能希望使用微调模型,而不是您开始使用的预训练模型。如果您保存所需的所有内容,则可以从中加载模型。见HuggingFace - Serialization best-practices。 【参考方案1】:

处理此问题的一种相对简单的方法是简单地“重命名”预训练模型,如this 线程中所述。

基本上,对于您尝试使用的任何模型,您所要做的就是这样:

from transformers import BertModel

model = BertModel.from_pretrained("bert-base-uncased")
model.save_pretrained("./my_named_bert")

该线程还详细说明了本地模型文件夹的命名方式,请参阅 LysandreJik 的帖子:

您好,之所以这样命名,是因为这是一种确保 S3 上的模型与缓存中的模型相同的简洁方法。该名称是根据托管在 S3 上的文件的 etag 创建的。 [...]

【讨论】:

【参考方案2】:

第一次使用 model.save_pretrained("./your_file_name") 保存模型并通过 BertModel.from_pretrained("./your_file_name") 从文件中加载模型 如果您正在使用标记器,请执行相同的操作。

model.save_pretrained("./your_file_name")
BertModel.from_pretrained("./your_file_name")

【讨论】:

以上是关于下载变压器模型以离线使用的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在没有配置文件的情况下使用预训练的变压器模型?

无法使用 keras.models.load_model() 加载 TF 变压器模型

Pytorch 变压器模型中的大的爆炸性损失

带有变压器的分类模型的 keras 模型中的错误

我的时间序列预测变压器模型的训练损失和准确度都在下降

无法保存变压器模型