Генеративный анализ данных

Ускорьте рабочие процессы машинного обучения с помощью локального режима Amazon SageMaker Studio и поддержки Docker | Веб-сервисы Amazon

Дата:

Мы рады объявить о двух новых возможностях в Студия 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.

Рабочий процесс с использованием локального режима в 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 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:
aws sagemaker --region <REGION> 
update-domain --domain-id <DOMAIN-ID> 
--domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:CompleteLayerUpload",
        "ecr:UploadLayerPart",
        "ecr:InitiateLayerUpload",
        "ecr:BatchCheckLayerAvailability",
        "ecr:PutImage"
      ],
      "Resource": "arn:aws:ecr:us-east-2:123456789012:repository/<repositoryname>"
    },
    {
      "Effect": "Allow",
      "Action": "ecr:GetAuthorizationToken",
      "Resource": "*"
    }
  ]
}

Запуск файлов 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.. Выполните следующие шаги:

Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Запуск файлов Python в пространствах SageMaker Studio в локальном режиме.

  • Создайте новый терминал.  Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Запуск файлов Python в пространствах SageMaker Studio в локальном режиме.
  • Установите плагин Docker CLI и Docker Compose, следуя инструкциям ниже. Репо GitHub. Если связанные команды не работают, запускайте команды по одной.

Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Вам необходимо обновить SageMaker SDK до последней версии.

  • Run pip install sagemaker -Uq в терминале.

Только для редактора кода вам необходимо настроить среду Python для запуска в текущем терминале.

  • В редакторе кода на вкладке В меню Файлвыберите Настройки и Настройки.

Запуск файлов Python в пространствах SageMaker Studio в локальном режиме.

  • Найдите и выберите Терминал: выполнить в каталоге файлов.

Запуск файлов Python в пространствах SageMaker Studio в локальном режиме.

  • В редакторе кода или JupyterLab откройте scikit_learn_script_mode_local_training_and_serving папку и запустите scikit_learn_script_mode_local_training_and_serving.py .

Вы можете запустить скрипт, выбрав Run в редакторе кода или с помощью CLI в терминале JupyterLab. Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Вы сможете увидеть, как модель обучается локально. Затем вы локально развертываете модель в конечной точке SageMaker и вычисляете среднеквадратическую ошибку (RMSE). Запуск файлов Python в пространствах SageMaker Studio в локальном режиме. Запуск файлов Python в пространствах SageMaker Studio в локальном режиме.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

Вы также можете использовать блокнот в SageMaker Studio Classic для выполнения небольшого обучающего задания на CIFAR10 используя локальный режим, разверните модель локально и выполните логический вывод.

Настройте свой блокнот

Чтобы настроить блокнот, выполните следующие действия:

  • Откройте SageMaker Studio Classic и клонируйте следующее: Репо GitHub.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Откройте приложение pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Что касается Фото товара, выберите PyTorch 2.1.0 Python 3.10 CPU Optimized.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме Убедитесь, что на вашем ноутбуке указан правильный экземпляр и выбранное ядро. Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Откройте терминал, выбрав Запуск терминала в текущем изображении SageMaker.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Установите плагин Docker CLI и Docker Compose, следуя инструкциям ниже. Репо GitHub.

Поскольку вы используете Docker из SageMaker Studio Classic, удалите sudo при запуске команд, поскольку терминал уже работает от имени суперпользователя. Для SageMaker Studio Classic команды установки зависят от ОС образа приложения SageMaker Studio. Например, образы платформы на основе DLC основаны на Ubuntu, в которой будут работать следующие инструкции. Однако для образа на основе Debian, такого как DataScience Images, вы должны следовать инструкциям, приведенным ниже. Репо GitHub. Если связанные команды не работают, запускайте команды по одной. Вы должны увидеть отображаемую версию Docker. Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Оставьте окно терминала открытым, вернитесь к блокноту и начните запускать его ячейку за ячейкой.

Обязательно запустите ячейку с помощью pip install -U sagemaker Итак, вы используете последнюю версию SageMaker Python SDK.

Местное обучение

Когда вы начнете выполнять локальное задание обучения SageMaker, вы увидите следующие строки журнала:

INFO:sagemaker.local.image:'Docker Compose' found using Docker CLI.
INFO:sagemaker.local.local_session:Starting training job

Это указывает на то, что обучение проводилось локально с использованием Docker.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

Будьте терпеливы, пока pytorch-training:2.1-cpu-py310 Образ Docker извлекается. Из-за большого размера (5.2 ГБ) это может занять несколько минут.

Образы Docker будут храниться в корневом томе экземпляра приложения SageMaker Studio, который недоступен конечным пользователям. Единственный способ получить доступ к образам Docker и взаимодействовать с ними — через открытые операции Docker API.

С точки зрения конфиденциальности пользователя, платформа SageMaker Studio никогда не получает доступ к пользовательским изображениям и не сохраняет их.

По завершении обучения вы сможете увидеть следующие строки журнала успехов:

8zlz1zbfta-sagemaker-local exited with code 0
Aborting on container exit...
Container 8zlz1zbfta-sagemaker-local  Stopping
Container 8zlz1zbfta-sagemaker-local  Stopped
INFO:sagemaker.local.image:===== Job Complete =====

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

Локальный вывод

Выполните следующие шаги:

  • Разверните конечную точку SageMaker, используя локальный режим SageMaker.

Будьте терпеливы, пока pytorch-inference:2.1-cpu-py310 Образ Docker извлекается. Из-за большого размера (4.32 ГБ) это может занять несколько минут.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Вызовите конечную точку SageMaker, развернутую локально, с помощью тестовых образов.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

Вы сможете увидеть предсказанные классы: лягушка, корабль, машина и самолет:

Predicted:  frog ship  car plane

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Поскольку локальная конечная точка SageMaker все еще работает, вернитесь к открытому окну терминала и перечислите запущенные контейнеры:

docker ps

Вы сможете увидеть бег pytorch-inference:2.1-cpu-py310 контейнер, поддерживающий конечную точку SageMaker.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Чтобы закрыть локальную конечную точку SageMaker и остановить работающий контейнер, поскольку одновременно можно запускать только одну локальную конечную точку, запустите код очистки.

Моделирование обучения и вывода в SageMaker Studio Classic в локальном режиме

  • Чтобы убедиться, что контейнер 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 как конфигурации жизненного цикла

Настройка установки Docker как конфигурации жизненного цикла

Создавайте и тестируйте собственные образы 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, запустите следующий код:

# to verify docker service
sagemaker-user@default:~$ docker version
Client: Docker Engine - Community
Version:           24.0.7
API version:       1.41 (downgraded from 1.43)
Go version:        go1.20.10
Git commit:        afdd53b
Built:             Thu Oct 26 09:07:41 2023
OS/Arch:           linux/amd64
Context:           default

Server:
Engine:
Version:          20.10.25
API version:      1.41 (minimum version 1.12)
Go version:       go1.20.10
Git commit:       5df983c
Built:            Fri Oct 13 22:46:59 2023
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          1.7.2
GitCommit:        0cae528dd6cb557f7201036e9f43420650207b58
runc:
Version:          1.1.7
GitCommit:        f19387a6bec4944c770f7668ab51c4348d9c2f38
docker-init:
Version:          0.19.0
GitCommit:        de40ad0

Чтобы создать собственный образ Docker внутри пространства JupyterLab (или редактора кода), выполните следующие шаги:

  • Создайте пустой Dockerfile:

touch Dockerfile

  • Отредактируйте файл Dockerfile с помощью следующих команд, которые создадут простой образ веб-сервера Flask из базового образа Python: 3.10.13-bullseye, размещенного на Докер Хаб:
# Use the specified Python base image
FROM python:3.10.13-bullseye

# Create a code dir
RUN mkdir /code/

# Set the working directory in the container
WORKDIR /code

# Upgrade pip and install required packages
RUN python3 -m pip install --upgrade pip && 
python3 -m pip install flask

# Copy the app.py file to the container
COPY app.py /code/

# Set the command to run the app
ENTRYPOINT ["python", "app.py"]

Следующий код показывает содержимое примера файла приложения flask. app.py:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/')
def hello():
return jsonify({"response": "Hello"})

if __name__ == '__main__':
app.run(host='0.0.0.0', port=6006)

Кроме того, вы можете обновить эталонные команды 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:
sagemaker-user@default:~$ docker image list
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
myflaskapp      v1        d623f1538f20   27 minutes ago   489MB

sagemaker-user@default:~$ docker tag myflaskapp:v1 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1

sagemaker-user@default:~$ docker image list
REPOSITORY                                                  TAG       IMAGE ID       CREATED          SIZE
123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp     latest    d623f1538f20   27 minutes ago   489MB
myflaskapp                                                  v1        d623f1538f20   27 minutes ago   489MB

sagemaker-user@default:~$ aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

sagemaker-user@default:~$ docker push 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:latest

Тестовые образы Docker

Установка Docker внутри пространства JupyterLab (или редактора кода) SageMaker Studio позволяет тестировать готовые или пользовательские образы Docker в качестве контейнеров (или контейнерных приложений). В этом разделе мы используем команду docker run для подготовки контейнеров Docker внутри пространства SageMaker Studio для тестирования контейнерных рабочих нагрузок, таких как веб-службы REST и сценарии Python. Выполните следующие шаги:

sagemaker-user@default:~$ docker image list
REPOSITORY                                                  TAG       IMAGE ID       CREATED       SIZE

  • Если тестовый образ не существует, запустите 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:

sagemaker-user@default:~$ docker run --network sagemaker 905418447590.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
* Serving Flask app 'app'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:6006
* Running on http://169.255.255.2:6006

  • Чтобы проверить, активна ли ваша конечная веб-точка, перейдите по URL-адресу. https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/.

Вы должны увидеть ответ JSON, похожий на следующий снимок экрана.

Настройка установки Docker как конфигурации жизненного цикла

Убирать

Чтобы избежать ненужных расходов, удалите ресурсы, которые вы создали при выполнении примеров в этом посте:

  1. В своем домене SageMaker Studio выберите Студия Классик в области навигации, затем выберите Stop.
  2. В своем домене 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. В свободное время он любит путешествовать, заниматься активным отдыхом и является футбольным болельщиком.

Spot_img

Последняя разведка

Spot_img

Чат с нами

Всем привет! Могу я чем-нибудь помочь?