Вы разработали модель, которая кажется точной и может отлично работать в реальном мире. Вы хотите протестировать свою модель в реальном мире. Пришло время интегрироваться с реальными приложениями, что требует масштабируемого отклика в реальном времени. Вы представляете, AWS Lambda придет на помощь, чтобы сэкономить ваши затраты, и вы сможете масштабироваться по мере увеличения спроса на модель ИИ. Мы на правильном пути, так как вы решили перейти на бессерверную версию.

Но есть еще несколько вещей, которые следует учитывать:

  1. Ваша модель должна быть сгенерирована повторно в режиме реального времени, и как только данные поступят, модель может быть сгенерирована повторно с использованием дополнительных данных.
  2. Механизм обратной связи также необходим для корректировки модели, если ошибка в точности начинает увеличиваться.
  3. Возможно, вы захотите протестировать различные модели, и это не единственная модель, которую вы собираетесь развернуть. Из 20 моделей обычно удается 1.

После того, как вы зададите эти вопросы, вам может потребоваться полностью переосмыслить генерацию модели, а иногда уже слишком поздно это делать. Таким образом, лучше заранее иметь стратегию генерации моделей, чтобы ваши запланированные API-интерфейсы ИИ могли материализоваться. Ниже приведены несколько моментов, которые вам не следует делать (или пересматривать) при развертывании ИИ на AWS.

  1. Без разделения логики генерации моделей и API

Идеального ответа не существует, так как генерация модели отличается для разных вариантов использования. Например, ваша модель состоит в том, чтобы определить меняющиеся темы о том, какие твиты Дональда Трампа, чтобы понять, как развиваются ваши твиты Дональда Трампа. В этом случае матрицу сходства необходимо обновлять после каждого твита.

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

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

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

давайте возьмем пример Сходства LSI, который является более быстрым способом создания по сравнению с другими моделями тематического моделирования из моего примера Анализ твитов Дональда Трампа.

Как вы обнаружите, при написании специфичной для модели функции в AWS lambda в этом случае вам нужно загрузить пакет gensim, и каждый раз, когда вызывается API, gensim должен быть загружен и выполнять это операция. Это стоило времени выполнения AWS lambda и увеличивало расходы на AWS lambda.

Таким образом, решение может быть знакомым: отделите код API от кода модели, который может загружать некоторые файлы из S3 и вызывать DynamoDB для получения метаданных. В приведенном выше примере мы создали общий код анализа твитов для любой личности. Каждый твит может иметь индекс сходства, отсортированный по убыванию, который можно сохранить в другом файле и загрузить на S3. После загрузки в S3 к нему может получить доступ Lambda, так как аналогичные метаданные твита можно получить из DynamoDB. (Выбор DynamoDB основан на каждом доступе к нему, и у вас могут быть лучшие способы доступа к одним и тем же данным)

2. Использование API Gateway для A/B-тестирования

Развертывание новой среды A/B-тестирования может быть громоздким и проблематичным. Если API-интерфейсы вашей модели развернуты на шлюзе API вместо среды A/B-тестирования, и вы хотите использовать взвешенную политику Route 53, это может быть проблематично. API Gateway не поддерживает взвешенную политику Route 53 и не предназначен для A/B-тестирования.

Чтобы спасти эту ситуацию, AWS разрешил вызывать функцию Lambda с помощью ELB. ELB немного медленнее по сравнению со шлюзом API, но позволяет проводить A/B-тестирование. Настройте ELB для вызова функции Lambda, используя правила «ELB».

Заполните DNS-имя в наборе записей типа CNAME в Route53 и выберите политику маршрутизации «Взвешенная» с существующей моделью DNS как 80 и сложной как 20.

3.Включение кэширования там, где оно не требуется

Если ваша модель обновляется, как только контент публикуется, размещение файлов, сгенерированных моделью, в кэше будет проблематичным, поскольку кэш будет сохранять старые файлы на основе времени жизни. На ваши показатели CTR повлияет, если пользователь продолжит доступ к старым файлам из кеша, в то время как модели обновились. Более простым и безопасным решением является наличие Lambda в VPC, что обеспечивает более быструю передачу файлов с S3 на AWS Lambda. Однако, если в вашем VPC недостаточно ENI или IP-адресов подсети, ваша функция Lambda не будет масштабироваться по мере увеличения запросов, и вы увидите увеличение количества ошибок вызова с типами ошибок EC2, такими как EC2ThrottledException.. В этом случае кэширование с правильной конфигурацией TTL необходимо быть запланированным, и это не легко.

4. Создание модели на одном экземпляре

Если ваша генерация модели выполняется в одном экземпляре, вам, вероятно, понадобится механизм очередей, в котором ваши коды генерации модели извлекают данные и генерируют модели. SQS — это ответ, но он не будет достаточно масштабируемым, если вы получаете тысячи контента в минуту. Если конвейер загрузки в реальном времени создает достаточный объем данных, например, если данные передаются из Kinesis или Kafka, лучшим подходом будет создание модели на Контейнеры вместо одного экземпляра. FarGate предоставляет решение, в котором вы можете вызывать код генерации модели в каждом контейнере, и он управляется AWS.



5. Отказ от пометки ответа модели

Когда вы проводите A/B-тестирование, пользователь не знает, от какой модели исходит ответ. Модули отслеживания событий, такие как Google Analytics или Comscore, ожидают, что будут сделаны теги, чтобы вы могли отслеживать событие клика или события PageView. Таким образом, важно, чтобы в вашем ответе API вы отправили описание модели, которое вы можете однозначно идентифицировать и которое можно использовать для отслеживания CTR и просмотров страниц.

6. Изобретение велосипеда заново

AWS поставляется с различными сервисами ИИ, и развертывание собственной модели ИИ может быть ошибкой, если вы не оценили все существующие сервисы ИИ в облаке. Если у вас нет надежного варианта использования, вам следует избегать развертывания собственной модели. Даже у AWS могут отсутствовать соответствующие сервисы, сервисы машинного обучения Google и Azure достаточно сильны и могут быть вызваны в AWS.

Amazon Machine Learning предоставляет простой механизм прогнозирования шаблонов на основе заданного набора данных. Amazon Comprehend предоставляет механизм для анализа настроений и моделирования тем с использованием LDA.

Ниже приведены несколько руководств и ссылок, которые вы можете попробовать: