Десятки тисяч клієнтів AWS використовують послуги машинного навчання (ML) AWS, щоб прискорити розробку ML за допомогою повністю керованої інфраструктури та інструментів. Клієнти, які розробляли моделі ML на місці, наприклад, на локальному робочому столі, хочуть перенести свої застарілі моделі ML у хмару AWS, щоб повністю скористатися перевагами найповнішого набору послуг ML, інфраструктури та ресурсів впровадження, доступних на AWS. .
Термін застарілий код відноситься до коду, який було розроблено для ручного запуску на локальному робочому столі та не створено за допомогою хмарних SDK, таких як AWS SDK для Python (Boto3) or SDK для Amazon SageMaker Python. Іншими словами, ці застарілі коди не оптимізовані для хмарного розгортання. Найкраща практика для міграції – це рефакторинг цих застарілих кодів за допомогою API Amazon SageMaker або SageMaker Python SDK. Однак у деяких випадках організації з великою кількістю застарілих моделей можуть не мати часу або ресурсів, щоб переписати всі ці моделі.
У цій публікації ми ділимося масштабованим і простим у застосуванні підходом до перенесення застарілого коду машинного навчання в хмару AWS для висновків за допомогою Amazon SageMaker та Функції кроку AWS, з мінімальною кількістю рефакторингу коду. Ви можете легко розширити це рішення, щоб додати більше функціональних можливостей. Ми демонструємо, як дві різні персони, спеціаліст із обробки даних та інженер MLOps, можуть співпрацювати, щоб підвищити та змінити сотні застарілих моделей.
Огляд рішення
У цій структурі ми запускаємо застарілий код у контейнері як a Обробка SageMaker робота. SageMaker запускає застарілий сценарій у контейнері обробки. Зображення контейнера обробки може бути або вбудованим зображенням SageMaker, або власним зображенням. Базовою інфраструктурою для завдання обробки повністю керує SageMaker. Змінювати застарілий код не потрібно. Знайомство зі створенням завдань обробки SageMaker — це все, що потрібно.
Ми припускаємо участь двох осіб: спеціаліста з даних та інженера MLOps. Спеціаліст із даних відповідає за переміщення коду в SageMaker вручну або шляхом клонування його зі сховища коду, наприклад Комісія AWS. Студія Amazon SageMaker надає інтегроване середовище розробки (IDE) для реалізації різних кроків у життєвому циклі машинного навчання, а спеціаліст із обробки даних використовує його для створення вручну спеціального контейнера, який містить необхідні артефакти коду для розгортання. Контейнер буде зареєстровано в реєстрі контейнерів, наприклад Реєстр контейнерів Amazon Elastic (Amazon ECR) для цілей розгортання.
Інженер MLOps бере на себе відповідальність за створення робочого процесу Step Functions, який ми можемо повторно використовувати для розгортання спеціального контейнера, розробленого фахівцем із обробки даних, із відповідними параметрами. Робочий процес Step Functions може бути настільки модульним, наскільки це необхідно для відповідності сценарію використання, або він може складатися лише з одного кроку для ініціювання одного процесу. Щоб звести до мінімуму зусилля, необхідні для перенесення коду, ми визначили три модульні компоненти для створення повнофункціонального процесу розгортання:
- Попередня обробка
- Висновок
- Подальша обробка
Наступна діаграма ілюструє архітектуру та робочий процес нашого рішення.
Це рішення передбачає такі кроки:
- Особа спеціаліста з обробки даних використовує Studio для імпортування застарілого коду шляхом клонування зі сховища коду, а потім модульування коду на окремі компоненти, які виконують етапи життєвого циклу машинного навчання (попередня обробка, логічний висновок і постобробка).
- Науковий спеціаліст використовує Studio, а саме CLI збірки зображень Studio інструмент, наданий SageMaker, для створення образу Docker. Цей інструмент CLI дозволяє спеціалісту з обробки даних створювати зображення безпосередньо в Studio та автоматично реєструвати зображення в Amazon ECR.
- Інженер MLOps використовує зареєстрований образ контейнера та створює розгортання для конкретного варіанту використання за допомогою покрокових функцій. Step Functions — це безсерверна служба робочого процесу, яка може керувати API SageMaker безпосередньо за допомогою мови штатів Amazon.
Завдання обробки SageMaker
Давайте розберемося, як a Завдання обробки SageMaker біжить. На наступній діаграмі показано, як SageMaker запускає завдання обробки.
SageMaker бере ваш сценарій і копіює ваші дані Служба простого зберігання Amazon (Amazon S3), а потім витягує контейнер обробки. Зображення контейнера для обробки може бути або вбудованим зображенням SageMaker, або власним зображенням, яке ви надаєте. Базовою інфраструктурою для завдання обробки повністю керує SageMaker. Ресурси кластера надаються на час виконання вашої роботи та очищаються після її завершення. Результати завдання обробки зберігаються у вказаному вами сегменті S3. Щоб дізнатися більше про створення власного контейнера, див Створіть свій власний контейнер для обробки (розширений сценарій).
Завдання SageMaker Processing налаштовує ваш образ обробки за допомогою сценарію точки входу контейнера Docker. Ви також можете надати власну точку входу за допомогою параметрів ContainerEntrypoint і ContainerArguments Специфікація програми API. Якщо ви використовуєте власну спеціальну точку входу, у вас є додаткова гнучкість, щоб запустити її як окремий сценарій без перебудови ваших зображень.
У цьому прикладі ми створюємо спеціальний контейнер і використовуємо завдання обробки SageMaker для висновку. У завданнях попередньої та постобробки використовується режим сценарію з попередньо створеним контейнером scikit-learn.
Передумови
Щоб продовжити цю публікацію, виконайте такі передумови:
- Створіть домен Studio. Інструкції див Підключення до домену Amazon SageMaker за допомогою швидкого налаштування.
- Створіть відро S3.
- Клонуйте наданий GitHub репо в студію.
Репозиторій GitHub організовано в різні папки, які відповідають різним етапам життєвого циклу машинного навчання, полегшуючи навігацію та керування:
Перенесіть застарілий код
На цьому етапі ми виступаємо в якості дослідника даних, відповідального за перенесення застарілого коду.
Ми починаємо з відкриття build_and_push.ipynb
зошит.
Початкова клітинка блокнота допоможе вам установити CLI збірки зображень Studio. Цей інтерфейс командного рядка спрощує процес налаштування шляхом автоматичного створення багаторазового середовища збирання, з яким можна взаємодіяти за допомогою команд високого рівня. За допомогою CLI створити зображення так само просто, як наказати йому створити, і результатом буде посилання на розташування вашого зображення в Amazon ECR. Цей підхід усуває необхідність керувати складним основним робочим процесом, організованим CLI, оптимізуючи процес створення образу.
Перш ніж запустити команду збірки, важливо переконатися, що роль, яка виконує команду, має необхідні дозволи, як зазначено в CLI GitHub readme або відповідний пост. Ненадання необхідних дозволів може призвести до помилок під час процесу збирання.
Дивіться наступний код:
Щоб оптимізувати свій застарілий код, розділіть його на три окремі сценарії Python під назвою preprocessing.py, predict.py і postprocessing.py. Дотримуйтесь найкращих практик програмування, перетворюючи код на функції, які викликаються з основної функції. Переконайтеся, що всі необхідні бібліотеки імпортовано, а файл requirements.txt оновлено, щоб включити будь-які спеціальні бібліотеки.
Упорядкувавши код, запакуйте його разом із файлом вимог у контейнер Docker. Ви можете легко створити контейнер із Studio за допомогою такої команди:
За замовчуванням зображення буде відправлено до сховища ECR під назвою sagemakerstudio з тегом latest. Крім того, використовуватиметься роль виконання програми Studio разом із сегментом S3 SDK SageMaker Python за замовчуванням. Однак ці налаштування можна легко змінити за допомогою відповідних параметрів CLI. Перегляньте наступний код:
Тепер, коли контейнер створено та зареєстровано в сховищі ECR, настав час глибше зануритися в те, як ми можемо використовувати його для запуску predict.py. Ми також покажемо вам процес використання попередньо створеного scikit-вчитися контейнер для запуску preprocessing.py і postprocessing.py.
Виготовити контейнер
На цьому кроці ми виконуємо роль інженера MLOps, який виготовляє контейнер, створений на попередньому кроці.
Ми використовуємо покрокові функції для організації робочого процесу. Функції Step Functions забезпечують виняткову гнучкість в інтеграції різноманітних служб у робочий процес, враховуючи будь-які існуючі залежності, які можуть існувати в застарілій системі. Такий підхід гарантує безпроблемну інтеграцію та роботу всіх необхідних компонентів у бажаній послідовності, що забезпечує ефективне та ефективне рішення робочого процесу.
Функції Step можуть керувати певними службами AWS безпосередньо з мови держав Amazon. Щоб дізнатися більше про роботу з Step Functions та її інтеграцію з SageMaker, див Керуйте SageMaker за допомогою покрокових функцій. Використовуючи можливість інтеграції Step Functions із SageMaker, ми запускаємо сценарії попередньої та постобробки за допомогою завдання обробки SageMaker у режимі сценарію та запускаємо висновок як завдання обробки SageMaker за допомогою спеціальний контейнер. Ми робимо це за допомогою AWS SDK для Python (Boto3) CreateProcessingJob Виклики API.
Попередня обробка
SageMaker пропонує кілька варіантів запуску власного коду. Якщо у вас є лише сценарій без будь-яких настроюваних залежностей, ви можете запустити сценарій як власний сценарій (BYOS). Для цього просто передайте свій сценарій у попередньо зібраний контейнер фреймворку scikit-learn і запустіть завдання обробки SageMaker у режимі сценарію, використовуючи параметри ContainerArguments і ContainerEntrypoint у Специфікація програми API. Це простий і зручний спосіб запуску простих сценаріїв.
Перевірте конфігурацію стану «Режим сценарію попередньої обробки» в зразок робочого процесу крокових функцій щоб зрозуміти, як налаштувати виклик API CreateProcessingJob для запуску спеціального сценарію.
Висновок
Ви можете запустити спеціальний контейнер за допомогою Створіть свій власний контейнер для обробки підхід. Завдання обробки SageMaker працює з /opt/ml
локальний шлях, і ви можете вказати свої ProcessingInputs та їхній локальний шлях у конфігурації. Потім завдання «Обробка» копіює артефакти в локальний контейнер і запускає завдання. Після завершення завдання він копіює артефакти, указані в локальному шляху до ProcessingOutputs, у вказане зовнішнє розташування.
Перевірте конфігурацію стану «Inference Custom Container» у зразок робочого процесу крокових функцій щоб зрозуміти, як налаштувати виклик API CreateProcessingJob для запуску спеціального контейнера.
Подальша обробка
Ви можете запустити сценарій постобробки так само, як і сценарій попередньої обробки, використовуючи крок «Функції кроку CreateProcessingJob». Запуск сценарію постобробки дозволяє виконувати настроювані завдання обробки після завершення завдання логічного висновку.
Створіть робочий процес крокових функцій
Для швидкого прототипування ми використовуємо покрокові функції Мова штатів Амазонки. Ви можете редагувати визначення крокових функцій безпосередньо за допомогою мови станів. Зверніться до зразок робочого процесу крокових функцій.
Ви можете створити новий автомат стану Step Functions на консолі Step Functions, вибравши Напишіть свій робочий процес у коді.
Функції Step можуть переглянути ресурси, які ви використовуєте, і створити роль. Однак ви можете побачити таке повідомлення:
«Крокові функції не можуть створити IAM-політику, якщо RoleArn для SageMaker походить із шляху. Жорстко закодуйте роль SageMaker RoleArn у визначенні кінцевого автомата або виберіть наявну роль із відповідними дозволами для покрокових функцій для виклику SageMaker».
Щоб вирішити цю проблему, ви повинні створити Управління ідентифікацією та доступом AWS (IAM) роль для крокових функцій. Інструкції див Створення ролі IAM для вашого кінцевого автомата. Потім додайте таку політику IAM, щоб надати необхідні дозволи для запуску робочого процесу:
На наступному малюнку показано потік даних і зображень контейнерів на кожному кроці робочого процесу крокових функцій.
Нижче наведено список мінімально необхідних параметрів для ініціалізації в покрокових функціях; Ви також можете звернутися до зразок вхідних параметрів JSON:
- input_uri – URI S3 для вхідних файлів
- output_uri – URI S3 для вихідних файлів
- code_uri – URI S3 для файлів сценаріїв
- custom_image_uri – URI контейнера для спеціального контейнера, який ви створили
- scikit_image_uri – URI контейнера для попередньо створеної структури scikit-learn
- роль – Роль виконання для виконання завдання
- тип_примірника – Тип екземпляра, який потрібно використовувати для запуску контейнера
- обсяг_розміру – Розмір обсягу зберігання, який вам потрібен для контейнера
- max_runtime – Максимальний час роботи для контейнера зі значенням за замовчуванням 1 година
Запустіть робочий процес
Ми розбили застарілий код на керовані частини: попередню обробку, висновок і постобробку. Щоб підтримати наші потреби в висновках, ми створили спеціальний контейнер, оснащений необхідними бібліотечними залежностями. Ми плануємо використовувати покрокові функції, скориставшись перевагами їх здатності викликати SageMaker API. Ми продемонстрували два методи запуску власного коду за допомогою SageMaker API: завдання SageMaker Processing, яке використовує попередньо створене зображення та використовує власний сценарій під час виконання, і завдання SageMaker Processing, яке використовує спеціальний контейнер, який містить необхідні артефакти для запуску спеціального висновку.
На наступному малюнку показано запуск робочого процесу крокових функцій.
Підсумки
У цьому дописі ми обговорили процес міграції застарілого коду ML Python із локальних середовищ розробки та впровадження стандартизованої процедури MLOps. Завдяки цьому підходу ви можете без особливих зусиль перенести сотні моделей і включити бажані корпоративні практики розгортання. Ми представили два різні методи запуску власного коду на SageMaker, і ви можете вибрати той, який найкраще відповідає вашим потребам.
Якщо вам потрібне рішення з широкими можливостями налаштування, рекомендується використовувати підхід спеціального контейнера. Якщо у вас є базові сценарії та вам не потрібно створювати власний контейнер, як описано на етапі попередньої обробки, згаданому раніше, вам буде зручніше використовувати готові зображення для запуску власного сценарію. Крім того, за потреби ви можете застосувати це рішення для контейнеризації етапів навчання та оцінки застарілої моделі, як у цьому дописі контейнеризовано етап висновку.
Про авторів
Бхавана Чірумамілла є старшим постійним архітектором в AWS із сильним захопленням операціями з даними та машинним навчанням. Вона має багатий досвід і ентузіазм, щоб допомогти підприємствам створювати ефективні дані та стратегії ML. У вільний час Бхавана любить проводити час із сім’єю та займатися різними видами діяльності, такими як подорожі, походи, садівництво та перегляд документальних фільмів.
Шям Намаварам є старшим архітектором рішень у сфері штучного інтелекту (AI) і машинного навчання (ML) в Amazon Web Services (AWS). Він пристрасно працює з клієнтами, щоб прискорити впровадження штучного інтелекту та машинного навчання, надаючи технічне керівництво та допомагаючи їм впроваджувати інновації та створювати безпечні хмарні рішення на AWS. Він спеціалізується на AI та ML, контейнерах і технологіях аналітики. Крім роботи, він любить займатися спортом і подорожувати природою.
Цінвей Лі є спеціалістом з машинного навчання в Amazon Web Services. Він отримав ступінь доктора філософії в галузі операційних досліджень після того, як зламав рахунок гранту на дослідження свого радника і не зміг присудити Нобелівську премію, яку він обіцяв. Зараз він допомагає клієнтам у сфері фінансових послуг і страхування створювати рішення машинного навчання на AWS. У вільний час любить читати та викладати.
Шрініваса Шейк є архітектором рішень в AWS у Бостоні. Він допомагає корпоративним клієнтам прискорити їх шлях до хмари. Він захоплюється контейнерами та технологіями машинного навчання. У вільний час любить проводити час із сім’єю, готувати їжу та подорожувати.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/bring-legacy-machine-learning-code-into-amazon-sagemaker-using-aws-step-functions/
- :є
- $UP
- 1
- 10
- 100
- 214
- 7
- 8
- a
- здатність
- МЕНЮ
- прискорювати
- доступ
- рахунки
- Діяти
- дію
- діяльності
- доданий
- Додатково
- адреса
- дотримуватися
- Прийняття
- просунутий
- Перевага
- після
- AI
- ВСІ
- дозволяє
- Amazon
- Amazon SageMaker
- Amazon Web Services
- Веб-служби Amazon (AWS)
- кількість
- аналітика
- та
- API
- Інтерфейси
- додаток
- Застосовувати
- підхід
- відповідний
- архітектура
- ЕСТЬ
- штучний
- штучний інтелект
- Штучний інтелект (AI)
- AS
- At
- приєднувати
- автоматично
- доступний
- AWS
- AWS Машинне навчання
- Функції кроку AWS
- заснований
- основний
- BE
- починати
- КРАЩЕ
- Бостон
- приносити
- Приносить
- Зламав
- Зламаний
- будувати
- Створюємо
- побудований
- вбудований
- by
- call
- званий
- Виклики
- CAN
- не може
- випадок
- випадків
- певний
- зміна
- Вибирати
- клієнт
- хмара
- кластер
- код
- співпрацювати
- COM
- повний
- комплекс
- Компоненти
- всеосяжний
- стан
- конфігурація
- Консоль
- будувати
- Контейнер
- Контейнери
- містить
- контроль
- Зручний
- створювати
- створює
- створення
- В даний час
- виготовлений на замовлення
- Клієнти
- настроюється
- дані
- вчений даних
- глибше
- дефолт
- доставляти
- демонструвати
- розгортання
- розгортання
- описаний
- бажаний
- робочий стіл
- розвиненою
- розвивається
- розробка
- різний
- безпосередньо
- обговорювалися
- чіткий
- Різне
- Docker
- документальні фільми
- домен
- Не знаю
- вниз
- під час
- кожен
- Раніше
- легко
- ефект
- Ефективний
- ефективний
- зусилля
- або
- Усуває
- залучення
- інженер
- забезпечувати
- гарантує
- підприємство
- підприємств
- ентузіазм
- Навколишнє середовище
- середовищах
- обладнаний
- помилки
- оцінка
- приклад
- винятковий
- виконання
- існуючий
- досвід
- зазнають
- продовжити
- зовнішній
- сприяння
- не вдалося
- Знайомство
- сім'я
- Рисунок
- філе
- фінансовий
- фінансова служба
- знайти
- відповідати
- Гнучкість
- потік
- стежити
- після
- для
- Рамки
- від
- повністю
- функція
- функціональний
- функціональність
- Функції
- Крім того
- породжувати
- GitHub
- надавати
- керівництво
- Гід
- Мати
- допомога
- допомогу
- допомагає
- на вищому рівні
- дуже
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- Сотні
- ідентифікований
- Особистість
- зображення
- зображень
- реалізація
- реалізації
- імпорт
- важливо
- in
- В інших
- включати
- включати
- промисловість
- Інфраструктура
- початковий
- ініціювати
- оновлювати
- вхід
- встановлювати
- установка
- екземпляр
- інструкції
- страхування
- інтегрований
- Інтеграція
- інтеграція
- Інтелект
- взаємодіяти
- залучений
- участь
- IT
- ЙОГО
- робота
- Джобс
- подорож
- JPG
- json
- тільки один
- мова
- великий
- останній
- УЧИТЬСЯ
- вивчення
- Legacy
- libraries
- бібліотека
- Життєвий цикл
- як
- LINK
- список
- місцевий
- розташування
- подивитися
- машина
- навчання за допомогою машини
- головний
- управляти
- вдалося
- управління
- вручну
- максимальний
- згаданий
- повідомлення
- метод
- методика
- мігрувати
- міграція
- мінімальний
- ML
- MLOps
- режим
- модель
- Моделі
- модульний
- більше
- найбільш
- переміщення
- Названий
- природа
- навігація
- необхідно
- Необхідність
- потреби
- Нові
- Нобелівська премія
- ноутбук
- номер
- of
- Пропозиції
- on
- ONE
- відкриття
- працює
- операції
- оптимізований
- Опції
- організував
- організації
- Організований
- Інше
- вихід
- поза
- власний
- власність
- пакет
- параметри
- частини
- пристрасть
- пристрасний
- шлях
- Виконувати
- Дозволи
- план
- plato
- Інформація про дані Платона
- PlatoData
- ігри
- політика
- пошта
- практика
- практики
- передбачати
- представлений
- попередній
- приз
- процес
- обробка
- Програмування
- пообіцяв
- правильний
- макетування
- забезпечувати
- за умови
- забезпечує
- забезпечення
- Тягне
- цілей
- штовхнув
- Python
- Швидко
- швидко
- діапазон
- читання
- отримано
- рекомендований
- Рефактор
- відноситься
- зареєстрований
- регістри
- реєстру
- Сховище
- вимагати
- вимагається
- Вимога
- дослідження
- ресурс
- ресурси
- відповідальний
- результат
- в результаті
- багаторазовий
- Роль
- прогін
- біг
- мудрець
- масштабовані
- сценарій
- вчений
- scikit-вчитися
- scripts
- Sdk
- плавно
- безпечний
- вибирає
- старший
- окремий
- Послідовність
- Без сервера
- обслуговування
- Послуги
- комплект
- набори
- налаштування
- установка
- кілька
- Поділитись
- зсув
- Показувати
- показаний
- Шоу
- простий
- просто
- один
- Розмір
- So
- рішення
- Рішення
- деякі
- спеціаліст
- спеціалізується
- конкретний
- конкретно
- зазначений
- Витрати
- спинов
- SPORTS
- етапи
- автономні
- починається
- стан
- Заява
- Штати
- Крок
- заходи
- зберігання
- зберігати
- просто
- стратегії
- раціоналізувати
- упорядкування
- сильний
- студія
- такі
- підходящий
- підтримка
- SYS
- система
- TAG
- Приймати
- приймає
- взяття
- завдання
- Навчання
- технічний
- Технології
- Що
- Команда
- їх
- Їх
- Ці
- тисячі
- три
- через
- час
- до
- інструмент
- інструменти
- Навчання
- переклад
- Подорож
- що лежить в основі
- розуміти
- оновлений
- використання
- використання випадку
- утиліта
- використовувати
- використовувати
- використовує
- значення
- різний
- версія
- обсяг
- спостереження
- Багатство
- Web
- веб-сервіси
- який
- ВООЗ
- волі
- з
- в
- без
- слова
- Work
- робочий
- працює
- Ти
- вашу
- зефірнет