Мне нужно развернуть модель глубокого обучения на AWS Lambda, которая выполняет обнаружение объектов. Он запускается при добавлении изображения в корзину S3. Проблема, с которой я сталкиваюсь, заключается в том, что код функции Lambda использует множество библиотек, таких как Tensorflow, PIL, Numpy, Matplotlib и т. Д., И если я попытаюсь добавить их все в код функции или в виде слоев, он превышает 250 МБ ограничение по размеру. Есть ли способ развернуть zip-файл библиотек в ведре S3 и использовать их оттуда в коде функции (написанном на Python 3.6) вместо того, чтобы напрямую использовать их как часть кода? Я также могу попробовать для этого совершенно другой подход.
Импорт библиотек в код функции AWS Lambda из корзины S3
Ответы (3)
Мне кажется, что Amazon SageMaker будет лучшим выбором для вашей задачи.
Вы можете создать модель и разместить ее на конечной точке через SageMaker. Используйте лямбда-функцию, запускаемую загрузкой s3, чтобы передать изображение в конечную точку SageMaker и обработать результат.
Amazon SageMaker - это полностью управляемый сервис, который предоставляет каждому разработчику и специалисту по обработке данных возможность быстро создавать, обучать и развертывать модели машинного обучения (ML). SageMaker устраняет тяжелую нагрузку на каждом этапе процесса машинного обучения, чтобы упростить разработку высококачественных моделей.
https://aws.amazon.com/sagemaker/
Попробуйте предварительно скомпилированные пакеты для Tensorflow, они занимают около 50 МБ, у вас, вероятно, будет достаточно места для остальных необходимых вам модулей. И вообще, проверьте Рекомендации AWS по подходам к архитектуре глубокого обучения.
В конце концов, я изменил свой подход с использования Lambda на использование EC2. Я развернул весь код с библиотеками на экземпляре EC2, а затем запустил его с помощью Lambda. На EC2 его также можно развернуть на сервере Apache для изменения сопоставления портов.