Home Машинное обучение Используйте AWS CDK для развертывания конфигураций жизненного цикла Amazon SageMaker Studio. | DeepTech

Используйте AWS CDK для развертывания конфигураций жизненного цикла Amazon SageMaker Studio. | DeepTech

0
Используйте AWS CDK для развертывания конфигураций жизненного цикла Amazon SageMaker Studio.
 | DeepTech

Amazon SageMaker Studio — это первая полностью интегрированная среда разработки (IDE) для машинного обучения (ML). Studio предоставляет единый визуальный веб-интерфейс, в котором можно выполнять все этапы разработки машинного обучения, необходимые для подготовки данных, а также для создания, обучения и развертывания моделей. Конфигурации жизненного цикла — это сценарии оболочки, запускаемые событиями жизненного цикла Studio, такими как запуск новой записной книжки Studio. Вы можете использовать конфигурации жизненного цикла для автоматизации настройки среды Studio. Эта настройка включает установку пользовательских пакетов, настройку расширений записной книжки, предварительную загрузку наборов данных и настройку репозиториев исходного кода. Например, как администратор домена Studio, вы можете сократить расходы, автоматически закрывая приложения для ноутбуков после длительных периодов бездействия.

Комплект AWS Cloud Development Kit (AWS CDK) — это платформа для определения облачной инфраструктуры с помощью кода и предоставления ее с помощью стеков AWS CloudFormation. Стек — это набор ресурсов AWS, которые можно программно обновлять, перемещать или удалять. Конструкции AWS CDK — это строительные блоки приложений AWS CDK, представляющие собой схему для определения облачных архитектур.

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

Обзор решения

Модульность конфигураций жизненного цикла позволяет применять их ко всем пользователям в домене или к определенным пользователям. Таким образом, вы можете быстро и последовательно настраивать конфигурации жизненного цикла и ссылаться на них в шлюзе ядра Studio или на сервере Jupyter. Шлюз ядра — это точка входа для взаимодействия с экземпляром ноутбука, тогда как сервер Jupyter представляет экземпляр Studio. Это позволяет применять лучшие практики DevOps и соответствовать стандартам безопасности, соответствия и конфигурации во всех аккаунтах AWS и регионах. В этом посте мы используем Python в качестве основного языка, но код можно легко изменить на другие языки, поддерживаемые AWS CDK. Дополнительные сведения см. в разделе Работа с AWS CDK.

Предпосылки

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

Клонировать репозиторий GitHub

Первый, клон в Репозиторий GitHub.

Когда вы клонируете репозиторий, вы можете заметить, что у нас есть классический проект AWS CDK с каталогом studio-lifecycle-config-constructкоторый содержит конструкцию и ресурсы, необходимые для создания конфигураций жизненного цикла.

Конструкции AWS CDK

Файл, который мы хотим проверить, aws_sagemaker_lifecycle.py. Этот файл содержит SageMakerStudioLifeCycleConfig конструкция, которую мы используем для настройки и создания конфигураций жизненного цикла.

SageMakerStudioLifeCycleConfig конструкция предоставляет платформу для создания конфигураций жизненного цикла с использованием пользовательской функции AWS Lambda и кода оболочки, считываемого из файла. Конструкция содержит следующие параметры:

  • ИДЕНТИФИКАТОР – Название текущего проекта.
  • studio_lifecycle_contentbase64 кодированный контент.
  • studio_lifecycle_tags – Метки, которые вы назначаете для организации ресурсов Amazon. Они вводятся как пары ключ-значение и являются необязательными для этой конфигурации.
  • studio_lifecycle_config_app_typeJupyterServer предназначен для самого уникального сервера, а KernelGateway app соответствует работающему контейнеру образа SageMaker.

Дополнительные сведения об архитектуре ноутбуков Studio см. в разделе Подробное изучение архитектуры ноутбуков Amazon SageMaker Studio.

Ниже приведен фрагмент кода конструкции конфигурации жизненного цикла Studio (aws_sagemaker_lifecycle.py):

class SageMakerStudioLifeCycleConfig(Construct):
 def __init__(
 self,
 scope: Construct,
 id: str,
 studio_lifecycle_config_content: str,
 studio_lifecycle_config_app_type: str,
 studio_lifecycle_config_name: str,
 studio_lifecycle_config_arn: str,
 **kwargs,
 ):
 super().__init__(scope, id)
 self.studio_lifecycle_content = studio_lifecycle_content
 self.studio_lifecycle_config_name = studio_lifecycle_config_name
 self.studio_lifecycle_config_app_type = studio_lifecycle_config_app_type

 lifecycle_config_role = iam.Role(
 self,
 "SmStudioLifeCycleConfigRole",
 assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"),
 )

 lifecycle_config_role.add_to_policy(
 iam.PolicyStatement(
 resources=(f"arn:aws:sagemaker:{scope.region}:{scope.account}:*"),
 actions=(
 "sagemaker:CreateStudioLifecycleConfig",
 "sagemaker:ListUserProfiles",
 "sagemaker:UpdateUserProfile",
 "sagemaker:DeleteStudioLifecycleConfig",
 "sagemaker:AddTags",
 ),
 )
 )

 create_lifecycle_script_lambda = lambda_.Function(
 self,
 "CreateLifeCycleConfigLambda",
 runtime=lambda_.Runtime.PYTHON_3_8,
 timeout=Duration.minutes(3),
 code=lambda_.Code.from_asset(
 "../mlsl-cdk-constructs-lib/src/studiolifecycleconfigconstruct"
 ),
 handler="onEvent.handler",
 role=lifecycle_config_role,
 environment={
 "studio_lifecycle_content": self.studio_lifecycle_content,
 "studio_lifecycle_config_name": self.studio_lifecycle_config_name,
 "studio_lifecycle_config_app_type": self.studio_lifecycle_config_app_type,
 },
 )

 config_custom_resource_provider = custom_resources.Provider(
 self,
 "ConfigCustomResourceProvider",
 on_event_handler=create_lifecycle_script_lambda,
 )

 studio_lifecyle_config_custom_resource = CustomResource(
 self,
 "LifeCycleCustomResource",
 service_token=config_custom_resource_provider.service_token,
 )
 self. studio_lifecycle_config_arn = studio_lifecycle_config_custom_resource.get_att("StudioLifecycleConfigArn")

После импорта и установки конструкции ее можно использовать. В следующем фрагменте кода показано, как создать конфигурацию жизненного цикла, используя конструкцию в стеке либо в app.py или другая конструкция:

my_studio_lifecycle_config = SageMakerStudioLifeCycleConfig(
 self,
 "MLSLBlogPost",
 studio_lifecycle_config_content="base64content",
 studio_lifecycle_config_name="BlogPostTest",
 studio_lifecycle_config_app_type="JupyterServer",
 
 )

Развертывание конструкций AWS CDK

Чтобы развернуть стек AWS CDK, выполните следующие команды в том месте, где вы клонировали репозиторий.

Команда может быть python вместо python3 в зависимости от конфигурации вашего пути.

  1. Создайте виртуальную среду:
    1. Для macOS/Linux используйте python3 -m venv .cdk-venv.
    2. Для Windows используйте python3 -m venv .cdk-venv.
  2. Активируйте виртуальную среду:
    1. Для macOS/Linux используйте source .cdk-venv\bin\activate.
    2. Для Windows используйте .cdk-venv/Scripts/activate.bat.
    3. Для PowerShell используйте .cdk-venv/Scripts/activate.ps1.
  3. Установите необходимые зависимости:
    1. pip install -r requirements.txt
    2. pip install -r requirements-dev.txt
  4. На этом этапе вы можете дополнительно синтезировать шаблон CloudFormation для этого кода:
  5. Разверните решение с помощью следующих команд:
    1. aws configure
    2. cdk bootstrap
    3. cdk deploy

После успешного развертывания стека вы сможете просмотреть стек на консоли CloudFormation.

Вы также сможете просмотреть конфигурацию жизненного цикла на консоли SageMaker.

Выберите конфигурацию жизненного цикла, чтобы просмотреть исполняемый код оболочки, а также все назначенные вами теги.

Прикрепите конфигурацию жизненного цикла Studio

Существует несколько способов присоединения конфигурации жизненного цикла. В этом разделе мы представляем два метода: с помощью Консоли управления AWS и программно с использованием предоставленной инфраструктуры.

Прикрепите конфигурацию жизненного цикла с помощью консоли

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

  1. В консоли SageMaker выберите Домены в панели навигации.
  2. Выберите используемое доменное имя и текущий профиль пользователя, затем выберите Редактировать.
  3. Выберите конфигурацию жизненного цикла, которую вы хотите использовать, и выберите Прикреплять.

Отсюда вы также можете установить его по умолчанию.

Прикрепите конфигурацию жизненного цикла программно

Вы также можете получить ARN конфигурации жизненного цикла Studio, созданной конструкцией, и программно присоединить ее к конструкции Studio. В следующем коде показана передача ARN конфигурации жизненного цикла в конструкцию Studio:

default_user_settings=sagemaker.CfnDomain.UserSettingsProperty(
                execution_role=self.sagemaker_role.role_arn,
                jupyter_server_app_settings=sagemaker.CfnDomain.JupyterServerAppSettingsProperty(
                    default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty(
                        instance_type="system",
                        lifecycle_config_arn = my_studio_lifecycle_config.studio_lifeycycle_config_arn

                    )
                )

Очистить

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

Удалить конфигурацию жизненного цикла Studio

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

  1. В консоли SageMaker выберите Конфигурации жизненного цикла Studio в панели навигации.
  2. Выберите конфигурацию жизненного цикла, затем выберите Удалить.

Удалить стек AWS CDK

Когда вы закончите с созданными вами ресурсами, вы можете уничтожить свой стек AWS CDK, выполнив следующую команду в том месте, где вы клонировали репозиторий:

На запрос подтверждения удаления стека введите yes.

Вы также можете удалить стек в консоли AWS CloudFormation, выполнив следующие действия:

  1. В консоли AWS CloudFormation выберите Стеки в панели навигации.
  2. Выберите стек, который вы хотите удалить.
  3. В области сведений о стеке выберите Удалить.
  4. Выбирать Удалить стопку когда будет предложено.

Если вы столкнетесь с какими-либо ошибками, возможно, вам придется вручную удалить некоторые ресурсы в зависимости от конфигурации вашей учетной записи.

Заключение

В этом посте мы обсудили, как Studio служит IDE для рабочих нагрузок машинного обучения. Studio предлагает поддержку конфигурации жизненного цикла, которая позволяет настраивать пользовательские сценарии оболочки для выполнения автоматизированных задач или настраивать среды разработки при запуске. Мы использовали конструкции AWS CDK для создания инфраструктуры для пользовательских ресурсов и конфигурации жизненного цикла. Конструкции синтезируются в стеки CloudFormation, которые затем развертываются для создания настраиваемого ресурса и сценария жизненного цикла, которые используются в Studio и ядре Notebook.

Для получения дополнительной информации посетите Amazon SageMaker Studio.


Об авторах

Кори Хейрстон работает инженером-программистом в лаборатории решений Amazon ML. В настоящее время он работает над предоставлением многоразовых программных решений.

Алекс Чираят — старший инженер по машинному обучению в лаборатории решений Amazon ML. Он возглавляет группы ученых и инженеров, занимающихся данными, для создания приложений ИИ для удовлетворения потребностей бизнеса.

Гури Пандешвар работает инженером-менеджером в лаборатории решений Amazon ML. Он и его команда инженеров работают над созданием повторно используемых решений и платформ, которые помогают ускорить внедрение сервисов AWS AI/ML для бизнес-применений клиентов.

LEAVE A REPLY

Please enter your comment!
Please enter your name here