Пример AutoGluon-Py3.8

Недавно мне захотелось создать собственный образ ядра для Amazon SageMaker Studio. Я следил за доступными сообщениями, но большинство из них, как правило, сосредотачиваются на том, чтобы делать это с помощью aws cli, в этом нет ничего плохого, но я хотел смоделировать то же самое с помощью функций консоли AWS, поскольку для быстрого тестирования я считаю это так же проще.

В этом посте я буду использовать то, что доступно в других постах, и опираться на это, чтобы упростить

  1. Создание собственного образа и отправка его в ECR с помощью SageMaker Studio Notebook с использованием sagemaker-cli.
  2. Прикрепление изображения из 1 к SageMaker Studio в качестве пользовательского изображения и использование его в блокноте SageMaker Studio.

В этом сообщении предполагается, что у вас есть учетная запись AWS и доступ к SageMaker и Elastic Container Registry (ECR), а также возможность создавать роли и разрешения IAM. Вы знакомы с SageMaker Studio и в некоторой степени использовали его. Вы будете запускать содержимое этого блога в блокноте SageMaker Studio по большей части и будете использовать консоль AWS для IAM и присоединения изображения к домену.

Примечание. Если у вас еще нет домена студии SageMaker, вы можете создать его, а затем продолжить здесь.

Если вам нужно ознакомиться с SageMaker и SageMaker Studio, ознакомьтесь с другими ресурсами и учебными пособиями AWS.

Пользовательский образ Docker

Выполните быстрый поиск на dockerhub для autogluon, и мы найдем последние образы для GPU и CPU, мы выберем образ GPU и создадим быстрый файл докера внутри Studio, запустив текстовый файл и переименовав его как Dockerfile со следующим содержимым (имя файла: Dockerfile)

FROM autogluon/autogluon:0.6.1-cuda11.3-jupyter-ubuntu20.04-py3.8

ARG NB_USER="sagemaker-user"
ARG NB_UID="1000"
ARG NB_GID="100"

RUN \
    useradd -m -s /bin/bash -N -u $NB_UID $NB_USER && \
    chmod g+w /etc/passwd && \
    echo "${NB_USER}    ALL=(ALL)    NOPASSWD:    ALL" >> /etc/sudoers && \
    # Prevent apt-get cache from being persisted to this layer.
    rm -rf /var/lib/apt/lists/*

RUN pip install ipykernel && \
        python -m ipykernel install --sys-prefix
        
USER $NB_UID

Я хочу разбить это на то, как я пришел к содержимому этого файла. Я начал с самой первой строки и постепенно добавлял остальные, запуская, выдавая ошибки, отлаживая и улучшая. Это очень поощряется в AWS. Я прохожу этот процесс, чтобы моим клиентам и коллегам не приходилось этого делать.

Когда я запускал с минимальным файлом докера, как показано ниже, я столкнулся с ошибками, когда GID и UID неверны. Я обновил их на консоли SageMaker безрезультатно.

FROM autogluon/autogluon:0.6.1-cuda11.3-jupyter-ubuntu20.04-py3.8

RUN pip install ipykernel && \
        python -m ipykernel install --sys-prefix

Я нашел дополнительные строки в файле, просмотрев образцы в этом репозитории AWS. https://github.com/aws-samples/sagemaker-studio-custom-image-samples

Основываясь на сообщениях об ошибках пользователя, GID, UID, я выбрал строки из образцов, которые, как я знал, могли это исправить.

Чтобы создать докер непосредственно из блокнота SageMaker Studio, вам понадобится утилита под названием sagemaker-studio-image-build. вы можете установить это непосредственно в блокноте SageMaker Studio с минимальным размером экземпляра и базовым ядром Python 2.0.

!pip install sagemaker-studio-image-build

Наряду с этой установкой вам потребуется несколько разрешений, позволяющих SageMaker вызывать сборку кода, отправлять изображения в ECR и сохранять артефакты сборки в S3. Следите за этим блогом до раздела «ИСПОЛЬЗОВАНИЕ CLI» и возвращайтесь.



После того, как у вас есть необходимые разрешения в соответствии с вышеуказанным блогом

Создание образа Docker

Вы можете создать это где угодно, если вы можете отправить его в Elastic Container Registry (ECR). Некоторые идеи включают в себя ваш ноутбук или EC2, если у вас установлен докер. Это руководство по минимизации занимаемой площади будет выполняться на ноутбуке SageMaker Studio Notebook. Приведенные ниже требования в любой момент кажутся слишком высокими, просто создайте свой образ в другом месте, нажмите на ECR и перейдите к следующему разделу.

Создание и отправка образа Docker из блокнота SageMaker Studio

Теперь мы создадим и отправим этот образ докера в ECR. В том же блокноте Studio, где вы установили библиотеку sagemaker-studio-image-build выше, запустите следующую строку из каталога с Dockerfile.

sm-docker build .

эта команда создаст образ с помощью codebuild, а затем создаст реестр эластичных контейнеров (ECR), загрузит в него двоичные файлы докера и предоставит вам на выходе адрес изображения, который вы можете скопировать и использовать на следующем шаге.

Пример вывода: xxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/sagemaker-studio-d-abeiuguig:raj

Этот вывод будет доступен, даже если ваша сборка или отправка Docker завершится неудачно, поэтому убедитесь, что в выводе нет сообщений об ошибках или кодов выхода, успешно на всем пути.

Проверка и регистрация ошибок

Проверьте журналы CloudWatch и выходные данные записной книжки на наличие ошибок. Одна вещь, которую я сделал и некоторое время боролся, — это непреднамеренное имя моего Dockerфайлаfile как DockerFile.

Прикрепите изображение к Amazon SageMaker Studio как пользовательское изображение.

Перейдите к консоли AWS, введите SageMaker в строке поиска и перейдите к консоли SageMaker.

Заполните следующий раздел, как показано ниже, измените отображаемые имена по своему усмотрению. Также убедитесь, что имя образа и имя ядра совпадают (получено из ошибок).

Разверните раздел Advanced Configuration и убедитесь, что он выглядит так, как показано ниже, это значения по умолчанию.

Нажмите «Отправить».

вы должны вернуться к экрану «прикрепить изображение». Вы можете проверить, успешно ли прикреплено изображение, перейдя в раздел «Среда».

Вы увидите одно из прикрепленных изображений, ошибку на красной ленте или в случае успеха, как показано ниже, с изображением прикрепленного экрана.

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

Закройте существующий браузер SageMaker Studio, очистите кэш и снова запустите SageMaker Studio с экрана пользователя, как показано ниже, или с вкладки студии на консоли.

вас отвезут в студию

В Studio вы можете открыть новую записную книжку и выбрать размер экземпляра и внешний вид вашего изображения в разделе пользовательских изображений. наведите курсор на свое пользовательское изображение, у меня Python3, и нажмите на нужную версию, у меня здесь только v1, у вас может быть несколько.

После выбора это будет выглядеть так: я дал отображаемое имя autogluon, поэтому я вижу это в ядре.

Если образ построен правильно, вы должны получить успешный запуск. вы можете проверить это, попробовав запустить оператор импорта или некоторый код.

Заключение

Amazon SageMaker Studio предоставляет ряд готовых ядер и образов для MxNet, PyTorch, Tensorflow, Base Python (3.7, 3.8 и 3.10), Data Science и т. д. конкретной ОС или вам нужно что-то, чего нет в SageMaker Studio. Это руководство вам пригодится. Для этого потребуется немного знать, как предоставлять разрешения, проверять журналы и иметь доступ к учетной записи с достаточными разрешениями пользователя. При условии, что все требования соблюдены, это можно сделать в SageMaker Studio за один раз. Проверьте ссылку на образец aws, если вам нужно больше примеров или больше идей о том, как создать образ докера.