Как развернуть большие пакеты Python с AWS Lambda? - PullRequest
0 голосов
/ 24 мая 2018

Мне нужен совет.

Я обучил классификатор изображений с помощью Tensorflow и хотел развернуть его на AWS Lambda с использованием без сервера .Каталог включает в себя модель, некоторые модули Python, включая Tennsflow и Numpy, и код Python.Размер полной папки перед распаковкой составляет 340 МБ, которая отклоняется AWS lambda с сообщением об ошибке "The unzipped state must be smaller than 262144000 bytes".

Как мне к этому подойти?Могу ли я не развертывать подобные пакеты в AWS Lambda?

Примечание. В файле needs.txt перечислены 2 модуля, включая numpy и tenorflow.(Tensorflow - большой модуль)

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Лучший способ сделать это - использовать Serverless Framework , как описано в этой статье .Это помогает архивировать их, используя образ докера, который имитирует среду Linux linux.Кроме того, он автоматически использует S3 в качестве хранилища кода для вашей Lambda, что увеличивает ограничение по размеру.Представленная статья является чрезвычайно полезным руководством, и разработчики используют в AWS tenorflow и другие большие библиотеки.

Если вы все еще работаете с ограничением размера в 250 МБ, попробуйте выполнить эта статья , которая использует тот же python-requirements-plugin, что и предыдущая статья, но с опцией -slim: true.Это поможет вам оптимально сжать ваши пакеты, удалив из них ненужные файлы, что позволит вам уменьшить размер вашего пакета до и после разархивирования.

0 голосов
/ 11 апреля 2019

Я знаю, что отвечаю на это очень поздно ... просто поместил его здесь для справки для других людей ... Я сделал следующие вещи -

  1. Удалить / external / * / tenorflow / contrib / */ tenorflow / include / unsupported / * файлы в соответствии с предложением здесь .
  2. Удалить все файлы .so, особенно два файла в site-packages / numpy / core - _multiarray_umath.cpython-36m-x86_64-linux-gnu.so и _multiarray_tests.cpython-36m-x86_64-linux-gnu.so.Полоска значительно уменьшает их размер.
  3. Вы можете поместить свою модель в корзину S3 и загрузить ее во время выполнения.Это уменьшит размер почтового индекса.Это подробно объясняется здесь .

Если это не работает, то есть некоторые дополнительные вещи, которые могут быть сделаны, такие как удаление файлов pyc и т. Д., Как упоминалось здесь

0 голосов
/ 24 мая 2018

Возможно, вы можете использовать емкость эфемерного диска (/ tmp) с ограничением в 512 МБ, но в вашем случае проблема с памятью все равно будет.

Наилучшим выбором может быть использование пакета AWS, если безсерверное управление им не удается, вы даже можете оставить лямбду, чтобы запустить пакет

...