Как запустить код Python на AWS лямбда с зависимостями пакетов> 500 МБ? - PullRequest
2 голосов
/ 02 апреля 2019

Требуется, чтобы мне приходилось запускать конечную точку SageMaker на лямбде, чтобы получить прогнозы (что легко), но мне пришлось выполнить некоторую дополнительную обработку для значения переменной, используя пакеты, такие как XGBoost и SHAP.

Я могу достичь конечной точки и получить переменную важность с помощью ноутбука SageMaker Jupyter. Теперь я хочу повторить то же самое на лямбде AWS.

1) Как запустить код Python в лямбда-коде AWS с зависимостями пакетов для Pandas, XGBoost и SHAP (общий размер пакета превышает 500 МБ) . Размер распакованного пакета развертывания превышает 250 МБ, поэтому лямбда не позволяет выполнять развертывание. Я даже пытался использовать лямбда-функцию из Cloud9 и получил ту же ошибку из-за ограничений по размеру. Я также попробовал лямбда-слои, но не повезло.

2) Могу ли я запустить код с такими большими пакетами на или через лямбду, минуя ограничение размера пакета развертывания 250 МБ

3) Есть ли способ запустить выполнение ноутбука SageMaker через лямбду, который будет выполнять вычисления и возвращать вывод обратно в лямбду?

Ответы [ 3 ]

3 голосов
/ 02 апреля 2019

Попробуйте загрузить свои зависимости в лямбда-слой.К вашему сведению: https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html

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

Стандарт, которому я всегда следую, это то, что я никогда не отправляю библиотеки или внешние пакеты с моей лямбда-функцией, я всегда создаю слои.

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

Ваша проблема может быть решена, если вы упакуете каждую зависимость, а именно Pandas, XGBoost и SHAP, в их собственный Lambda Layerи прикрепить его к вашей функции.

Узнайте больше о лямбда-слоях в документах

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

Вы можете попробовать использовать SageMaker Inference Pipelines для предварительной обработки перед тем, как делать реальные прогнозы.По сути, вы можете использовать тот же сценарий предварительной обработки, который использовался для обучения выводу.При развертывании модели конвейера полный набор контейнеров с задачами предварительной обработки устанавливается и запускается на каждом экземпляре EC2 в конечной точке или задании преобразования.Обработка объектов и вывод выполняются с низкой задержкой, поскольку контейнеры, развернутые в конвейере вывода, размещаются в одном и том же экземпляре EC2 (конечная точка).Вы можете обратиться к документации здесь .

Следующие записи в блогах / записные книжки подробно описывают эту функцию

...