如何预下载变压器模型

时间:2020-06-11 05:52:57

标签: machine-learning flask amazon-elastic-beanstalk transformer 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")

这些是引起问题的行。 GPT约为445 MB。我正在使用变压器库。而不是在这一行下载模型,我想知道是否可以腌制该模型,然后将其捆绑为存储库的一部分。这个库有可能吗?否则,我如何预加载该模型以避免出现问题?

3 个答案:

答案 0 :(得分:6)

方法1:

从此链接下载模型:

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

tensorflow模型: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模型 .h5 config.json 文件),并将其放在文件夹中(假设{{1 }})。 (您可以尝试压缩模型,然后在需要时将其解压缩到ec2实例中)

然后,您可以从路径 而不是下载 model文件夹,其中包含model.h5):

config.json

方法2:

您可以使用常规方法在本地计算机上下载模型,而不必使用链接下载。

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

这将下载模型。现在,您可以使用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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我尝试从huggingface官网下载模型,但是下载的模型是git-lfs代码,不是实际的模型文件。

幸运的是,我发现清华有镜像拥抱脸模型,所以你可以从清华镜报下载实际模型:https://mirrors.tuna.tsinghua.edu.cn/hugging-face-models/