Мы рады объявить о двух новых возможностях в Студия Amazon SageMaker это ускорит итеративную разработку для специалистов по машинному обучению (ML): поддержка локального режима и Docker. Разработка модели машинного обучения часто включает в себя медленные циклы итераций, когда разработчики переключаются между кодированием, обучением и развертыванием. Каждый шаг требует ожидания запуска удаленных вычислительных ресурсов, что задерживает проверку реализаций и получение отзывов об изменениях.
Благодаря локальному режиму разработчики теперь могут обучать и тестировать модели, отлаживать код и проверять сквозные конвейеры непосредственно на своем экземпляре ноутбука SageMaker Studio без необходимости развертывания удаленных вычислительных ресурсов. Это сокращает цикл итерации с минут до секунд, повышая производительность разработчиков. Поддержка Docker в блокнотах SageMaker Studio позволяет разработчикам легко создавать контейнеры Docker и получать доступ к предварительно созданным контейнерам, обеспечивая единообразную среду разработки для всей команды и избегая трудоемкой настройки и управления зависимостями.
Поддержка локального режима и Docker обеспечивает оптимизированный рабочий процесс для проверки изменений кода и создания прототипов моделей с использованием локальных контейнеров, работающих на блокноте SageMaker Studio.
пример. В этом посте мы покажем вам, как настроить локальный режим в SageMaker Studio, выполнить образец обучающего задания и развернуть модель на Создатель мудреца Амазонки конечная точка из блокнота SageMaker Studio.
Локальный режим SageMaker Studio
В SageMaker Studio представлен локальный режим, позволяющий запускать задания обучения, вывода, пакетного преобразования и обработки SageMaker непосредственно на экземплярах блокнота JupyterLab, Code Editor или SageMaker Studio Classic, не требуя удаленных вычислительных ресурсов. Преимущества использования локального режима включают в себя:
- Мгновенная проверка и тестирование рабочих процессов прямо в интегрированных средах разработки (IDE).
- Ускоренная итерация локальных запусков для небольших заданий для проверки результатов и раннего выявления проблем.
- Повышение эффективности разработки и отладки за счет устранения необходимости ожидания заданий удаленного обучения.
- Немедленная обратная связь по изменениям кода перед запуском полных заданий в облаке.
На следующем рисунке показан рабочий процесс с использованием локального режима в SageMaker.
Чтобы использовать локальный режим, установите instance_type='local'
при выполнении заданий SageMaker Python SDK, таких как обучение и логический вывод. При этом они будут запускаться на экземплярах, используемых вашими 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 Container (Amazon ECR), учетная запись, в которой размещен образ ECR, должна предоставить разрешение на доступ к учетной записи пользователя. Управление идентификацией и доступом (IAM) роль. Роль домена также должна разрешать доступ к Amazon ECR.
- Чтобы включить возможности локального режима и Docker, необходимо установить
EnableDockerAccess
параметр имеет значение true для доменаDockerSettings
используя Интерфейс командной строки AWS (AWS CLI). Это позволяет пользователям в домене использовать функции локального режима и Docker. По умолчанию локальный режим и Docker отключены в SageMaker Studio. Все существующие приложения SageMaker Studio необходимо перезапустить, чтобы обновление службы Docker вступило в силу. Ниже приведен пример команды AWS CLI для обновления домена SageMaker Studio:
- Вам необходимо обновить роль IAM SageMaker, чтобы иметь возможность отправить изображения Docker в Amazon ECR:
Запуск файлов Python в пространствах SageMaker Studio в локальном режиме.
SageMaker Studio JupyterLab и редактор кода (на основе Code-OSS, код Visual Studio – с открытым исходным кодом), расширяет возможности SageMaker Studio, позволяя вам писать, тестировать, отлаживать и запускать код аналитики и машинного обучения с помощью популярной облегченной интегрированной среды разработки. Более подробную информацию о том, как начать работу с IDE SageMaker Studio, см. Повысьте производительность в Amazon SageMaker Studio: представляем JupyterLab Spaces и инструменты генеративного искусственного интеллекта и Новинка: редактор кода на основе Code-OSS VS Code с открытым исходным кодом теперь доступен в Amazon SageMaker Studio.. Выполните следующие шаги:
- Создайте новый терминал.
- Установите плагин Docker CLI и Docker Compose, следуя инструкциям ниже. Репо GitHub. Если связанные команды не работают, запускайте команды по одной.
Вам необходимо обновить SageMaker SDK до последней версии.
- Run
pip install sagemaker -Uq
в терминале.
Только для редактора кода вам необходимо настроить среду Python для запуска в текущем терминале.
- В редакторе кода на вкладке В меню Файлвыберите Настройки и Настройки.
- Найдите и выберите Терминал: выполнить в каталоге файлов.
- В редакторе кода или JupyterLab откройте
scikit_learn_script_mode_local_training_and_serving
папку и запуститеscikit_learn_script_mode_local_training_and_serving.py
.
Вы можете запустить скрипт, выбрав Run в редакторе кода или с помощью 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 в пространствах SageMaker Studio.
На этом этапе вы устанавливаете Docker в пространстве приложений JupyterLab (или Code Editor) и используете 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 с помощью следующих команд, которые создадут простой образ веб-сервера Flask из базового образа Python: 3.10.13-bullseye, размещенного на Докер Хаб:
Следующий код показывает содержимое примера файла приложения flask. app.py
:
Кроме того, вы можете обновить эталонные команды Dockerfile, включив в них пакеты и артефакты по вашему выбору.
- Создайте образ Docker, используя эталонный файл Dockerfile:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Включают --network
sagemaker в команде сборки Docker, иначе сборка завершится неудачей. Контейнеры нельзя запускать в мосте Docker по умолчанию или в пользовательских сетях Docker. Контейнеры запускаются в той же сети, что и контейнер приложения SageMaker Studio. Пользователи могут использовать только sagemaker в качестве имени сети.
- Когда сборка будет завершена, проверьте, существует ли образ. Повторно пометьте сборку как образ ECR и нажмите кнопку. Если у вас возникли проблемы с разрешениями, запустите команду aws ecr get-login-password… и попробуйте перезапустить push/pull Docker:
Тестовые образы Docker
Установка Docker внутри пространства JupyterLab (или редактора кода) SageMaker Studio позволяет тестировать готовые или пользовательские образы 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 выберите Студия Классик в области навигации, затем выберите Stop.
- В своем домене SageMaker Studio выберите ЮпитерЛаб or Редактор кода в области навигации выберите свое приложение, а затем выберите Stop.
Заключение
Локальный режим SageMaker Studio и поддержка Docker позволяют разработчикам быстрее создавать, тестировать и выполнять итерации реализаций машинного обучения, не покидая своего рабочего места. Предоставляя мгновенный доступ к тестовым средам и результатам, эти возможности оптимизируют рабочие процессы и повышают производительность. Попробуйте поддержку локальной модели SageMaker Studio и поддержку Docker, используя наш быстрая встроенная функция, что позволяет за считанные минуты развернуть новый домен для отдельных пользователей. Поделитесь своими мыслями в разделе комментариев!
Об авторах
Швета Сингх — старший менеджер по продукту в команде платформы машинного обучения (ML) Amazon SageMaker в AWS, ведущей SageMaker Python SDK. Она работала на нескольких должностях в Amazon более 5 лет. Она имеет степень бакалавра наук в области компьютерной инженерии и магистра наук в области финансовой инженерии, полученные в Нью-Йоркском университете.
Эйтан Села — специалист по генеративному искусственному интеллекту и машинному обучению, архитектор решений в AWS. Он работает с клиентами AWS, предоставляя рекомендации и техническую помощь, помогая им создавать и использовать решения генеративного искусственного интеллекта и машинного обучения на AWS. В свободное время Эйтан любит бегать трусцой и читать последние статьи о машинном обучении.
Пранав Мурти — специалист по архитектуре решений AI/ML в AWS. Он специализируется на оказании помощи клиентам в создании, обучении, развертывании и переносе рабочих нагрузок машинного обучения (ML) в SageMaker. Ранее он работал в полупроводниковой промышленности, разрабатывая модели большого компьютерного зрения (CV) и обработки естественного языка (NLP) для улучшения полупроводниковых процессов с использованием современных методов машинного обучения. В свободное время любит играть в шахматы и путешествовать. Вы можете найти Пранав на LinkedIn.
Муфаддал Рохавала — инженер-программист в AWS. Он работает над библиотекой SageMaker Python SDK для Amazon SageMaker. В свободное время он любит путешествовать, заниматься активным отдыхом и является футбольным болельщиком.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/