завершающий вызов после создания экземпляра ‘std::bad_alloc’ в AWS EFS при загрузке модели встраивания

#python #amazon-web-services #tensorflow #aws-lambda

#питон #amazon-веб-сервисы #тензорный поток #aws-lambda #python #tensorflow

Вопрос:

Я обучил модель Tensorflow, которая использует встраивания BioSentVec для предварительной обработки входных данных модели. Размер этой модели встраивания составляет 20 ГБ, поэтому я не смог развернуть окончательную модель в AWS Lambda (ограничение по размеру 512 МБ) или в docker (ограничение по размеру 10 ГБ).

Итак, я решил использовать Lambda EFS , и я успешно смог —

  • Смонтировать лямбда-выражение в EFS
  • Загрузите все зависимости и библиотеки (NumPy, pandas, TensorFlow и т. Д.)
  • Загрузите встраивания Biosentvec в EFS из S3 (используя экземпляр EC2)

Теперь, когда я пытаюсь загрузить модель встраивания в лямбда-код, используя следующий код —

 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)
  

Лямбда говорит —

Процесс завершен до завершения запроса

Когда я проверяю журналы cloudwatch, я вижу следующую ошибку —

завершающий вызов после создания экземпляра ‘std::bad_alloc’

Я также попытался загрузить простой текстовый файл внутри lambda из того же models каталога в EFS, и это работает нормально.

Может ли кто-нибудь рассказать мне, что происходит, и указать мне на решение?

Спасибо

Комментарии:

1. Объем памяти Lambda ограничен 3 ГБ, что не имеет никакого отношения к тому, сколько места на диске занято. Похоже, у вас заканчивается память.

2. Ну и что. могу ли я сделать здесь? Могу ли я иметь скрипт python в EFS, который может быть вызван lambda для загрузки модели?

3. Если вам нужно 20 ГБ памяти или больше, вы не можете использовать лямбда. Для этого вам понадобится экземпляр EC2.