如何预先下载变压器模型

问题描述 投票:0回答:1

我想在flask应用中执行一个文本生成任务,并将其托管在Web服务器上,但是当下载GPT模型时,弹性豆茎管理的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")

这些都是引起问题的线路。GPT约为445MB。我使用的是 transformers 库。我想知道我是否可以在这一行下载模型,而不是下载模型,然后将其作为仓库的一部分进行捆绑。这个库是否可以这样做?否则我如何预加载这个模型来避免我所遇到的问题?

machine-learning flask amazon-elastic-beanstalk transformer huggingface-transformers
1个回答
5
投票

方法1:

从这个链接下载模型。

pytorch-model: https:/s3.amazonaws.commodels.huggingface.cobertopenai-gpt-pytorch_model.bin。

tensorflow-model。https:/s3.amazonaws.commodels.huggingface.cobertopenai-gpt-tf_model.h5。

配置文件。https:/s3.amazonaws.commodels.huggingface.cobertopenai-gpt-config.json。

源。https:/huggingface.cotransformers_modulestransformersconfiguration_openai.html#OpenAIGPTConfig。

你可以手动下载模型(在你的例子中是TensorFlow模型)。.h5配置.json 文件),把它放在一个文件夹里(比方说...。model)在版本库中。(你可以尝试压缩模型,如果需要的话,在 ec2 实例中再解压)

然后,你可以直接从路径中的 而不是下载 (model 文件夹,其中包含 .h5config.json):

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

方法2。

不使用链接下载,而是用常规方法在本机下载模型。

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")

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

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

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

只要把它们上传到仓库,然后从那里加载。

© www.soinside.com 2019 - 2024. All rights reserved.