Клиенты AWS полагаются на инфраструктуру как код (IaC) для проектирования, разработки и управления своей облачной инфраструктурой. IaC гарантирует согласованность, масштабируемость и воспроизводимость клиентской инфраструктуры и услуг, а также возможность следовать передовым методам в области операций разработки (DevOps).
Одним из возможных подходов к управлению инфраструктурой и сервисами AWS с помощью IaC является Terraform, что позволяет разработчикам организовать свою инфраструктуру в повторно используемых модулях кода. Этот аспект приобретает все большее значение в области машинного обучения (ML). Разработка конвейеров машинного обучения и управление ими, включая обучение и логические выводы с помощью Terraform as IaC, позволяет легко масштабироваться для нескольких вариантов использования машинного обучения или регионов без необходимости разрабатывать инфраструктуру с нуля. Кроме того, он обеспечивает согласованность инфраструктуры (например, тип и размер экземпляра) для обучения и вывода в различных реализациях конвейера машинного обучения. Это позволяет направлять запросы и входящий трафик на разные Создатель мудреца Амазонки конечные точки.
В этом посте мы покажем вам, как развертывать конвейеры машинного обучения и управлять ими с помощью Terraform и Amazon SageMaker.
Обзор решения
В этой публикации представлен код и описаны шаги, необходимые для развертывания инфраструктуры AWS для конвейеров машинного обучения с помощью Terraform для обучения моделей и получения логических выводов с помощью Amazon SageMaker. Конвейер машинного обучения управляется через Шаговые функции AWS для организации различных шагов, реализованных в конвейере машинного обучения, как показано на следующем рисунке.
Step Functions запускает AWS Lambda функцию, генерирующую уникальный идентификатор задания, который затем используется при запуске учебного задания SageMaker. Step Functions также создает модель, конфигурацию конечной точки и конечную точку, используемые для логического вывода. Дополнительные ресурсы включают следующее:
- Управление идентификацией и доступом AWS (IAM) роли и политики, прикрепленные к ресурсам для обеспечения взаимодействия с другими ресурсами.
- Простой сервис хранения Amazon (Amazon S3) сегменты для обучающих данных и результатов модели
- An Реестр Amazon Elastic Container (Amazon ECR) репозиторий для Docker изображение, содержащее логику обучения и вывода
Код, связанный с машинным обучением, для обучения и логического вывода с помощью образа Docker в основном опирается на существующую работу в следующих разделах. Репозиторий GitHub.
Следующая диаграмма иллюстрирует архитектуру решения:
Мы проведем вас через следующие общие этапы:
- Разверните свою инфраструктуру AWS с помощью Terraform.
- Отправьте образ Docker в Amazon ECR.
- Запустите конвейер машинного обучения.
- Вызовите свою конечную точку.
Структура репозитория
Вы можете найти репозиторий, содержащий код и данные, использованные для этого поста, в следующем Репозиторий GitHub.
Репозиторий включает в себя следующие каталоги:
/terraform
– Состоит из следующих подпапок:./infrastructure
– Содержит файл main.tf, вызывающий модуль конвейера машинного обучения, в дополнение к объявлениям переменных, которые мы используем для развертывания инфраструктуры../ml-pipeline-module
– Содержит модуль конвейера Terraform ML, который мы можем использовать повторно.
/src
– Состоит из следующих подпапок:./container
– Содержит пример кода для обучения и вывода с определениями для образа Docker../lambda_function
– Содержит код Python для конфигураций генерации функций Lambda, таких как уникальный идентификатор задания для учебного задания SageMaker.
/data
– Содержит следующий файл:./iris.csv
– Содержит данные для обучения модели ML
Предпосылки
Для этого прохождения у вас должны быть следующие предпосылки:
- Аккаунт AWS
- Terraform версия 0.13.5 или выше
- Интерфейс командной строки AWS (AWS CLI) v2
- Питон 3.7 или больше
- Docker
Разверните свою инфраструктуру AWS с помощью Terraform
Чтобы развернуть конвейер машинного обучения, вам нужно настроить несколько переменных и имен в соответствии с вашими потребностями. Код для этого шага находится в /terraform
каталог.
При инициализации в первый раз откройте файл terraform/infrastructure/terraform.tfvars
и настроить переменную название проекта к названию вашего проекта, помимо переменной область если вы хотите развернуть в другом регионе. Вы также можете изменить дополнительные переменные, такие как типы экземпляров, для обучения и логического вывода.
Затем используйте следующие команды для развертывания инфраструктуры с помощью Terraform:
Проверьте выходные данные и убедитесь, что запланированные ресурсы отображаются правильно, и подтвердите да на этапе применения, если все правильно. Затем перейдите в консоль Amazon ECR (или проверьте выходные данные Terraform в терминале) и получите URL-адрес своего репозитория ECR, созданного с помощью Terraform.
Вывод должен выглядеть примерно так, как показано ниже, включая URL-адрес репозитория ECR:
Отправьте образ Docker в Amazon ECR
Чтобы конвейер машинного обучения и SageMaker могли обучить и подготовить конечную точку SageMaker для логического вывода, вам необходимо предоставить образ Docker и сохранить его в Amazon ECR. Вы можете найти пример в каталоге src/container
. Если вы уже применили инфраструктуру AWS из предыдущего шага, вы можете отправить образ Docker, как описано. После разработки образа Docker вы можете выполнить следующие действия и отправить его в Amazon ECR (настройте URL-адрес Amazon ECR в соответствии со своими потребностями):
Если вы уже применили инфраструктуру AWS с помощью Terraform, вы можете отправить изменения своего кода и образа Docker непосредственно в Amazon ECR без повторного развертывания через Terraform.
Запустите конвейер машинного обучения
Чтобы обучить и запустить конвейер машинного обучения, перейдите в консоль Step Functions и запустите реализацию. Вы можете проверить ход каждого шага в визуализации конечного автомата. Вы также можете проверить ход выполнения задания обучения SageMaker и состояние конечной точки SageMaker.
После успешного запуска конечного автомата в Step Functions вы увидите, что конечная точка SageMaker создана. В консоли SageMaker выберите вывод в панели навигации, затем Endpoints. Обязательно дождитесь изменения статуса на InService.
Вызвать вашу конечную точку
Чтобы вызвать вашу конечную точку (в этом примере для набора данных радужной оболочки), вы можете использовать следующий скрипт Python с AWS SDK для Python (Boto3). Вы можете сделать это из записной книжки SageMaker или внедрить следующий фрагмент кода в функцию Lambda:
Убирать
Вы можете уничтожить инфраструктуру, созданную Terraform, с помощью команды terraform destroy, но сначала вам нужно удалить данные и файлы в корзинах S3. Кроме того, конечная точка SageMaker (или несколько конечных точек SageMaker при многократном запуске) создается с помощью Step Functions и не управляется с помощью Terraform. Это означает, что развертывание происходит при запуске конвейера машинного обучения с пошаговыми функциями. Поэтому обязательно удалите конечную точку SageMaker или конечные точки, созданные с помощью конвейера машинного обучения Step Functions, чтобы избежать ненужных затрат. Выполните следующие шаги:
- В консоли Amazon S3 удалите набор данных в обучающей корзине S3.
- Удалите все модели, которые вы обучили с помощью конвейера машинного обучения, в корзине моделей S3 либо через консоль Amazon S3, либо через интерфейс командной строки AWS.
- Уничтожьте инфраструктуру, созданную с помощью Terraform:
- Удалите конечные точки SageMaker, конфигурацию конечных точек и модели, созданные с помощью Step Functions, либо в консоли SageMaker, либо через интерфейс командной строки AWS.
Заключение
Поздравляем! Вы развернули конвейер машинного обучения с помощью SageMaker и Terraform. В этом примере решения показано, как можно легко развернуть инфраструктуру и сервисы AWS для конвейеров машинного обучения с возможностью повторного использования. Это позволяет выполнять масштабирование для нескольких вариантов использования или регионов, а также позволяет обучать и развертывать модели машинного обучения одним щелчком мыши согласованным образом. Кроме того, вы можете запускать конвейер машинного обучения несколько раз, например, когда доступны новые данные или вы хотите изменить код алгоритма. Вы также можете направить запросы или трафик на разные конечные точки SageMaker.
Я рекомендую вам изучить возможность добавления функций безопасности и внедрения передовых методов обеспечения безопасности в соответствии с вашими потребностями и потенциальными стандартами компании. Кроме того, встраивание этого решения в ваши конвейеры CI/CD даст вам дополнительные возможности для внедрения и внедрения лучших практик и стандартов DevOps в соответствии с вашими требованиями.
Об авторе
Оливер Золликофер является специалистом по данным в Amazon Web Services. Он помогает корпоративным клиентам со всего мира создавать, обучать и развертывать модели машинного обучения, а также управлять жизненным циклом модели машинного обучения с помощью MLOps. Кроме того, он строит и разрабатывает соответствующие облачные решения.
- Коинсмарт. Лучшая в Европе биржа биткойнов и криптовалют.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. БЕСПЛАТНЫЙ ДОСТУП.
- КриптоХок. Альткоин Радар. Бесплатная пробная версия.
- Источник: https://aws.amazon.com/blogs/machine-learning/deploy-and-manage-machine-learning-pipelines-with-terraform-using-amazon-sagemaker/
- "
- 100
- 7
- доступ
- По
- через
- действия
- дополнение
- дополнительный
- алгоритм
- Все
- уже
- Amazon
- Amazon Web Services
- Другой
- подхода
- архитектура
- ПЛОЩАДЬ
- доступен
- AWS
- не являетесь
- ЛУЧШЕЕ
- лучшие практики
- тело
- граница
- строить
- строит
- возможности
- случаев
- CD
- изменение
- Выберите
- облако
- облачная инфраструктура
- код
- Компания
- Конфигурация
- Консоли
- Container
- содержит
- Расходы
- создали
- создает
- клиент
- Клиенты
- данным
- ученый данных
- развертывание
- развернуть
- развертывание
- развертывание
- описано
- Проект
- уничтожить
- уничтожили
- развивать
- развитый
- застройщиков
- развивающийся
- Развитие
- различный
- непосредственно
- Docker
- легко
- включить
- поощрять
- Конечная точка
- Предприятие
- многое
- пример
- существующий
- Больше
- Фэшн
- Особенности
- фигура
- First
- Впервые
- следовать
- после
- функция
- далее
- порождающий
- Глобальный
- имеющий
- Как
- How To
- HTTPS
- Личность
- изображение
- реализация
- в XNUMX году
- значение
- включают
- включает в себя
- В том числе
- все больше и больше
- Инфраструктура
- вход
- взаимодействие
- IT
- работа
- последний
- изучение
- линия
- машина
- обучение с помощью машины
- управлять
- управляемого
- управления
- ML
- модель
- Модели
- с разными
- имена
- Навигация
- необходимо
- ноутбук
- открытый
- Операционный отдел
- заказ
- Другое
- сборах
- возможное
- потенциал
- Проект
- обеспечивать
- приводит
- хранилище
- запросить
- Запросы
- Требования
- Полезные ресурсы
- ответ
- дорога
- Run
- Бег
- масштабируемые
- Шкала
- Ученый
- SDK
- безопасность
- Услуги
- аналогичный
- просто
- Размер
- твердый
- Решение
- Решения
- Этап
- стандартов
- Начало
- начинается
- Область
- Статус:
- диск
- магазин
- Успешно
- Терминал
- следовательно
- Через
- время
- трафик
- Обучение
- созданного
- использование
- визуализация
- ждать
- Web
- веб-сервисы
- в то время как
- без
- Работа