#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.