如何预下载变压器模型

Jos*_*bel 4 machine-learning transformer-model flask amazon-elastic-beanstalk huggingface-transformers

我想在 Flask 应用程序中执行文本生成任务并将其托管在 Web 服务器上,但是在下载 GPT 模型时,弹性 beantalk 管理的 EC2 实例崩溃,因为下载需要太多时间和内存

from transformers.tokenization_openai import OpenAIGPTTokenizer
from transformers.modeling_tf_openai import TFOpenAIGPTLMHeadModel
model = TFOpenAIGPTLMHeadModel.from_pretrained("openai-gpt")
tokenizer = OpenAIGPTTokenizer.from_pretrained("openai-gpt")
Run Code Online (Sandbox Code Playgroud)

这些是导致问题的相关线路。GPT 大约为 445 MB。我正在使用变压器库。我没有在这一行下载模型,而是想知道是否可以对模型进行腌制,然后将其捆绑为存储库的一部分。这个图书馆可以吗?否则我如何预加载这个模型以避免我遇到的问题?

Zab*_*azi 10

方法一:

从此链接下载模型:

pytorch 模型:https ://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-pytorch_model.bin

张量流模型:https ://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-tf_model.h5

配置文件:https : //s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-config.json

来源:https : //huggingface.co/transformers/_modules/transformers/configuration_openai.html#OpenAIGPTConfig

您可以手动下载模型(在您的情况下为 TensorFlow 模型.h5config.json文件),将其放在model存储库中的文件夹中(假设为)。(您可以尝试压缩模型,然后在需要时在 ec2 实例中解压缩)

然后,您可以直接从路径而不是下载model包含.h5和 的文件夹config.json)在您的网络服务器中加载模型:

model = TFOpenAIGPTLMHeadModel.from_pretrained("model") 
# model folder contains .h5 and config.json
tokenizer = OpenAIGPTTokenizer.from_pretrained("openai-gpt") 
# this is a light download
Run Code Online (Sandbox Code Playgroud)

方法二:

您可以使用常规方法将模型下载到本地机器中,而不是使用链接下载。

from transformers.tokenization_openai import OpenAIGPTTokenizer
from transformers.modeling_tf_openai import TFOpenAIGPTLMHeadModel
model = TFOpenAIGPTLMHeadModel.from_pretrained("openai-gpt")
tokenizer = OpenAIGPTTokenizer.from_pretrained("openai-gpt")
Run Code Online (Sandbox Code Playgroud)

这将下载模型。现在您可以使用save_pretrained函数将权重保存在文件夹中。

model.save_pretrained('/content/') # saving inside content folder

现在,内容文件夹应该包含一个 .h5 文件和一个 config.json。

只需将它们上传到存储库并从中加载。


Man*_*ves 5

打开https://huggingface.co/models并搜索您想要的模型。单击模型名称,最后单击“列出模型中的所有文件”。您将获得可以下载的文件列表。