Мониторинг прогнозов машинного обучения (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
каталог
- Вход в Amazon ECR:
- Создайте репозиторий в Amazon ECR:
aws ecr create-repository
repository-name serverless-ml-model-monitor
--image-scanning-configuration scanOnPush=true
--region us-east-1
- Отправьте образ контейнера в Amazon ECR:
- Раскомментируйте строку №1 в приложение/Dockerfile и отредактируйте его так, чтобы он указывал на правильный образ репозитория ECR, затем раскомментируйте строки №6 и №7 в приложение/Dockerfile:
- Снова создайте приложение:
Мы создаем заново, потому что Lambda не поддерживает слои Lambda напрямую для типа упаковки образа контейнера. Нам нужно сначала создать компонент мониторинга модели в виде образа контейнера, загрузить его в Amazon ECR, а затем использовать это изображение в приложении мониторинга модели в качестве слоя контейнера.
- Наконец, разверните функцию Lambda, шлюз API и расширение:
Эта команда упаковывает и развертывает ваше приложение на 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. Например:
Вы должны увидеть вывод, подобный следующему коду. Модель машинного обучения выведена из контекста и дала ответ на наш вопрос.
Через несколько минут вы должны увидеть файл в корзине S3. nlp-qamodel-model-monitoring-modelmonitorbucket-
с записью ввода и вывода.
Убирать
Чтобы удалить созданный вами пример приложения, используйте интерфейс командной строки AWS:
Заключение
В этом посте мы реализовали функцию мониторинга модели в виде расширения Lambda и развернули ее в рабочей нагрузке вывода Lambda ML. Мы показали, как создать и развернуть это решение в вашей учетной записи AWS. Наконец, мы показали, как запустить тест для проверки функциональности монитора.
Пожалуйста, высказывайте любые мысли или вопросы в разделе комментариев. Дополнительные ресурсы для бессерверного обучения см. на странице Земля без серверов.
Об авторах
И лиса является главным специалистом-архитектором решений во Всемирной организации специалистов по бессерверным технологиям. Дэн работает с клиентами, помогая им использовать бессерверные сервисы для создания масштабируемых, отказоустойчивых, высокопроизводительных и экономичных приложений. Дэн благодарен за возможность жить и работать в прекрасном Боулдере, штат Колорадо.
Ньютон Джайн — старший менеджер по продукту, отвечающий за создание новых возможностей для клиентов машинного обучения, высокопроизводительных вычислений (HPC) и обработки мультимедиа в AWS Lambda. Он возглавляет разработку новых возможностей для повышения производительности, уменьшения задержек, улучшения масштабируемости, повышения надежности и снижения затрат. Он также помогает клиентам AWS определить эффективную бессерверную стратегию для их приложений с интенсивными вычислениями.
Дикша Шарма — архитектор решений и специалист по машинному обучению в AWS. Она помогает клиентам ускорить внедрение облачных технологий, особенно в области машинного обучения и бессерверных технологий. Дикша развертывает индивидуальные проверки концепции, которые показывают клиентам ценность AWS для решения их бизнес-задач и ИТ-задач. Она знакомит клиентов с AWS и работает вместе с ними над созданием желаемого решения.
Веда Раман является старшим специалистом по разработке решений для машинного обучения из Мэриленда. Веда работает с клиентами, помогая им создавать эффективные, безопасные и масштабируемые приложения машинного обучения. Веда заинтересована в том, чтобы помочь клиентам использовать бессерверные технологии для машинного обучения.
Джош Кан — мировой технологический лидер в области бессерверных технологий и главный архитектор решений. Он возглавляет глобальное сообщество экспертов по бессерверным технологиям в AWS, которые помогают клиентам любого размера, от стартапов до крупнейших мировых предприятий, эффективно использовать бессерверные технологии AWS.
- AI
- ай искусство
- генератор искусств ай
- искусственный интеллект
- искусственный интеллект
- сертификация искусственного интеллекта
- искусственный интеллект в банковском деле
- робот с искусственным интеллектом
- роботы с искусственным интеллектом
- программное обеспечение искусственного интеллекта
- AWS Lambda
- Машинное обучение AWS
- блокчейн
- конференция по блокчейну
- Coingenius
- разговорный искусственный интеллект
- криптоконференция ИИ
- дал-и
- глубокое обучение
- google ai
- обучение с помощью машины
- Платон
- Платон Ай
- Платон Интеллектуальные данные
- Платон игра
- ПлатонДанные
- платогейминг
- масштаб ай
- синтаксис
- Технические инструкции
- зефирнет