Добре продуманий конвеєр CI/CD необхідний для ефективного масштабування будь-якого робочого процесу розробки програмного забезпечення. При розробці виробничих конвеєрів CI/CD AWS рекомендує використовувати кілька облікових записів для ізоляції ресурсів, запобігання загрозам безпеці та спрощення конвеєрів виставлення рахунків і обробки даних. В AWS ми продовжуємо впроваджувати інновації, щоб спростити робочий процес MLOps.
У цій публікації ми обговорюємо деякі з нових функцій для кількох облікових записів Amazon SageMaker які дозволяють краще ділитися групами моделей і керувати ними, а також керувати версіями моделей. Ось приклад структури облікового запису передовий досвід організаційного підрозділу щоб розмістити моделі за допомогою кінцевих точок SageMaker в облікових записах, див Оркестратор робочого навантаження MLOps.
Огляд рішення
Наведена нижче діаграма ілюструє нашу спільну модель архітектури реєстру.
Деякі речі, на які слід звернути увагу в попередній архітектурі:
Наступні кроки відповідають схемі:
- Спеціаліст з обробки даних реєструє модель з облікового запису науки про дані в реєстрі моделей спільних служб SageMaker у a
PendingManualApproval
стан. Артефакт моделі створюється в обліковому записі спільних служб Служба простого зберігання Amazon (Amazon S3) відро. - Після реєстрації нової версії моделі хтось із повноваженнями затверджувати модель на основі показників має затвердити або відхилити модель.
- Після схвалення моделі конвеєр CI/CD з’являється в обліковому записі розгортання ініціював розгортання оновлені деталі моделі в обліковому записі QA та оновіть етап як QA.
- Після проходження процесу тестування ви можете або вибрати крок затвердження вручну в рамках процесу CI/CD, або замовити конвеєр CI/CD безпосередньо розгорнути модель у виробництві та оновити етап як Prod.
- Виробниче середовище посилається на затверджену модель і код, можливо, виконуючи A/B тест у виробництві. У разі аудиту або будь-якої проблеми з моделлю, ви можете використовувати Відстеження походження Amazon SageMaker ML. Він створює та зберігає інформацію про етапи робочого процесу машинного навчання (ML) від підготовки даних до розгортання моделі. За допомогою інформації відстеження ви можете відтворювати кроки робочого циклу, відстежувати походження моделі та набору даних і встановлювати стандарти керування моделлю та аудиту.
Протягом усього процесу спільний реєстр моделі зберігає старіші версії моделі. Це дозволяє команді відкотити зміни або навіть розмістити варіанти виробництва.
Передумови
Переконайтеся, що у вас є такі передумови:
- Надана структура з кількома обліковими записами – Інструкції див Найкращі практики для організаційних підрозділів з організаціями AWS. Для цілей цього блогу ми використовуємо такі облікові записи:
- Обліковий запис Data Science – Обліковий запис, де дослідники даних мають доступ до навчальних даних і створюють моделі.
- Обліковий запис спільних служб – Центральний обліковий запис для зберігання артефактів моделі (як показано на діаграмі архітектури), до якого можна отримати доступ через різні облікові записи робочого навантаження.
- Обліковий запис розгортання – Обліковий запис, який відповідає за внесення змін до різних облікових записів.
- Облікові записи робочого навантаження – Зазвичай це середовища контролю якості та виробництва, де інженери програмного забезпечення можуть створювати програми для використання моделі ML.
- Обліковий запис розгортання з відповідними дозволами – Для отримання додаткової інформації про найкращі методи роботи зі структурою організаційного підрозділу з кількома обліковими записами див Розгортання OU. Цей обліковий запис відповідає за вказівку облікових записів робочого навантаження на потрібну модель у реєстрі моделей облікового запису спільних служб.
Визначте політику між обліковими записами
Дотримуючись принципу найменших привілеїв, спершу нам потрібно додати політики ресурсів між обліковими записами до ресурсів спільних служб, щоб надати доступ з інших облікових записів.
Оскільки артефакти моделі зберігаються в сегменті S3 облікового запису спільних служб, обліковому запису Data Science потрібен доступ для читання й запису Amazon S3, щоб надсилати навчені моделі в Amazon S3. Наведений нижче код ілюструє цю політику, але поки не додавайте її до облікового запису спільних служб:
Обліковому запису розгортання потрібно лише надати доступ для читання до сегмента S3, щоб він міг використовувати артефакти моделі для розгортання на кінцевих точках SageMaker. Нам також потрібно додати таку політику до сегмента спільних служб S3:
Ми поєднуємо обидві політики, щоб отримати наступну остаточну політику. Створіть цю політику в обліковому записі спільних служб після заміни відповідних ідентифікаторів облікових записів:
Щоб мати можливість розгортати модель, створену в іншому обліковому записі, користувач повинен мати роль, яка має доступ до дій SageMaker, наприклад роль із AmazonSageMakerFullAccess
керована політика. Звертатися до Розгорніть модельну версію з іншого облікового запису для отримання додаткової інформації.
Нам потрібно визначити групу моделей, яка містить версії моделей, які ми хочемо розгорнути. Крім того, ми хочемо надати дозволи для облікового запису Data Science. Це можна зробити за допомогою наступних кроків. Ми називаємо облікові записи таким чином:
- shared_services_account_id – Обліковий запис, у якому знаходиться реєстр моделей і де ми хочемо розмістити модель
- data_science_account_id – Обліковий запис, де ми будемо тренуватися, а отже, створювати фактичний артефакт моделі
- deployment_account_id – Обліковий запис, де ми хочемо розмістити кінцеву точку для цієї моделі
Спочатку нам потрібно переконатися, що групи пакетів моделі існують. Ви можете використовувати Boto3 API, як показано в наступному прикладі, або ви можете використовувати Консоль управління AWS щоб створити пакет моделі. Звертатися до Створити групу пакетів моделі для більш детальної інформації. Це передбачає, що у вас встановлено Boto3.
Для дозволів для цієї групи пакетів моделі ви можете створити документ JSON, подібний до наведеного нижче коду. Замініть фактичні ідентифікатори облікових записів і ім’я групи пакетів моделі на власні значення.
Нарешті, застосуйте політику до групи пакетів моделі. Ви не можете пов’язати цю політику з групою пакетів через консоль. Вам потрібен SDK або Інтерфейс командного рядка AWS (AWS CLI). Наприклад, наступний код використовує Boto3:
Нам також потрібен звичай Служба управління ключами AWS (AWS KMS) ключ для шифрування моделі під час її зберігання в Amazon S3. Це потрібно зробити за допомогою облікового запису data science. На консолі AWS KMS перейдіть до Визначте дозволи на використання ключа сторінку. В Інші облікові записи AWS розділ, вибрати Додайте інший обліковий запис AWS. Введіть номер облікового запису AWS для облікового запису розгортання. Ви використовуєте цей ключ KMS для навчального завдання SageMaker. Якщо ви не вказали ключ KMS для навчального завдання, SageMaker за замовчуванням використовує ключ шифрування на стороні сервера Amazon S3. Ключ шифрування Amazon S3 на стороні сервера за замовчуванням не може надаватися іншим обліковим записам AWS або використовуватися ним.
Політика та дозволи відповідають такому шаблону:
- Політика Amazon S3, указана в
shared_services_account
надає дозволи для облікового запису Data Science і облікового запису розгортання - Політика ключів KMS, указана в
shared_services_account
надає дозволи для облікового запису Data Science і облікового запису розгортання
Нам потрібно переконатися, що обліковий запис спільних служб і обліковий запис розгортання мають доступ до зображень Docker, які використовувалися для навчання моделі. Ці зображення зазвичай розміщуються в облікових записах AWS, і ваш адміністратор облікового запису може допомогти вам отримати доступ, якщо ви ще не маєте доступу. Для цієї публікації ми не створюємо жодних спеціальних зображень Docker після навчання моделі, тому нам не потрібні спеціальні політики Amazon ECR для зображень.
В облікових записах робочого навантаження (QA або prod) нам потрібно створити два Управління ідентифікацією та доступом AWS (IAM), подібні до наведених нижче. Це вбудовані політики, що означає, що вони вбудовані в ідентифікатор IAM. Це надає цим обліковим записам доступ до реєстру моделей.
Перша вбудована політика дозволяє ролі отримувати доступ до ресурсу Amazon S3 в обліковому записі спільних служб, який містить артефакт моделі. Вкажіть назву ковша S3 і свою модель:
Друга вбудована політика дозволяє ролі, яку ми створимо пізніше, використовувати ключ KMS в обліковому записі спільних служб. Укажіть ідентифікатор облікового запису для облікового запису спільних служб та ідентифікатор ключа KMS:
Нарешті, нам потрібно створити роль IAM для SageMaker. Ця роль має AmazonSageMakerFullAccess
політика додається. Потім ми приєднуємо ці дві вбудовані політики до створеної ролі. Якщо ви використовуєте наявну роль виконання SageMaker, додайте ці дві політики до цієї ролі. Інструкції див Створення ролей і приєднання політик (консоль).
Тепер, коли ми визначили політики для кожного облікового запису, давайте використаємо приклад, щоб побачити це в дії.
Створіть і навчіть модель за допомогою конвеєра SageMaker
Спочатку ми створюємо конвеєр SageMaker в обліковому записі data science для виконання обробки даних, навчання моделі та оцінювання. Ми використовуємо набір даних про житло в Каліфорнії, отриманий із бібліотеки StatLib. У наведеному нижче фрагменті коду ми використовуємо спеціальний сценарій попередньої обробки preprocess.py
щоб виконати деяке просте перетворення функції, таке як масштабування функції, яке можна згенерувати за допомогою наступного ноутбук. Цей сценарій також розділяє набір даних на навчальні та тестові набори даних.
Ми створюємо SKLearnProcessor
для запуску цього сценарію попередньої обробки. У конвеєрі SageMaker ми створюємо крок обробки (ProcessingStep
), щоб запустити код обробки за допомогою SKLearnProcessor
. Цей код обробки викликається під час ініціалізації конвеєра SageMaker. Код створення SKLearnProcessor
та ProcessingStep
показані в наступному коді. Зауважте, що весь код у цьому розділі виконується в обліковому записі data science.
Нам потрібен спеціальний ключ KMS для шифрування моделі під час її зберігання в Amazon S3. Перегляньте наступний код:
Щоб навчити модель, ми створюємо об’єкт оцінки TensorFlow. Ми передаємо йому ідентифікатор ключа KMS разом із нашим навчальним сценарієм train.py
, тип екземпляра навчання та кількість. Ми також створюємо a TrainingStep
буде додано до нашого конвеєра, і додайте до нього оцінювач TensorFlow. Перегляньте наступний код:
На додаток до навчання нам потрібно провести оцінку моделі, для чого ми використовуємо середню квадратичну помилку (MSE) як метрику в цьому прикладі. The попередній зошит також породжує evaluate.py
, який ми використовуємо для оцінки нашої моделі за допомогою MSE. Ми також створюємо a ProcessingStep
для ініціалізації сценарію оцінки моделі за допомогою a SKLearnProcessor
об'єкт. Наступний код створює цей крок:
Після оцінки моделі нам також потрібен крок для реєстрації нашої моделі в реєстрі моделей, якщо продуктивність моделі відповідає вимогам. Це показано в наступному коді за допомогою RegisterModel
крок. Тут нам потрібно вказати пакет моделі, який ми оголосили в обліковому записі спільних служб. Замініть пакет регіону, облікового запису та моделі своїми значеннями. Тут використовується назва моделі modeltest
, але ви можете використовувати будь-яке ім’я на свій вибір.
Нам також потрібно створити артефакти моделі, щоб її можна було розгорнути (за допомогою іншого облікового запису). Для створення моделі ми створюємо a CreateModelStep
, як показано в наступному коді:
Додавання умов до конвеєра виконується за допомогою a ConditionStep
. У цьому випадку ми хочемо лише зареєструвати нову версію моделі в реєстрі моделей, якщо нова модель відповідає умові точності. Перегляньте наступний код:
Нарешті, ми хочемо організувати всі кроки конвеєра, щоб конвеєр можна було ініціалізувати:
Розгорніть версію моделі з іншого облікового запису
Тепер, коли модель зареєстровано в обліковому записі спільних служб, нам потрібно розгорнути в облікових записах робочого навантаження за допомогою конвеєра CI/CD в обліковому записі розгортання. Ми вже налаштували роль і політику на попередньому кроці. Ми використовуємо модельний пакет ARN для розгортання моделі з реєстру моделей. Наступний код виконується в обліковому записі розгортання та використовується для розгортання схвалених моделей для забезпечення якості та виробництва:
Висновок
У цій публікації ми продемонстрували, як налаштувати політики, необхідні для налаштування кількох облікових записів для ML на основі принципу найменших привілеїв. Потім ми показали процес побудови та навчання моделей в обліковому записі data science. Нарешті, ми використали конвеєр CI/CD в обліковому записі розгортання, щоб розгорнути останню версію схвалених моделей для QA та робочих облікових записів. Крім того, ви можете переглянути історію розгортання моделей та будувати тригери in AWS CodeBuild.
Ви можете масштабувати концепції в цій публікації для розміщення моделей Обчислювальна хмара Amazon Elastic (Amazon EC2) або Послуга Amazon Elastic Kubernetes (Amazon EKS), а також створити конвеєр пакетного висновку.
Щоб дізнатися більше про наявність окремих облікових записів для створення моделей машинного навчання в AWS, див Найкращі практики для організаційних підрозділів з організаціями AWS та Безпечне оновлення моделей у виробництві.
Про авторів
Сандіп Верма є старшим архітектором прототипування в AWS. Йому подобається глибоко занурюватися в проблеми клієнтів і створювати прототипи для клієнтів, щоб прискорити інновації. Він має досвід роботи зі штучним інтелектом/ML, засновник New Knowledge і загалом захоплюється технікою. У вільний час він любить подорожувати та кататися на лижах зі своєю родиною.
Мані Хануджа є спеціалістом з питань штучного інтелекту та машинного навчання в Amazon Web Services (AWS). Вона допомагає клієнтам, які використовують машинне навчання, вирішувати свої бізнес-завдання за допомогою AWS. Більшу частину свого часу вона проводить, глибоко занурюючись і навчаючи клієнтів у проектах зі штучного інтелекту / навчання, пов’язаних із комп’ютерним зором, обробкою природних мов, прогнозуванням, непередбачуваним доступом тощо. Вона захоплена ML на краю, отже, вона створила власну лабораторію із самокерованим набором та виробничою лінією з виробництва прототипів, де проводить багато вільного часу.
Саумітра Вікрам є розробником програмного забезпечення в команді Amazon SageMaker і працює в Ченнаї, Індія. Поза роботою він любить проводити час бігом, трекінгом і їздою на мотоциклі через Гімалаї.
Срідеві Шрінівасан є лідером розробки в AWS SageMaker. Вона пристрасно та в захваті від створення ML як платформи, яка має змінити повсякденне життя. Зараз вона зосереджена на SageMaker Feature Store. У вільний час вона любить проводити час з родиною.
Рупіндер Гревал є старшим архітектором рішень Ai/ML в AWS. Зараз він зосереджується на обслуговуванні моделей і MLO на SageMaker. До цієї посади він працював інженером машинного навчання, створюючи та розміщуючи моделі. Поза роботою він любить грати в теніс і їздити на велосипеді гірськими стежками.
Фарук Сабір є старшим архітектором рішень зі штучного інтелекту та машинного навчання в AWS. Він має ступінь доктора філософії та магістра з електротехніки Техаського університету в Остіні та ступінь магістра комп’ютерних наук Технологічного інституту Джорджії. В AWS він допомагає клієнтам формулювати та вирішувати їхні бізнес-проблеми в області обробки даних, машинного навчання, комп’ютерного зору, штучного інтелекту, чисельної оптимізації та суміжних областях. Він має понад 16 років досвіду роботи, а також є допоміжним викладачем Техаського університету в Далласі, де він викладає аспірантуру з прикладного машинного навчання. Живучи в Далласі, штат Техас, він і його сім’я люблять подорожувати та здійснювати далекі подорожі.
- Розширений (300)
- AI
- ai мистецтво
- AI арт генератор
- ai робот
- Amazon SageMaker
- штучний інтелект
- сертифікація штучного інтелекту
- штучний інтелект у банківській справі
- робот зі штучним інтелектом
- роботи зі штучним інтелектом
- програмне забезпечення для штучного інтелекту
- AWS Машинне навчання
- передового досвіду
- blockchain
- блокчейн конференція AI
- coingenius
- розмовний штучний інтелект
- крипто конференція ai
- dall's
- глибоке навчання
- у вас є гугл
- навчання за допомогою машини
- plato
- платон ai
- Інформація про дані Платона
- Гра Платон
- PlatoData
- platogaming
- масштаб ai
- синтаксис
- Технічні інструкції
- зефірнет