У нас есть производственный сценарий с пользователями, использующими дорогие функции НЛП, работающие в течение коротких периодов времени (скажем, 30 с). Из-за высокой нагрузки и периодического использования мы рассматриваем развертывание функции Lambda. Однако - наши пакеты большие.
Я пытаюсь приспособить AllenNLP к лямбда-функции, которая, в свою очередь, зависит от pytorch, scipy, spacy и numpy и нескольких других библиотек.
Что я пробовал
В соответствии с рекомендациями, сделанными здесь и примером здесь , тесты и дополнительные файлы удалены. Я также использую версию Pytorch без Cuda, которая уменьшает его размер. Я могу упаковать развертывание AllenNLP примерно до 512 МБ. В настоящее время она все еще слишком велика для AWS Lambda.
Возможные исправления?
Мне интересно, есть ли у кого-нибудь опыт работы с одним из следующих потенциальных путей:
Вырезание PyTorch из AllenNLP. Без Pytorch мы достигли 250мб. Нам нужно только загружать заархивированные модели в производство, но похоже, что они используют некоторую инфраструктуру PyTorch. Может быть есть альтернативы?
Вызов PyTorch в (ветвь) AllenNLP в качестве второй лямбда-функции.
Использование S3 для доставки некоторых зависимостей: SIMlinking некоторых больших файлов .so
и их обслуживание из корзины S3 может помочь. Это создает дополнительную проблему: для маркировки ролей Semnati c, которую мы используем от AllenNLP, также требуются некоторые языковые модели объемом около 500 МБ, для которых может использоваться эфемерное хранилище - но, может быть, они могут передаваться напрямую в ОЗУ из S3?
Возможно, я упускаю простое решение. Любое направление или опыт будет высоко ценится!