Разверните решение для сбора данных машинного обучения в AWS Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Разверните решение для сбора данных для логического вывода на основе машинного обучения на AWS Lambda

Мониторинг прогнозов машинного обучения (ML) может помочь улучшить качество развернутых моделей. Сбор данных на основе выводов, сделанных в рабочей среде, позволит вам отслеживать развернутые модели и обнаруживать отклонения в качестве моделей. Раннее и упреждающее обнаружение этих отклонений позволяет вам предпринимать корректирующие действия, такие как переобучение моделей, аудит вышестоящих систем или устранение проблем с качеством.

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

В декабре 2020 года Lambda представила поддержку образов контейнеров как формата упаковки. Эта функция увеличила предельный размер пакета развертывания с 500 МБ до 10 ГБ. До запуска этой функции ограничение размера пакета затрудняло развертывание фреймворков машинного обучения, таких как TensorFlow или PyTorch, для функций Lambda. После запуска увеличенный лимит размера пакета сделал машинное обучение жизнеспособной и привлекательной рабочей нагрузкой для развертывания в Lambda. В 2021 году вывод машинного обучения был одним из самых быстрорастущих типов рабочей нагрузки в сервисе Lambda.

Создатель мудреца Амазонки, полностью управляемый сервис машинного обучения Amazon, содержит собственную функцию мониторинга моделей. Однако пример проекта в этой публикации показывает, как выполнить сбор данных для использования в мониторинге модели для клиентов, которые используют Lambda для вывода ML. В проекте используются расширения Lambda для сбора данных вывода, чтобы минимизировать влияние на производительность и задержку функции вывода. Использование расширений Lambda также сводит к минимуму влияние на разработчиков функций. Благодаря интеграции через расширение функция мониторинга может применяться к нескольким функциям и поддерживаться централизованной командой.

Обзор решения

Этот проект содержит исходный код и вспомогательные файлы для бессерверного приложения, которое обеспечивает вывод в реальном времени с использованием предварительно обученной модели ответов на вопросы на основе дистиллята. В проекте используется модель обработки естественного языка (НЛП) «Обнимающее лицо» с PyTorch выполнять задачи вывода на естественном языке. Проект также содержит решение для сбора данных вывода для прогнозов модели. Разработчик функции Lambda может точно определить, какие данные из входных данных запроса вывода и результата прогнозирования следует отправить в расширение. В этом решении мы отправляем входные данные и ответ из модели в расширение. Затем расширение периодически отправляет данные на Простой сервис хранения Amazon (Amazon S3) ведро. Мы создаем расширение сбора данных в виде образа контейнера, используя makefile. Затем мы создаем функцию вывода Lambda как образ контейнера и добавляем изображение контейнера расширения в качестве слоя изображения контейнера. На следующей диаграмме показан обзор архитектуры.

Расширения Lambda — это способ расширить функции Lambda. В этом проекте мы используем внешнее расширение Lambda для регистрации запроса на вывод и прогноза на основе вывода. Внешнее расширение выполняется как отдельный процесс в среде выполнения Lambda, что снижает влияние на функцию вывода. Однако функция совместно использует такие ресурсы, как ЦП, память и хранилище, с функцией Lambda. Мы рекомендуем выделить достаточно памяти для функции Lambda, чтобы обеспечить оптимальную доступность ресурсов. (В ходе нашего тестирования мы выделили 5 ГБ памяти для функции вывода Lambda и увидели оптимальную доступность ресурсов и задержку вывода). После завершения вывода служба Lambda немедленно возвращает ответ и не ждет, пока расширение завершит регистрацию запроса и ответа в корзине S3. При использовании этого шаблона расширение мониторинга не влияет на задержку вывода. Чтобы узнать больше о расширениях Lambda посмотрите эти серии видео.

Содержание проекта

В этом проекте используется Модель безсерверного приложения AWS (AWS SAM) интерфейс командной строки (CLI). Этот инструмент командной строки позволяет разработчикам инициализировать и настраивать приложения; упаковывайте, собирайте и тестируйте локально; и развернуть в облаке AWS.

Вы можете скачать исходный код этого проекта по адресу репозиторий GitHub.

Этот проект включает в себя следующие файлы и папки:

  • приложение/app.py – Код для функции Lambda приложения, включая код для вывода ML.
  • приложение/Dockerfile – Dockerfile для создания образа контейнера, содержащего функцию вывода, модель, загруженную с Hugging Face, и расширение Lambda, созданное в виде слоя. В отличие от функций .zip, слои нельзя прикрепить к функциям Lambda, упакованным в контейнер, во время создания функции. Вместо этого мы создаем слой и копируем его содержимое в образ контейнера.
  • Расширения – Файлы расширения монитора модели. Это расширение Lambda используется для регистрации входных данных в функцию вывода и соответствующего прогноза в корзину S3.
  • приложение/модель – Модель скачана с Hugging Face.
  • приложение/requirements.txt – Зависимости Python, которые необходимо установить в контейнер.
  • События – События вызова, которые можно использовать для тестирования функции.
  • шаблон.yaml – Файл дескриптора, определяющий ресурсы AWS приложения.

Приложение использует несколько ресурсов AWS, включая функции Lambda и Шлюз API Amazon API. Эти ресурсы определены в template.yaml файл в этом проекте. Вы можете обновить шаблон, чтобы добавить ресурсы AWS, используя тот же процесс развертывания, который обновляет код вашего приложения.

Предпосылки

Для этого прохождения у вас должны быть следующие предпосылки:

Развертывание примера приложения

Чтобы создать приложение в первый раз, выполните следующие шаги:

  • Запустите следующий код в своей оболочке. (Это также создаст расширение):
  • Создайте образ Docker приложения монитора модели. Содержимое сборки находится в папке .aws-sam каталог
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Вход в Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Создайте репозиторий в Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • Отправьте образ контейнера в Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Раскомментируйте строку №1 в приложение/Dockerfile и отредактируйте его так, чтобы он указывал на правильный образ репозитория ECR, затем раскомментируйте строки №6 и №7 в приложение/Dockerfile:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Снова создайте приложение:

Мы создаем заново, потому что Lambda не поддерживает слои Lambda напрямую для типа упаковки образа контейнера. Нам нужно сначала создать компонент мониторинга модели в виде образа контейнера, загрузить его в Amazon ECR, а затем использовать это изображение в приложении мониторинга модели в качестве слоя контейнера.

  • Наконец, разверните функцию Lambda, шлюз API и расширение:
sam deploy --guided

Эта команда упаковывает и развертывает ваше приложение на AWS с помощью ряда подсказок:

  • Название стека : Имя развернутого AWS CloudFormation куча. Оно должно быть уникальным для вашей учетной записи и региона, и хорошей отправной точкой будет что-то, соответствующее названию вашего проекта.
  • AWS Регион : регион AWS, в котором вы развертываете свое приложение.
  • Подтвердите изменения перед развертыванием : Если установлено yes, любые наборы изменений отображаются перед запуском проверки вручную. Если установлено значение «нет», интерфейс командной строки AWS SAM автоматически развертывает изменения приложения.
  • Разрешить создание роли AWS SAM CLI IAM : Многие шаблоны AWS SAM, включая этот пример, создают Управление идентификацией и доступом AWS (IAM), необходимые для включения функций Lambda для доступа к сервисам AWS. По умолчанию они ограничены минимальными необходимыми разрешениями. Чтобы развернуть стек CloudFormation, который создает или изменяет роли IAM, CAPABILITY_IAM значение для capabilities должно быть предоставлено. Если разрешение не предоставлено в этом приглашении, для развертывания этого примера необходимо явно передать --capabilities CAPABILITY_IAM до sam deploy команда.
  • Сохраните аргументы в samconfig.toml. : Если установлено yesваш выбор сохраняется в файле конфигурации внутри проекта, чтобы в будущем вы могли просто запустить sam deploy без параметров для развертывания изменений в вашем приложении.

URL-адрес конечной точки шлюза API можно найти в выходных значениях, отображаемых после развертывания.

Протестируйте приложение

Чтобы протестировать приложение, используйте Postman или Curl для отправки запроса к конечной точке шлюза API. Например:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

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

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

Через несколько минут вы должны увидеть файл в корзине S3. nlp-qamodel-model-monitoring-modelmonitorbucket- с записью ввода и вывода.

Убирать

Чтобы удалить созданный вами пример приложения, используйте интерфейс командной строки AWS:

aws cloudformation delete-stack --stack-name 

Заключение

В этом посте мы реализовали функцию мониторинга модели в виде расширения Lambda и развернули ее в рабочей нагрузке вывода Lambda ML. Мы показали, как создать и развернуть это решение в вашей учетной записи AWS. Наконец, мы показали, как запустить тест для проверки функциональности монитора.

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


Об авторах

Разверните решение для сбора данных машинного обучения в AWS Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.И лиса является главным специалистом-архитектором решений во Всемирной организации специалистов по бессерверным технологиям. Дэн работает с клиентами, помогая им использовать бессерверные сервисы для создания масштабируемых, отказоустойчивых, высокопроизводительных и экономичных приложений. Дэн благодарен за возможность жить и работать в прекрасном Боулдере, штат Колорадо.

Разверните решение для сбора данных машинного обучения в AWS Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Ньютон Джайн — старший менеджер по продукту, отвечающий за создание новых возможностей для клиентов машинного обучения, высокопроизводительных вычислений (HPC) и обработки мультимедиа в AWS Lambda. Он возглавляет разработку новых возможностей для повышения производительности, уменьшения задержек, улучшения масштабируемости, повышения надежности и снижения затрат. Он также помогает клиентам AWS определить эффективную бессерверную стратегию для их приложений с интенсивными вычислениями.

Разверните решение для сбора данных машинного обучения в AWS Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Дикша Шарма — архитектор решений и специалист по машинному обучению в AWS. Она помогает клиентам ускорить внедрение облачных технологий, особенно в области машинного обучения и бессерверных технологий. Дикша развертывает индивидуальные проверки концепции, которые показывают клиентам ценность AWS для решения их бизнес-задач и ИТ-задач. Она знакомит клиентов с AWS и работает вместе с ними над созданием желаемого решения.

Разверните решение для сбора данных машинного обучения в AWS Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Веда Раман является старшим специалистом по разработке решений для машинного обучения из Мэриленда. Веда работает с клиентами, помогая им создавать эффективные, безопасные и масштабируемые приложения машинного обучения. Веда заинтересована в том, чтобы помочь клиентам использовать бессерверные технологии для машинного обучения.

Разверните решение для сбора данных машинного обучения в AWS Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Джош Кан — мировой технологический лидер в области бессерверных технологий и главный архитектор решений. Он возглавляет глобальное сообщество экспертов по бессерверным технологиям в AWS, которые помогают клиентам любого размера, от стартапов до крупнейших мировых предприятий, эффективно использовать бессерверные технологии AWS.

Отметка времени:

Больше от Машинное обучение AWS