Развертывайте конвейеры машинного обучения и управляйте ими с помощью Terraform с помощью Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Развертывайте конвейеры машинного обучения и управляйте ими с помощью Terraform с помощью Amazon SageMaker.

Клиенты 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 также создает модель, конфигурацию конечной точки и конечную точку, используемые для логического вывода. Дополнительные ресурсы включают следующее:

Код, связанный с машинным обучением, для обучения и логического вывода с помощью образа Docker в основном опирается на существующую работу в следующих разделах. Репозиторий GitHub.

Следующая диаграмма иллюстрирует архитектуру решения:

Диаграмма архитектуры

Мы проведем вас через следующие общие этапы:

  1. Разверните свою инфраструктуру AWS с помощью Terraform.
  2. Отправьте образ Docker в Amazon ECR.
  3. Запустите конвейер машинного обучения.
  4. Вызовите свою конечную точку.

Структура репозитория

Вы можете найти репозиторий, содержащий код и данные, использованные для этого поста, в следующем Репозиторий GitHub.

Репозиторий включает в себя следующие каталоги:

  • /terraform – Состоит из следующих подпапок:
    • ./infrastructure – Содержит файл main.tf, вызывающий модуль конвейера машинного обучения, в дополнение к объявлениям переменных, которые мы используем для развертывания инфраструктуры.
    • ./ml-pipeline-module – Содержит модуль конвейера Terraform ML, который мы можем использовать повторно.
  • /src – Состоит из следующих подпапок:
    • ./container – Содержит пример кода для обучения и вывода с определениями для образа Docker.
    • ./lambda_function – Содержит код Python для конфигураций генерации функций Lambda, таких как уникальный идентификатор задания для учебного задания SageMaker.
  • /data – Содержит следующий файл:
    • ./iris.csv – Содержит данные для обучения модели ML

Предпосылки

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

Разверните свою инфраструктуру AWS с помощью Terraform

Чтобы развернуть конвейер машинного обучения, вам нужно настроить несколько переменных и имен в соответствии с вашими потребностями. Код для этого шага находится в /terraform каталог.

При инициализации в первый раз откройте файл terraform/infrastructure/terraform.tfvars и настроить переменную название проекта к названию вашего проекта, помимо переменной область если вы хотите развернуть в другом регионе. Вы также можете изменить дополнительные переменные, такие как типы экземпляров, для обучения и логического вывода.

Затем используйте следующие команды для развертывания инфраструктуры с помощью Terraform:

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

Проверьте выходные данные и убедитесь, что запланированные ресурсы отображаются правильно, и подтвердите да на этапе применения, если все правильно. Затем перейдите в консоль Amazon ECR (или проверьте выходные данные Terraform в терминале) и получите URL-адрес своего репозитория ECR, созданного с помощью Terraform.

Вывод должен выглядеть примерно так, как показано ниже, включая URL-адрес репозитория ECR:

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

Отправьте образ Docker в Amazon ECR

Чтобы конвейер машинного обучения и SageMaker могли обучить и подготовить конечную точку SageMaker для логического вывода, вам необходимо предоставить образ Docker и сохранить его в Amazon ECR. Вы можете найти пример в каталоге src/container. Если вы уже применили инфраструктуру AWS из предыдущего шага, вы можете отправить образ Docker, как описано. После разработки образа Docker вы можете выполнить следующие действия и отправить его в Amazon ECR (настройте URL-адрес Amazon ECR в соответствии со своими потребностями):

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

Если вы уже применили инфраструктуру AWS с помощью Terraform, вы можете отправить изменения своего кода и образа Docker непосредственно в Amazon ECR без повторного развертывания через Terraform.

Запустите конвейер машинного обучения

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

Функция начального шага

После успешного запуска конечного автомата в Step Functions вы увидите, что конечная точка SageMaker создана. В консоли SageMaker выберите вывод в панели навигации, затем Endpoints. Обязательно дождитесь изменения статуса на InService.

Статус конечной точки SageMaker

Вызвать вашу конечную точку

Чтобы вызвать вашу конечную точку (в этом примере для набора данных радужной оболочки), вы можете использовать следующий скрипт Python с AWS SDK для Python (Boto3). Вы можете сделать это из записной книжки SageMaker или внедрить следующий фрагмент кода в функцию Lambda:

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

Убирать

Вы можете уничтожить инфраструктуру, созданную Terraform, с помощью команды terraform destroy, но сначала вам нужно удалить данные и файлы в корзинах S3. Кроме того, конечная точка SageMaker (или несколько конечных точек SageMaker при многократном запуске) создается с помощью Step Functions и не управляется с помощью Terraform. Это означает, что развертывание происходит при запуске конвейера машинного обучения с пошаговыми функциями. Поэтому обязательно удалите конечную точку SageMaker или конечные точки, созданные с помощью конвейера машинного обучения Step Functions, чтобы избежать ненужных затрат. Выполните следующие шаги:

  1. В консоли Amazon S3 удалите набор данных в обучающей корзине S3.
  2. Удалите все модели, которые вы обучили с помощью конвейера машинного обучения, в корзине моделей S3 либо через консоль Amazon S3, либо через интерфейс командной строки AWS.
  3. Уничтожьте инфраструктуру, созданную с помощью Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Удалите конечные точки SageMaker, конфигурацию конечных точек и модели, созданные с помощью Step Functions, либо в консоли SageMaker, либо через интерфейс командной строки AWS.

Заключение

Поздравляем! Вы развернули конвейер машинного обучения с помощью SageMaker и Terraform. В этом примере решения показано, как можно легко развернуть инфраструктуру и сервисы AWS для конвейеров машинного обучения с возможностью повторного использования. Это позволяет выполнять масштабирование для нескольких вариантов использования или регионов, а также позволяет обучать и развертывать модели машинного обучения одним щелчком мыши согласованным образом. Кроме того, вы можете запускать конвейер машинного обучения несколько раз, например, когда доступны новые данные или вы хотите изменить код алгоритма. Вы также можете направить запросы или трафик на разные конечные точки SageMaker.

Я рекомендую вам изучить возможность добавления функций безопасности и внедрения передовых методов обеспечения безопасности в соответствии с вашими потребностями и потенциальными стандартами компании. Кроме того, встраивание этого решения в ваши конвейеры CI/CD даст вам дополнительные возможности для внедрения и внедрения лучших практик и стандартов DevOps в соответствии с вашими требованиями.


Об авторе

Развертывайте конвейеры машинного обучения и управляйте ими с помощью Terraform с помощью Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Оливер Золликофер является специалистом по данным в Amazon Web Services. Он помогает корпоративным клиентам со всего мира создавать, обучать и развертывать модели машинного обучения, а также управлять жизненным циклом модели машинного обучения с помощью MLOps. Кроме того, он строит и разрабатывает соответствующие облачные решения.

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

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