Ошибка инициализации модуля модели AWS Lambda Boto gensim: __exit__ - PullRequest
0 голосов
/ 01 октября 2019

Размещение модели word2vec с помощью gensim на AWS lambda

с использованием python 2.7 boto == 2.48.0 gensim == 3.4.0

, и у меня есть несколько строк в моей функции.pyфайл, в который я загружаю модель напрямую из s3

print('################### connecting to s3...')
s3_conn = boto.s3.connect_to_region(
        region,
        aws_access_key_id = Aws_access_key_id,
        aws_secret_access_key = Aws_secret_access_key,
        is_secure = True,
        calling_format = OrdinaryCallingFormat()
        )
print('################### connected to s3...')
bucket = s3_conn.get_bucket(S3_BUCKET)
print('################### got bucket...')
key = bucket.get_key(S3_KEY)
print('################### got key...')
model =  KeyedVectors.load_word2vec_format(key, binary=True)
print('################### loaded model...')

в строке загрузки модели

    model =  KeyedVectors.load_word2vec_format(key, binary=True)

, получая загадочную ошибку без особых подробностей:

в облакея могу видеть все мои печатные сообщения до '################### получил ключ ...' включительно, затем я получаю:

START RequestId: {req_id} Version: $LATEST 

затемсразу после этого [нет задержек между этими двумя сообщениями]

module initialization error: __exit__ 

пожалуйста, есть ли способ получить подробную ошибку или дополнительную информацию?

Дополнительные сведения: Я смогзагрузите модель из s3 в / tmp /, и она действительно авторизовала и извлекла файл модели, но она вышла за пределы [файл равен ~ 2 ГБ, / tmp / равен 512 МБ]

, поэтому переключился на прямую загрузкуМодель Gensim, как указано выше, и теперь получает эту загадочную ошибку.

Запуск функции с python-lambda-local работает без проблем

итак, это, вероятно, сужает проблему с умным открытием gensim или aws lambda, буду благодарен за любые подсказки, спасибо!

1 Ответ

1 голос
/ 01 октября 2019

вместо подключения с помощью boto, просто:

model = KeyedVectors.load_word2vec_format('s3://{}:{}@{}/{}'.format(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, S3_BUCKET, S3_KEY), binary=True)

сработало!

но, конечно, к сожалению, это не дает ответа на вопрос, почему загадочный выход возникла ошибка и как получить больше информации: /

...