Пример AutoGluon-Py3.8
Недавно мне захотелось создать собственный образ ядра для Amazon SageMaker Studio. Я следил за доступными сообщениями, но большинство из них, как правило, сосредотачиваются на том, чтобы делать это с помощью aws cli, в этом нет ничего плохого, но я хотел смоделировать то же самое с помощью функций консоли AWS, поскольку для быстрого тестирования я считаю это так же проще.
В этом посте я буду использовать то, что доступно в других постах, и опираться на это, чтобы упростить
- Создание собственного образа и отправка его в ECR с помощью SageMaker Studio Notebook с использованием sagemaker-cli.
- Прикрепление изображения из 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, если вам нужно больше примеров или больше идей о том, как создать образ докера.