Розгортайте конвеєри машинного навчання та керуйте ними за допомогою Terraform за допомогою Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Розгортайте конвеєри машинного навчання та керуйте ними за допомогою Terraform за допомогою Amazon SageMaker

Клієнти AWS покладаються на Infrastructure as Code (IaC) для проектування, розробки та керування своєю хмарною інфраструктурою. IaC гарантує, що інфраструктура та послуги клієнта є послідовними, масштабованими та відтворюваними, маючи можливість дотримуватися найкращих практик у сфері операцій з розробки (DevOps).

Одним із можливих підходів до управління інфраструктурою та сервісами AWS за допомогою IaC є Terraform, що дозволяє розробникам організувати свою інфраструктуру в модулях багаторазового коду. Цей аспект стає все більш важливим у сфері машинного навчання (ML). Розробка конвеєрів машинного навчання та керування ними, включаючи навчання та висновки за допомогою Terraform як IaC, дає змогу легко масштабувати для кількох випадків використання машинного навчання або регіонів без необхідності розробляти інфраструктуру з нуля. Крім того, він забезпечує узгодженість інфраструктури (наприклад, тип і розмір екземпляра) для навчання та висновків у різних реалізаціях конвеєра ML. Це дозволяє вам маршрутизувати запити та вхідний трафік до різних Amazon SageMaker кінцеві точки.

У цій публікації ми покажемо вам, як розгортати конвеєри ML і керувати ними за допомогою Terraform і Amazon SageMaker.

Огляд рішення

У цій публікації наведено код і описані кроки, необхідні для розгортання інфраструктури AWS для конвеєрів машинного машинного навчання за допомогою Terraform для навчання моделей і висновків за допомогою Amazon SageMaker. Конвеєром ML керують через Функції кроку AWS щоб організувати різні кроки, реалізовані в конвеєрі ML, як показано на наступному малюнку.

Крок Функція Кроки

Крок Функції запускає an AWS Lambda функція, яка генерує унікальний ідентифікатор завдання, який потім використовується під час запуску навчального завдання SageMaker. Step Functions також створює модель, конфігурацію кінцевої точки та кінцеву точку, яка використовується для висновку. Додаткові ресурси включають наступне:

Пов'язаний з машинним навчанням код для навчання та висновків із зображенням Docker в основному покладається на існуючу роботу в наступному GitHub сховище.

Наступна діаграма ілюструє архітектуру рішення:

Архітектурна схема

Ми проведемо вас через такі кроки високого рівня:

  1. Розгорніть інфраструктуру AWS за допомогою Terraform.
  2. Надішліть свій образ Docker в Amazon ECR.
  3. Запустіть конвеєр ML.
  4. Викликати свою кінцеву точку.

Структура репозитарію

Нижче ви можете знайти репозиторій, що містить код і дані, використані для цієї публікації GitHub сховище.

Репозиторій включає в себе такі каталоги:

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

Передумови

Для цього покрокового керівництва ви повинні мати такі передумови:

Розгорніть інфраструктуру AWS за допомогою Terraform

Щоб розгорнути конвеєр ML, вам потрібно налаштувати кілька змінних та імен відповідно до ваших потреб. Код для цього кроку знаходиться в /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

Щоб конвеєр ML і 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.

Запустіть конвеєр ML

Щоб навчити та запустити конвеєр ML, перейдіть на консоль Step Functions і почніть впровадження. Ви можете перевірити хід кожного кроку у візуалізації кінцевого автомата. Ви також можете перевірити хід навчальної роботи SageMaker і стан кінцевої точки SageMaker.

Функція «Почати крок».

Після успішного запуску кінцевого автомата в Step Functions ви можете побачити, що кінцева точка SageMaker була створена. На консолі SageMaker виберіть Висновок потім на панелі навігації Кінцеві точки. Обов’язково зачекайте, поки статус зміниться на InService.

Статус кінцевої точки SageMaker

Викликати свою кінцеву точку

Щоб викликати кінцеву точку (у цьому прикладі для набору даних iris), ви можете використовувати наступний сценарій 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, якщо вона виконується кілька разів) створюється за допомогою крокових функцій і не керується через Terraform. Це означає, що розгортання відбувається під час запуску конвеєра ML із функціями кроку. Тому переконайтеся, що ви видалили кінцеву точку SageMaker або кінцеві точки, створені за допомогою конвеєра Step Functions ML, щоб уникнути непотрібних витрат. Виконайте такі дії:

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

  4. Видаліть кінцеві точки SageMaker, конфігурацію кінцевої точки та моделі, створені за допомогою крокових функцій, на консолі SageMaker або через AWS CLI.

Висновок

Вітаю! Ви розгорнули конвеєр ML за допомогою SageMaker з Terraform. У цьому прикладі рішення показано, як ви можете легко розгорнути інфраструктуру та служби AWS для конвеєрів ML у вигляді багаторазового використання. Це дозволяє масштабувати для кількох випадків використання або регіонів, а також дає змогу послідовно навчати й розгортати моделі ML одним клацанням миші. Крім того, ви можете запускати конвеєр ML кілька разів, наприклад, коли доступні нові дані або ви хочете змінити код алгоритму. Ви також можете направляти запити або трафік на різні кінцеві точки SageMaker.

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


Про автора

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

Часова мітка:

Більше від AWS Машинне навчання