Импорт библиотек в код функции AWS Lambda из корзины S3

Мне нужно развернуть модель глубокого обучения на AWS Lambda, которая выполняет обнаружение объектов. Он запускается при добавлении изображения в корзину S3. Проблема, с которой я сталкиваюсь, заключается в том, что код функции Lambda использует множество библиотек, таких как Tensorflow, PIL, Numpy, Matplotlib и т. Д., И если я попытаюсь добавить их все в код функции или в виде слоев, он превышает 250 МБ ограничение по размеру. Есть ли способ развернуть zip-файл библиотек в ведре S3 и использовать их оттуда в коде функции (написанном на Python 3.6) вместо того, чтобы напрямую использовать их как часть кода? Я также могу попробовать для этого совершенно другой подход.


person Avani Jindal    schedule 14.01.2020    source источник
comment
Как насчет разделения пакетов на несколько слоев лямбда, в котором может быть до 5 слоев?   -  person SangminKim    schedule 14.01.2020
comment
@SangminKim Общий лимит в 250 МБ включает размер кода функции вместе со слоями   -  person Avani Jindal    schedule 14.01.2020


Ответы (3)


Мне кажется, что Amazon SageMaker будет лучшим выбором для вашей задачи.

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

Amazon SageMaker - это полностью управляемый сервис, который предоставляет каждому разработчику и специалисту по обработке данных возможность быстро создавать, обучать и развертывать модели машинного обучения (ML). SageMaker устраняет тяжелую нагрузку на каждом этапе процесса машинного обучения, чтобы упростить разработку высококачественных моделей.

https://aws.amazon.com/sagemaker/

person Callum McClean    schedule 14.01.2020

Попробуйте предварительно скомпилированные пакеты для Tensorflow, они занимают около 50 МБ, у вас, вероятно, будет достаточно места для остальных необходимых вам модулей. И вообще, проверьте Рекомендации AWS по подходам к архитектуре глубокого обучения.

person Yann    schedule 14.01.2020
comment
Предварительно скомпилированные пакеты предназначены для Python 2.7 и не обеспечивают подходящей среды выполнения для Python 3.x. - person Avani Jindal; 14.01.2020

В конце концов, я изменил свой подход с использования Lambda на использование EC2. Я развернул весь код с библиотеками на экземпляре EC2, а затем запустил его с помощью Lambda. На EC2 его также можно развернуть на сервере Apache для изменения сопоставления портов.

person Avani Jindal    schedule 24.01.2020
comment
Это больше не нужно. Все типы моделей AWS Lambda и ML теперь довольно просты в использовании, см. Здесь: aws.amazon.com/blogs/machine-learning/ - person janbauer; 26.02.2021
comment
@janbauer Я давно решил свою проблему, но спасибо вам за это! :) - person Avani Jindal; 26.02.2021