Ми раді оголосити про дві нові можливості в Студія Amazon SageMaker що прискорить ітераційну розробку для практиків машинного навчання (ML): локальний режим і підтримка Docker. Розробка моделі ML часто передбачає повільні цикли повторення, коли розробники перемикаються між кодуванням, навчанням і розгортанням. Кожен крок вимагає очікування запуску віддалених обчислювальних ресурсів, що затримує перевірку реалізацій і отримання відгуків про зміни.
Завдяки локальному режиму розробники тепер можуть навчати та тестувати моделі, налагоджувати код і перевіряти наскрізні конвеєри безпосередньо на своєму ноутбуці SageMaker Studio без необхідності розкручувати віддалені обчислювальні ресурси. Це скорочує цикл ітерації з хвилин до секунд, підвищуючи продуктивність розробника. Підтримка Docker у ноутбуках SageMaker Studio дозволяє розробникам легко створювати контейнери Docker і отримувати доступ до готових контейнерів, забезпечуючи узгоджене середовище розробки для всієї команди та уникаючи трудомісткого налаштування та керування залежностями.
Підтримка локального режиму та Docker пропонує спрощений робочий процес для перевірки змін коду та створення прототипів моделей за допомогою локальних контейнерів, що працюють на ноутбуці SageMaker Studio
екземпляр. У цьому дописі ми допоможемо вам налаштувати локальний режим у SageMaker Studio, запустити зразкове навчальне завдання та розгорнути модель на Amazon SageMaker кінцева точка із блокнота SageMaker Studio.
Локальний режим SageMaker Studio
SageMaker Studio представляє локальний режим, який дає вам змогу запускати навчання SageMaker, робити висновок, пакетне перетворення та виконувати завдання обробки безпосередньо на екземплярах блокнота JupyterLab, редакторі коду або SageMaker Studio Classic, не потребуючи віддалених обчислювальних ресурсів. Переваги використання локального режиму включають:
- Миттєва перевірка та тестування робочих процесів безпосередньо в інтегрованих середовищах розробки (IDE)
- Швидша ітерація через локальні прогони для невеликих завдань для перевірки результатів і раннього виявлення проблем
- Покращена ефективність розробки та налагодження завдяки виключенню очікування віддаленого навчання
- Миттєвий відгук про зміни коду перед виконанням повних завдань у хмарі
На наступному малюнку показано робочий процес із використанням локального режиму на SageMaker.
Щоб використовувати локальний режим, установіть instance_type='local'
під час виконання завдань SDK SageMaker Python, таких як навчання та висновки. Це запустить їх на примірниках, які використовуються вашими IDE SageMaker Studio, замість надання хмарних ресурсів.
Хоча певні можливості, такі як розподілене навчання, доступні лише в хмарі, локальний режим усуває необхідність перемикати контексти для швидких ітерацій. Коли ви будете готові скористатися перевагами повної потужності та масштабу SageMaker, ви зможете безперешкодно запускати свій робочий процес у хмарі.
Підтримка Docker у SageMaker Studio
SageMaker Studio тепер також дозволяє створювати та запускати контейнери Docker локально на вашому ноутбуці SageMaker Studio. Ця нова функція дозволяє створювати та перевіряти зображення Docker у SageMaker Studio перед використанням їх для навчання SageMaker і висновків.
Наступна діаграма ілюструє високорівневу оркестровку Docker у SageMaker Studio.
Завдяки підтримці Docker у SageMaker Studio ви можете:
- Створюйте контейнери Docker з інтегрованими моделями та залежностями безпосередньо в SageMaker Studio
- Усуньте необхідність зовнішніх процесів збірки Docker, щоб спростити створення образу
- Запустіть контейнери локально, щоб перевірити функціональність перед розгортанням моделей у виробництві
- Повторно використовуйте локальні контейнери під час розгортання в SageMaker для навчання та розміщення
Хоча деякі розширені можливості Docker, як-от багатоконтейнерні та користувацькі мережі, не підтримуються на момент написання цієї статті, основна функція створення та запуску доступна для прискорення розробки контейнерів для робочих процесів створення власних контейнерів (BYOC).
Передумови
Щоб використовувати локальний режим у програмах SageMaker Studio, необхідно виконати наступні попередні умови:
- Для отримання зображень із Реєстр контейнерів Amazon Elastic (Amazon ECR), обліковий запис, на якому розміщено зображення ECR, повинен надавати дозвіл на доступ користувача Управління ідентифікацією і доступом (IAM) роль. Роль домену також має надавати доступ до Amazon ECR.
- Щоб увімкнути локальний режим і можливості Docker, ви повинні встановити
EnableDockerAccess
значення параметра true для доменуDockerSettings
використання Інтерфейс командного рядка AWS (AWS CLI). Це дозволяє користувачам у домені використовувати локальний режим і функції Docker. За замовчуванням локальний режим і Docker вимкнено в SageMaker Studio. Будь-які існуючі програми SageMaker Studio потрібно буде перезапустити, щоб оновлення служби Docker набуло чинності. Нижче наведено приклад команди AWS CLI для оновлення домену SageMaker Studio:
- Вам потрібно оновити роль SageMaker IAM, щоб мати можливість Push Docker зображення до Amazon ECR:
Запускайте файли Python у просторах SageMaker Studio за допомогою локального режиму
SageMaker Studio JupyterLab і редактор коду (на основі Code-OSS, код Visual Studio – відкритий вихідний код), розширює SageMaker Studio, щоб ви могли писати, тестувати, налагоджувати та запускати свою аналітику та код ML за допомогою популярної легкої IDE. Докладніше про те, як почати роботу з SageMaker Studio IDE, див Підвищення продуктивності в Amazon SageMaker Studio: представлення JupyterLab Spaces і генеративних інструментів ШІ та Нове – редактор коду на основі Code-OSS VS Code Open Source, тепер доступний в Amazon SageMaker Studio. Виконайте наступні дії:
- Створіть новий термінал.
- Установіть Docker CLI та плагін Docker Compose, дотримуючись наведених нижче інструкцій GitHub репо. Якщо ланцюгові команди не вдаються, виконуйте команди одну за одною.
Ви повинні оновити SageMaker SDK до останньої версії.
- прогін
pip install sagemaker -Uq
в терміналі.
Лише для редактора коду вам потрібно налаштувати середовище Python для запуску в поточному терміналі.
- У редакторі коду на меню Файл¸ вибрати переваги та Налаштування.
- Знайдіть і виберіть Термінал: Виконати в каталозі файлів.
- У редакторі коду або JupyterLab відкрийте
scikit_learn_script_mode_local_training_and_serving
папки та запустітьscikit_learn_script_mode_local_training_and_serving.py
файлу.
Ви можете запустити сценарій, вибравши прогін у редакторі коду або за допомогою CLI в терміналі JupyterLab. Ви зможете побачити, як модель тренується на місці. Потім ви локально розгортаєте модель на кінцевій точці SageMaker і обчислюєте середньоквадратичну помилку (RMSE
).
Симулюйте навчання та висновки в SageMaker Studio Classic за допомогою локального режиму
Ви також можете використовувати блокнот у SageMaker Studio Classic для виконання невеликого навчального завдання CIFAR10
використовуючи локальний режим, розгорніть модель локально та виконайте висновок.
Налаштуйте свій блокнот
Щоб налаштувати блокнот, виконайте такі кроки:
- Відкрийте SageMaker Studio Classic і клонуйте наступне GitHub репо.
- Відкрийте
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- для зображеннявиберіть
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Переконайтеся, що ваш блокнот відображає правильний екземпляр і вибір ядра.
- Відкрийте термінал, вибравши Запустіть термінал у поточному образі SageMaker.
- Установіть Docker CLI та плагін Docker Compose, дотримуючись наведених нижче інструкцій GitHub репо.
Оскільки ви використовуєте Docker із SageMaker Studio Classic, видаліть sudo під час виконання команд, оскільки термінал уже працює під керуванням суперкористувача. Для SageMaker Studio Classic команди встановлення залежать від ОС образу програми SageMaker Studio. Наприклад, фреймворки на основі DLC базуються на Ubuntu, у якому працюватимуть наведені нижче інструкції. Однак для образу на основі Debian, як-от DataScience Images, ви повинні дотримуватися наведених нижче інструкцій GitHub репо. Якщо ланцюгові команди не вдаються, виконуйте команди одну за одною. Ви повинні побачити версію Docker.
- Залиште вікно терміналу відкритим, поверніться до блокнота та почніть запускати його клітинку за клітинкою.
Обов’язково запустіть клітинку з pip install -U sagemaker
тому ви використовуєте останню версію SageMaker Python SDK.
Місцеве навчання
Коли ви починаєте виконувати локальне завдання навчання SageMaker, ви побачите такі рядки журналу:
Це означає, що навчання проводилося локально за допомогою Docker.
Будьте терплячі, поки pytorch-training:2.1-cpu-py310
Зображення Docker витягнуто. Через великий розмір (5.2 ГБ) це може зайняти кілька хвилин.
Зображення Docker зберігатимуться в кореневому томі примірника програми SageMaker Studio, який недоступний для кінцевих користувачів. Єдиний спосіб отримати доступ до образів Docker і взаємодіяти з ними — через доступні операції Docker API.
З точки зору конфіденційності користувача, платформа SageMaker Studio ніколи не отримує доступу до зображень користувача та не зберігає їх.
Після завершення навчання ви зможете побачити такі рядки журналу успіху:
Локальний висновок
Виконайте такі дії:
- Розгорніть кінцеву точку SageMaker за допомогою локального режиму SageMaker.
Будьте терплячі, поки pytorch-inference:2.1-cpu-py310
Зображення Docker витягнуто. Через великий розмір (4.32 ГБ) це може зайняти кілька хвилин.
- Викликати кінцеву точку SageMaker, розгорнуту локально, використовуючи тестові зображення.
Ви зможете побачити передбачені класи: жаба, корабель, автомобіль і літак:
- Оскільки локальна кінцева точка SageMaker все ще працює, поверніться до відкритого вікна терміналу та перелічіть запущені контейнери:
docker ps
Ви зможете побачити біг pytorch-inference:2.1-cpu-py310
контейнер, що підтримує кінцеву точку SageMaker.
- Щоб вимкнути локальну кінцеву точку SageMaker і зупинити запущений контейнер, оскільки одночасно можна запускати лише одну локальну кінцеву точку, запустіть код очищення.
- Щоб переконатися, що контейнер Docker не працює, ви можете перейти до відкритого вікна терміналу, запустити docker ps і переконатися, що запущених контейнерів немає.
- Якщо ви бачите, що контейнер працює, біжіть
docker stop <CONTAINER_ID>
щоб зупинити це.
Поради щодо використання локального режиму SageMaker
Якщо ви використовуєте SageMaker вперше, зверніться до Тренувати моделі машинного навчання. Щоб дізнатися більше про розгортання моделей для висновку за допомогою SageMaker, див Розгортайте моделі для висновків.
Майте на увазі такі рекомендації:
- Друк вхідних і вихідних файлів і папок, щоб зрозуміти набір даних і завантаження моделі
- Використовуйте 1–2 епохи та невеликі набори даних для швидкого тестування
- Попередньо встановіть залежності у Dockerfile, щоб оптимізувати налаштування середовища
- Ізолюйте код серіалізації в кінцевих точках для налагодження
Налаштуйте встановлення Docker як конфігурацію життєвого циклу
Ви можете визначити процес встановлення Docker як сценарій налаштування життєвого циклу (LCC), щоб спростити налаштування щоразу, коли запускається новий простір SageMaker Studio. LCC — це сценарії, які SageMaker запускає під час таких подій, як створення простору. Зверніться до лабораторія Юпітера, Редактор кодуабо SageMaker Studio Classic Налаштування LCC (за допомогою docker install cli як посилання), щоб дізнатися більше.
Створюйте та тестуйте власні образи Docker у просторах SageMaker Studio
На цьому кроці ви встановлюєте Docker у простір програми JupyterLab (або редактор коду) і використовуєте Docker для створення, тестування та публікації власних зображень Docker за допомогою просторів SageMaker Studio. Пробіли використовуються для керування потребами в сховищі та ресурсах деяких програм SageMaker Studio. Кожен простір має зв’язок 1:1 із екземпляром програми. Кожна створена підтримувана програма отримує власний простір. Щоб дізнатися більше про простори SageMaker, див Підвищення продуктивності в Amazon SageMaker Studio: представлення JupyterLab Spaces і генеративних інструментів ШІ. Переконайтеся, що ви надали новий простір із принаймні 30 ГБ пам’яті, щоб забезпечити достатньо місця для зберігання зображень і артефактів Docker.
Встановіть Docker всередині простору
Щоб інсталювати плагін Docker CLI та Docker Compose у просторі JupyterLab, виконайте наведені нижче команди. GitHub репо. Студія SageMaker підтримує лише Docker версії 20.10.X.
Створюйте образи Docker
Щоб підтвердити, що Docker встановлено та працює у вашому просторі JupyterLab, запустіть такий код:
Щоб створити власний образ Docker у просторі JupyterLab (або редактора коду), виконайте такі дії:
- Створіть порожній Dockerfile:
touch Dockerfile
- Відредагуйте Dockerfile за допомогою таких команд, які створюють простий образ веб-сервера колби з базового зображення python:3.10.13-bullseye, розміщеного на Докер-концентратор:
У наведеному нижче коді показано вміст прикладу файлу програми flask app.py
:
Крім того, ви можете оновити довідкові команди Dockerfile, щоб включити пакети та артефакти на ваш вибір.
- Створіть образ Docker за допомогою еталонного файлу Docker:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Include --network
sagemaker у вашій команді збірки докерів, інакше збірка завершиться помилкою. Контейнери не можна запускати в стандартних мостах Docker або користувацьких мережах Docker. Контейнери працюють у тій же мережі, що й контейнер програми SageMaker Studio. Користувачі можуть використовувати лише sagemaker для назви мережі.
- Коли ваша збірка буде завершена, перевірте, чи існує зображення. Повторно позначте збірку як зображення ECR і натисніть. Якщо у вас виникли проблеми з дозволом, виконайте команду aws ecr get-login-password… і спробуйте повторно запустити Docker push/pull:
Тестування зображень Docker
Встановлення Docker у просторі SageMaker Studio JupyterLab (або редактора коду) дає змогу тестувати попередньо створені або спеціальні зображення Docker як контейнери (або контейнеризовані програми). У цьому розділі ми використовуємо команду docker run для надання контейнерів Docker у просторі SageMaker Studio для тестування контейнерних робочих навантажень, таких як веб-сервіси REST і сценарії Python. Виконайте наступні дії:
- Якщо тестове зображення не існує, запустіть docker pull, щоб отримати зображення на вашій локальній машині:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Якщо у вас виникли проблеми з автентифікацією, виконайте такі команди:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Створіть контейнер для перевірки робочого навантаження:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Це відкриває новий екземпляр контейнера та запускає програму, визначену за допомогою ENTRYPOINT Docker:
- Щоб перевірити, чи ваша веб-кінцева точка активна, перейдіть за URL-адресою
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Ви повинні побачити відповідь JSON, подібну до наступного знімка екрана.
Прибирати
Щоб уникнути непотрібних витрат, видаліть ресурси, які ви створили під час виконання прикладів у цій публікації:
- У вашому домені SageMaker Studio виберіть Номер-студіо Classic на панелі навігації, а потім виберіть Стоп.
- У вашому домені SageMaker Studio виберіть лабораторія Юпітера or Редактор коду на панелі навігації виберіть свою програму, а потім виберіть Стоп.
Висновок
Локальний режим SageMaker Studio та підтримка Docker дозволяють розробникам швидше створювати, тестувати та повторювати впровадження ML, не виходячи з робочого простору. Забезпечуючи миттєвий доступ до тестових середовищ і результатів, ці можливості оптимізують робочі процеси та підвищують продуктивність. Спробуйте підтримку локальної моделі SageMaker Studio та Docker за допомогою нашої функція швидкої реєстрації, що дозволяє за лічені хвилини створити новий домен для окремих користувачів. Поділіться своїми думками в коментарях!
Про авторів
Швета Сінгх є старшим менеджером із продуктів у команді платформи Amazon SageMaker Machine Learning (ML) в AWS, очолює SageMaker Python SDK. Понад 5 років вона працювала в Amazon на кількох посадах. Вона має ступінь бакалавра наук у галузі комп’ютерної інженерії та ступінь магістра наук у галузі фінансової інженерії Нью-Йоркського університету
Ейтан Села є спеціалістом із генеративного штучного інтелекту та машинного навчання, архітектором рішень у AWS. Він працює з клієнтами AWS, щоб надавати вказівки та технічну допомогу, допомагаючи їм створювати та використовувати рішення Generative AI та Machine Learning на AWS. У вільний час Ейтан любить бігати підтюпцем і читати останні статті про машинне навчання.
Пранав Мурті є архітектором спеціалістів із штучного інтелекту та ML в AWS. Він зосереджується на допомозі клієнтам створювати, навчати, розгортати та переносити робочі навантаження машинного навчання (ML) на SageMaker. Раніше він працював у напівпровідниковій промисловості, розробляючи моделі великого комп’ютерного зору (CV) і обробки природної мови (NLP) для вдосконалення напівпровідникових процесів за допомогою найсучасніших методів машинного навчання. У вільний час любить грати в шахи та подорожувати. Ви можете знайти Pranav на LinkedIn.
Муфаддал Рохавала є інженером-програмістом в AWS. Він працює над бібліотекою SDK SageMaker Python для Amazon SageMaker. У вільний час він любить подорожі, активний відпочинок і є футбольним уболівальником.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/