Клієнти 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 також створює модель, конфігурацію кінцевої точки та кінцеву точку, яка використовується для висновку. Додаткові ресурси включають наступне:
- Управління ідентифікацією та доступом AWS (IAM) ролі та політики, додані до ресурсів, щоб забезпечити взаємодію з іншими ресурсами
- Служба простого зберігання Amazon (Amazon S3) сегменти для навчальних даних і виведення моделі
- An Реєстр контейнерів Amazon Elastic (Amazon ECR) репозиторій для Docker зображення, що містить логіку навчання та висновку
Пов'язаний з машинним навчанням код для навчання та висновків із зображенням Docker в основному покладається на існуючу роботу в наступному GitHub сховище.
Наступна діаграма ілюструє архітектуру рішення:
Ми проведемо вас через такі кроки високого рівня:
- Розгорніть інфраструктуру AWS за допомогою Terraform.
- Надішліть свій образ Docker в Amazon ECR.
- Запустіть конвеєр ML.
- Викликати свою кінцеву точку.
Структура репозитарію
Нижче ви можете знайти репозиторій, що містить код і дані, використані для цієї публікації 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 версія 0.13.5 або новіша
- Інтерфейс командного рядка AWS (AWS CLI) v2
- Python 3.7 або більше
- Docker
Розгорніть інфраструктуру AWS за допомогою Terraform
Щоб розгорнути конвеєр ML, вам потрібно налаштувати кілька змінних та імен відповідно до ваших потреб. Код для цього кроку знаходиться в /terraform
каталог.
Під час першої ініціалізації відкрийте файл terraform/infrastructure/terraform.tfvars
і налаштувати змінну Назва проекту на ім’я вашого проекту, на додаток до змінної регіон якщо ви хочете розгорнути в іншому регіоні. Ви також можете змінити додаткові змінні, такі як типи екземплярів для навчання та висновку.
Потім використовуйте такі команди, щоб розгорнути інфраструктуру за допомогою Terraform:
Перевірте вихідні дані та переконайтеся, що заплановані ресурси відображаються правильно, а на етапі застосування підтвердьте, що все правильно. Потім перейдіть на консоль Amazon ECR (або перевірте вихідні дані Terraform в терміналі) і отримайте URL-адресу для свого репозиторію ECR, який ви створили за допомогою Terraform.
Вихідні дані мають виглядати схожими на наведений нижче вихід, включаючи URL-адресу сховища ECR:
Надішліть свій образ Docker в Amazon ECR
Щоб конвеєр ML і SageMaker навчали та забезпечували кінцеву точку SageMaker для висновку, вам потрібно надати образ Docker і зберігати його в Amazon ECR. Ви можете знайти приклад у каталозі src/container
. Якщо ви вже застосували інфраструктуру AWS з попереднього кроку, ви можете натиснути образ Docker, як описано. Після того, як зображення Docker буде розроблено, ви можете виконати наступні дії та надіслати його в Amazon ECR (налаштуйте URL-адресу Amazon ECR відповідно до ваших потреб):
Якщо ви вже застосували інфраструктуру AWS за допомогою Terraform, ви можете надіслати зміни свого коду та образу Docker безпосередньо в Amazon ECR без повторного розгортання через Terraform.
Запустіть конвеєр ML
Щоб навчити та запустити конвеєр ML, перейдіть на консоль Step Functions і почніть впровадження. Ви можете перевірити хід кожного кроку у візуалізації кінцевого автомата. Ви також можете перевірити хід навчальної роботи SageMaker і стан кінцевої точки SageMaker.
Після успішного запуску кінцевого автомата в Step Functions ви можете побачити, що кінцева точка SageMaker була створена. На консолі SageMaker виберіть Висновок потім на панелі навігації Кінцеві точки. Обов’язково зачекайте, поки статус зміниться на InService.
Викликати свою кінцеву точку
Щоб викликати кінцеву точку (у цьому прикладі для набору даних iris), ви можете використовувати наступний сценарій Python з AWS SDK для Python (Boto3). Ви можете зробити це з блокнота SageMaker або вставити такий фрагмент коду в функцію Lambda:
Прибирати
Ви можете знищити інфраструктуру, створену Terraform, за допомогою команди terraform destroy, але спочатку потрібно видалити дані та файли в сегментах S3. Крім того, кінцева точка SageMaker (або кілька кінцевих точок SageMaker, якщо вона виконується кілька разів) створюється за допомогою крокових функцій і не керується через Terraform. Це означає, що розгортання відбувається під час запуску конвеєра ML із функціями кроку. Тому переконайтеся, що ви видалили кінцеву точку SageMaker або кінцеві точки, створені за допомогою конвеєра Step Functions ML, щоб уникнути непотрібних витрат. Виконайте такі дії:
- На консолі Amazon S3 видаліть набір даних у навчальному сегменті S3.
- Видаліть усі моделі, які ви навчили через конвеєр ML у сегменті моделей S3, або через консоль Amazon S3, або через AWS CLI.
- Знищити інфраструктуру, створену за допомогою Terraform:
- Видаліть кінцеві точки SageMaker, конфігурацію кінцевої точки та моделі, створені за допомогою крокових функцій, на консолі SageMaker або через AWS CLI.
Висновок
Вітаю! Ви розгорнули конвеєр ML за допомогою SageMaker з Terraform. У цьому прикладі рішення показано, як ви можете легко розгорнути інфраструктуру та служби AWS для конвеєрів ML у вигляді багаторазового використання. Це дозволяє масштабувати для кількох випадків використання або регіонів, а також дає змогу послідовно навчати й розгортати моделі ML одним клацанням миші. Крім того, ви можете запускати конвеєр ML кілька разів, наприклад, коли доступні нові дані або ви хочете змінити код алгоритму. Ви також можете направляти запити або трафік на різні кінцеві точки SageMaker.
Я закликаю вас дослідити додавання функцій безпеки та запровадження найкращих методів безпеки відповідно до ваших потреб і потенційних стандартів компанії. Крім того, вбудовування цього рішення у ваші конвеєри CI/CD дасть вам додаткові можливості для прийняття та встановлення найкращих практик і стандартів DevOps відповідно до ваших вимог.
Про автора
Олівер Золлікофер є дослідником даних у Amazon Web Services. Він дає можливість глобальним корпоративним клієнтам створювати, навчати та розгортати моделі машинного навчання, а також керувати життєвим циклом моделі ML за допомогою MLOps. Крім того, він створює та проектує пов’язані з ними хмарні рішення.
- Coinsmart. Найкраща в Європі біржа біткойн та криптовалют.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. БЕЗКОШТОВНИЙ ДОСТУП.
- CryptoHawk. Альткойн Радар. Безкоштовне випробування.
- Джерело: 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
- буття
- КРАЩЕ
- передового досвіду
- тіло
- border
- будувати
- Будує
- можливості
- випадків
- CD
- зміна
- Вибирати
- хмара
- інфраструктура хмари
- код
- компанія
- конфігурація
- Консоль
- Контейнер
- містить
- витрати
- створений
- створює
- клієнт
- Клієнти
- дані
- вчений даних
- розгортання
- розгорнути
- розгортання
- розгортання
- описаний
- дизайн
- знищити
- зруйнований
- розвивати
- розвиненою
- розробників
- розвивається
- розробка
- різний
- безпосередньо
- Docker
- легко
- включіть
- заохочувати
- Кінцева точка
- підприємство
- все
- приклад
- існуючий
- дослідити
- мода
- риси
- Рисунок
- Перший
- перший раз
- стежити
- після
- функція
- далі
- породжує
- Глобальний
- має
- Як
- How To
- HTTPS
- Особистість
- зображення
- реалізація
- реалізовані
- значення
- включати
- includes
- У тому числі
- все більше і більше
- Інфраструктура
- вхід
- взаємодія
- IT
- робота
- останній
- вивчення
- Лінія
- машина
- навчання за допомогою машини
- управляти
- вдалося
- управління
- ML
- модель
- Моделі
- множинний
- Імена
- навігація
- необхідно
- ноутбук
- відкрити
- операції
- порядок
- Інше
- Політика
- це можливо
- потенціал
- проект
- забезпечувати
- забезпечує
- Сховище
- запросити
- запитів
- Вимога
- ресурси
- відповідь
- Маршрут
- прогін
- біг
- масштабовані
- шкала
- вчений
- Sdk
- безпеку
- Послуги
- аналогічний
- простий
- Розмір
- solid
- рішення
- Рішення
- Стажування
- стандартів
- старт
- починається
- стан
- Статус
- зберігання
- зберігати
- Успішно
- термінал
- отже
- через
- час
- трафік
- Навчання
- створеного
- використання
- візуалізації
- чекати
- Web
- веб-сервіси
- в той час як
- без
- Work