Можно ли использовать Zappa Update с выходным пакетом из Zappa Package? - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь загрузить модель на AWS лямбду, используя Zappa. Проблема в том, что общий размер разархивированного файла из пакета, созданного Zappa и загруженного на S3, составляет около 550 МБ, что превышает ограничение. Одним из пакетов, которые я использую, является Spacy (очень большая зависимость от NLP), и я могу уменьшить размер этого пакета, удалив вручную неиспользуемые языки в папке lang. Делая это, я могу получить разархивированный размер файла до 500 МБ. Проблема в том, что Zappa автоматически загружает полную версию Spacy (spacy == 2.1.4: Использование локально кэшированного колеса manylinux) при развертывании и обновлении.

Я узнал, что я могу позвонить в Zappa Package, и он сгенерирует пакет, который я смогу загрузить сам. Я разархивировал сгенерированный пакет и удалил ненужные файлы lang, а затем снова заархивировал его. Могу ли я позвонить в Zappa Deploy / Update и использовать модифицированный пакет и обработчик, созданный Zappa Package? Таким образом, Zappa все еще может справиться с развертыванием.

1 Ответ

0 голосов
/ 02 июля 2019

Для меня следующие две вещи устранили эту проблему:

  1. AWS Lambda требует, чтобы максимальный размер вашей среды составлял 50 МБ, но наша упакованная среда будет составлять около 100 МБ. К счастью для нас, Lambda может загружать код из Amazon S3 без особых потерь производительности (всего несколько миллисекунд).

Чтобы активировать эту функцию, вы должны добавить новую строку в ваш zappa_settings.json

"slim_handler": true
  1. Установка только spacy с и , а не языковых пакетов (python3 -m spacy download en). После этого я вручную загрузил языковой пакет на S3, а затем загрузил «модель» пространственного языка, подобную описанной здесь: Ошибка ввода-вывода функции загрузки Sklearn joblib из AWS S3
...