我想在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 库。我想知道我是否可以在这一行下载模型,而不是下载模型,然后将其作为仓库的一部分进行捆绑。这个库是否可以这样做?否则我如何预加载这个模型来避免我所遇到的问题?
方法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
文件夹,其中包含 .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
方法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。
只要把它们上传到仓库,然后从那里加载。