Как обойти AWS упаковки и кратковременные ограничения для больших пакетов + больших моделей - PullRequest
0 голосов
/ 16 января 2020

У нас есть производственный сценарий с пользователями, использующими дорогие функции НЛП, работающие в течение коротких периодов времени (скажем, 30 с). Из-за высокой нагрузки и периодического использования мы рассматриваем развертывание функции Lambda. Однако - наши пакеты большие.

Я пытаюсь приспособить AllenNLP к лямбда-функции, которая, в свою очередь, зависит от pytorch, scipy, spacy и numpy и нескольких других библиотек.

Что я пробовал

В соответствии с рекомендациями, сделанными здесь и примером здесь , тесты и дополнительные файлы удалены. Я также использую версию Pytorch без Cuda, которая уменьшает его размер. Я могу упаковать развертывание AllenNLP примерно до 512 МБ. В настоящее время она все еще слишком велика для AWS Lambda.

Возможные исправления?

Мне интересно, есть ли у кого-нибудь опыт работы с одним из следующих потенциальных путей:

  1. Вырезание PyTorch из AllenNLP. Без Pytorch мы достигли 250мб. Нам нужно только загружать заархивированные модели в производство, но похоже, что они используют некоторую инфраструктуру PyTorch. Может быть есть альтернативы?

  2. Вызов PyTorch в (ветвь) AllenNLP в качестве второй лямбда-функции.

  3. Использование S3 для доставки некоторых зависимостей: SIMlinking некоторых больших файлов .so и их обслуживание из корзины S3 может помочь. Это создает дополнительную проблему: для маркировки ролей Semnati c, которую мы используем от AllenNLP, также требуются некоторые языковые модели объемом около 500 МБ, для которых может использоваться эфемерное хранилище - но, может быть, они могут передаваться напрямую в ОЗУ из S3?

Возможно, я упускаю простое решение. Любое направление или опыт будет высоко ценится!

1 Ответ

1 голос
/ 16 января 2020

Вы можете развернуть свои модели в SageMaker внутри AWS и запустить Lambda -> Sagemaker, чтобы избежать необходимости загружать очень большие функции внутри Lambda.

Архитектура, объясненная здесь - https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/

...