在加载嵌入模型时在AWS EFS中抛出'std :: bad_alloc'实例后调用终止方法

时间:2020-09-09 19:00:58

标签: python amazon-web-services tensorflow aws-lambda

我训练了一个Tensorflow模型,该模型使用BioSentVec embeddings预处理模型输入。该嵌入模型的大小为20GB,因此我无法在AWS Lambda(大小限制为512 MB)或docker(大小限制为10 GB)中部署最终模型。

因此,我决定与Lambda + EFS一起使用,并且我能够成功-

  • 在EFS上安装Lambda
  • 下载所有依赖项和库(NumPy,pandas,TensorFlow等)。
  • 从S3(通过使用EC2实例)下载EFS中的Biosentvec嵌入

现在,当我尝试使用以下代码在lambda中加载嵌入模型时-

import json
import os
import sys
sys.path.append('/mnt/access')
import numpy as np
import pandas as pd
import tensorflow as tf
import sent2vec
from nltk import word_tokenize
import nltk

efs_path = "/mnt/access"
model_path = os.path.join(efs_path, 'models/BioSentVec_PubMed_MIMICIII-bigram_d700.bin')

model = sent2vec.Sent2vecModel()
try:
    model.load_model(model_path)
    print('BioSentVec model successfully loaded')
except Exception as e:
    print(e)

lambda说-

在完成请求之前退出流程

当我查看cloudwatch日志时,看到以下错误-

在抛出'std :: bad_alloc'实例后调用

terminate

我还尝试过从EFS上相同的models目录中的lambda内部加载一个简单的文本文件,效果很好。

有人可以告诉我发生了什么事,并指出解决方案吗?

谢谢

0 个答案:

没有答案