Упакуйте и разверните классические модели машинного обучения и LLMs легко с помощью Amazon SageMaker, часть 2 Интерактивные пользовательские взаимодействия в SageMaker Studio

Легкое упаковывание и развёртывание классических моделей машинного обучения и моделей LLMs с помощью Amazon SageMaker Часть 2 – Интерактивные пользовательские взаимодействия в SageMaker Studio

Amazon SageMaker – это полностью управляемый сервис, который позволяет разработчикам и ученым в области данных быстро и легко создавать, обучать и развертывать модели машинного обучения (ML) в масштабе. SageMaker упрощает развертывание моделей в производство через вызовы API к сервису. Модели упаковываются в контейнеры для надежного и масштабируемого развертывания.

SageMaker предоставляет различные варианты для развертывания моделей. Эти варианты различаются по степени контроля и необходимой работы с вашей стороны. AWS SDK обеспечивает наибольший контроль и гибкость. Это низкоуровневый API, доступный для Java, C++, Go, JavaScript, Node.js, PHP, Ruby и Python. SageMaker Python SDK – это высокоуровневый Python API, который абстрагирует некоторые шаги и конфигурацию, упрощая развертывание моделей. Интерфейс командной строки AWS (AWS CLI) является еще одним инструментом высокого уровня, с помощью которого вы можете взаимодействовать с SageMaker для развертывания моделей без написания собственного кода.

Мы предлагаем два новых варианта, которые дополнительно упрощают процесс упаковки и развертывания моделей с использованием SageMaker. Один из способов – программное развертывание. Для этого мы предлагаем улучшения в Python SDK. Дополнительную информацию см. в статье Пакетное и простое развертывание классических моделей машинного обучения и LLM с помощью Amazon SageMaker, часть 1: Улучшения PySDK. Второй способ – интерактивное развертывание. Для этого мы запускаем новый интерактивный опыт в Amazon SageMaker Studio. Он поможет вам быстро развернуть ваши обученные модели или модели исходных данных (FMs) из Amazon SageMaker JumpStart с оптимизированной конфигурацией и достичь предсказуемой производительности при минимальных затратах. Читайте далее, чтобы посмотреть, как выглядит новый интерактивный опыт.

Новый интерактивный опыт в SageMaker Studio

В этой статье предполагается, что у вас обучена одна или несколько моделей машинного обучения или вы используете FMs из модельного хаба SageMaker JumpStart и готовы их развернуть. Обучение модели с использованием SageMaker является необязательным условием для развертывания модели с использованием SageMaker. Также предполагается некоторая знакомство с SageMaker Studio.

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

  • Создание модели SageMaker
  • Развертывание модели SageMaker
  • Развертывание большой модели языка SageMaker JumpStart (LLM)
  • Развертывание нескольких моделей за одним эндпоинтом
  • Тестирование вывода модели
  • Устранение ошибок

Создание модели SageMaker

Первый шаг при настройке точки входа SageMaker для вывода – создание объекта модели SageMaker. Этот объект модели состоит из двух компонентов: контейнера для модели и обученной модели, которая будет использоваться для вывода. Новый интерактивный опыт UI упрощает процесс создания модели SageMaker. Если вы новичок в SageMaker Studio, обратитесь к Руководству разработчика, чтобы начать.

  1. В интерфейсе SageMaker Studio выберите Модели в области навигации.
  2. На вкладке Модели, которые можно развернуть выберите Создать.

Теперь вам нужно только предоставить детали контейнера модели, расположение данных модели и роль Identity and Access Management (IAM) для SageMaker для взаимодействия от вашего имени.

“`html

  1. Для контейнера моделей вы можете использовать одну из предварительно созданных Docker-образов SageMaker, предоставляемых для популярных фреймворков и библиотек. Если вы выберете этот вариант, выберите контейнерный фреймворк, соответствующую версию фреймворка и тип аппаратного обеспечения из списка поддерживаемых типов.

Альтернативно, вы можете указать путь к вашему собственному контейнеру, хранящемуся в Amazon Elastic Container Registry (Amazon ECR).

  1. Затем загрузите свои артефакты модели. SageMaker Studio предоставляет два способа загрузки модельных артефактов:
    • Во-первых, вы можете указать model.tar.gz либо в бакете Amazon Simple Storage Service (Amazon S3), либо в локальном пути. Данный model.tar.gz должен иметь структуру, соответствующую выбранному контейнеру.
    • В альтернативу поддерживается загрузка необработанных артефактов для моделей PyTorch и XGBoost. Для этих двух фреймворков предоставьте артефакты модели в формате, ожидаемом контейнером. Например, для PyTorch это будет model.pth. Обратите внимание, что ваши артефакты модели также должны включать сценарий вывода для предварительной обработки и последующей обработки. Если вы не предоставите сценарий вывода, будет использованы обработчики вывода по умолчанию для выбранного контейнера.
  2. После выбора контейнера и артефакта укажите роль IAM.
  3. Выберите Создать развертываемую модель для создания модели SageMaker.

В предшествующих шагах показана самая простая рабочая схема. Вы можете дополнительно настроить процесс создания модели. Например, вы можете указать детали виртуальной частной сети (VPC) и включить изоляцию сети, чтобы обеспечить невозможность контейнера выполнять исходящие вызовы в публичный интернет. Вы можете раскрыть раздел Дополнительные параметры, чтобы увидеть больше вариантов.

Вы можете получить рекомендации относительно аппаратного обеспечения для достижения оптимального соотношения цена/производительность для развертывания вашей конечной точки, запустив задание SageMaker Inference Recommender. Чтобы дополнительно настроить модель SageMaker, вы можете передать настройки среды в контейнер. Inference Recommender также принимает набор этих переменных для нахождения оптимальной конфигурации для обслуживания модели и контейнера.

После создания модели вы можете увидеть ее на вкладке Модели, подлежащие развертыванию. Если в процессе создания модели возникли какие-либо проблемы, вы увидите статус в столбце Состояние монитора. Выберите имя модели, чтобы просмотреть подробную информацию.

“`

Развернуть модель SageMaker

В самом основном сценарии вам нужно просто выбрать развертываемую модель на странице Модели или LLM на странице SageMaker JumpStart, выбрать тип экземпляра, установить начальное количество экземпляров и развернуть модель. Давайте посмотрим, как выглядит этот процесс в SageMaker Studio для вашей собственной модели SageMaker. Мы обсудим использование LLM позже в этом посте.

  1. На странице Модели выберите вкладку Развертываемые модели.
  2. Выберите модель для развертывания и выберите Развернуть.
  3. Следующий шаг – выбрать тип экземпляра, который SageMaker поместит за точку отсчета вывода.

Вам нужен экземпляр, который обеспечивает лучшую производительность при наименьших затратах. SageMaker делает этот выбор простым, показывая рекомендации. Если вы провели типирование вашей модели с помощью SageMaker Inference Recommender на этапе создания модели SageMaker, вы увидите рекомендации от этого типирования в раскрывающемся меню.

В противном случае вы увидите список потенциальных экземпляров в меню. В этом случае SageMaker использует свою эвристику для заполнения списка.

  1. Укажите начальное количество экземпляров, затем выберите Развернуть.

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

Это также место в SageMaker Studio, где вы будете управлять точкой отсчета. Вы можете перейти на страницу с подробностями точки отсчета, выбрав Точки отсчета в разделе Развертывания в панели навигации. Используйте кнопки Добавить модель и Удалить, чтобы изменить модели, стоящие за точкой отсчета, без необходимости создавать точку отсчета заново. Вкладка Тестирование вывода позволяет вам проверять свою модель, отправляя тестовые запросы одной из моделей, находящихся в работе, непосредственно из интерфейса SageMaker Studio. Вы также можете изменить политику автомасштабирования на вкладке Автомасштабирование на этой странице. Подробнее о добавлении, удалении и тестировании моделей рассматривается в следующих разделах. Информацию о сети, безопасности и вычислениях для этой точки отсчета можно увидеть на вкладке Настройки.

Настройка развертывания

Предыдущий пример показал, насколько просто развернуть одну модель с минимальной необходимостью конфигурации с вашей стороны. SageMaker заполняет большую часть полей для вас, но вы можете настроить конфигурацию. Например, он автоматически генерирует имя для точки отсчета. Однако вы можете назвать точку отсчета по своему усмотрению или использовать существующую точку отсчета в раскрывающемся меню Имя точки отсчета. Для существующих точек отсчета вы увидите только те, которые находятся в работе в данный момент. Вы можете использовать раздел Дополнительные параметры, чтобы указать IAM-роль, сведения о VPC и теги.

Развернуть SageMaker JumpStart LLM

Для развертывания SageMaker JumpStart LLM выполните следующие шаги:

  1. Перейдите на страницу JumpStart в SageMaker Studio.
  2. Выберите одно из имен партнеров, чтобы просмотреть список доступных моделей от этого партнера, или воспользуйтесь функцией поиска, чтобы перейти на страницу модели, если вы знаете ее название.
  3. Выберите модель, которую хотите развернуть.
  4. Выберите Развернуть.

Обратите внимание, что использование LLM регулируется EULA и условиями провайдера.

  1. Примите условия и лицензию.
  2. Укажите тип экземпляра.

Многие модели из репозитория моделей JumpStart имеют тип экземпляра по умолчанию, оптимизированный с точки зрения соотношения цена-производительность для развертывания. Для моделей, не имеющих такого значения по умолчанию, вам будет предоставлен список поддерживаемых типов экземпляров в выпадающем меню Тип экземпляра. Для профилированных моделей, если вы хотите оптимизировать развертывание специально для стоимости или производительности в соответствии с вашими конкретными требованиями, вы можете выбрать Альтернативные конфигурации для просмотра других вариантов, которые были сравнены с различными комбинациями общего числа токенов, длины ввода и максимальной конкурентности. Вы также можете выбрать из других поддерживаемых экземпляров для этой модели.

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

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

Развертывание нескольких моделей на одной точке доступа

SageMaker позволяет вам развертывать несколько моделей на одной точке доступа. Это позволяет снизить затраты на хостинг, улучшая использование точек доступа по сравнению с использованием точек доступа, имеющих только одну модель. Кроме того, это упрощает развертывание, поскольку SageMaker управляет загрузкой моделей в память и их масштабированием в зависимости от паттернов трафика на вашу точку доступа. Теперь SageMaker Studio делает это очень простым.

  1. Начните, выбрав модели, которые вы хотите развернуть, затем выберите Развернуть.
  2. Затем вы можете создать точку доступа с несколькими моделями, которые имеют определенное количество ресурсов, которое вы определяете.

В этом случае мы используем экземпляр ml.p4d.24xlarge для точки доступа и выделяем необходимое количество ресурсов для наших двух разных моделей. Обратите внимание, что выбор типов экземпляров ограничен поддерживаемыми функцией.

  1. Если вы начали процесс с вкладки Модели для развертывания и хотите добавить LLM SageMaker JumpStart или наоборот, можно создать точку доступа с несколькими моделями, выбрав Добавить модель после запуска процесса развертывания.
  2. Здесь вы можете выбрать другую модель из репозитория моделей SageMaker JumpStart или модель с использованием опции Модели для развертывания, которая относится к моделям, сохраненным в виде объектов модели SageMaker.
  3. Выберите настройки модели:
    • Если модель использует экземпляр CPU, выберите количество процессоров и минимальное количество копий модели.
    • Если модель использует экземпляр GPU, выберите количество ускорителей и минимальное количество копий модели.
  4. Выберите Добавить модель.
  5. Выберите Развернуть, чтобы развернуть эти модели в точку доступа SageMaker.

Когда конечная точка готова и находится в состоянии В работе, у вас будет развернуто две модели, работающие за одной конечной точкой.

Проверка вывода модели

SageMaker Studio теперь позволяет легко проверять запросы на вывод модели. Вы можете отправлять данные нагрузки напрямую, используя поддерживаемый тип содержимого, такой как приложение или JSON, текст или CSV, или использовать примеры кода из Python SDK, чтобы сделать запрос на вызов из вашей среды програмирования, такой как блокнот или локальная интегрированная среда разработки (IDE).

Обратите внимание, что опция примера кода из Python SDK доступна только для моделей SageMaker JumpStart и предназначена для конкретной ситуации использования модели с преобразованием входных и выходных данных.

Устранение ошибок

Для отладки и более глубокого анализа развертывания моделей есть всплывающие подсказки на метке ресурса Статус, которые показывают соответствующие сообщения об ошибке и причину. Также есть ссылки на группы журналов CloudWatch на странице с подробной информацией о конечной точке. Для конечных точек с одной моделью ссылка на журналы CloudWatch контейнера удобно размещена в разделе Описание подробной информации о конечной точке. Для конечных точек с несколькими моделями ссылки на журналы CloudWatch располагаются в каждой строке таблицы Модели. Ниже приведены некоторые распространенные сценарии ошибок для устранения неполадок:

  • Сбой проверки состояния загрузки модели – Развертывание модели может не выполниться, если контейнер обслуживания не прошел проверку состояния загрузки модели. Чтобы найти ошибку, обратитесь к следующим журналам контейнера, опубликованным группами журналов CloudWatch:

    /aws/sagemaker/Endpoints/[ИмяКонечнойТочки]/aws/sagemaker/InferenceComponents/[ИмяКомпонентаInference]
  • Несогласованная конфигурация модели и конечной точки, приводящая к сбоям развертывания – Если развертывание завершилось с одним из следующих сообщений об ошибке, это значит, что выбранная модель для развертывания использует другую роль IAM, конфигурацию VPC или конфигурацию изоляции сети. Решением проблемы является обновление сведений о модели для использования той же роли IAM, конфигурации VPC и конфигурации изоляции сети в процессе развертывания. Если вы добавляете модель в существующую конечную точку, вы можете создать объект модели заново, чтобы соответствовать конфигурациям целевой конечной точки.

    Конфигурация модели и конечной точки имеют разные роли выполнения. Убедитесь, что роли выполнения совпадают.Конфигурация модели и конечной точки имеют разные конфигурации VPC. Убедитесь, что конфигурации VPC совпадают.Конфигурация модели и конечной точки имеют разные конфигурации изоляции сети. Убедитесь, что конфигурации изоляции сети совпадают.
  • Недостаточно ресурсов для развертывания дополнительных моделей на существующей инфраструктуре конечной точки – Если развертывание завершилось с указанным сообщением об ошибке, это означает, что текущая инфраструктура конечной точки не имеет достаточно вычислительных или памятных ресурсов для развертывания модели. Решением проблемы является увеличение максимального количества экземпляров на конечной точке или удаление любых существующих моделей, развернутых на конечной точке, для освобождения места для нового развертывания модели.

    На экземплярах этой конечной точки недостаточно аппаратных ресурсов для создания копии компонента вывода рекомендаций. Пожалуйста, обновите требования к ресурсам для этого компонента вывода рекомендаций, удалите существующие компоненты вывода рекомендаций или увеличьте количество экземпляров на этой конечной точке.
  • Неподдерживаемый тип экземпляра для развертывания конечной точки с несколькими моделями – Если развертывание завершилось с указанным сообщением об ошибке, это означает, что выбранный тип экземпляра в настоящее время не поддерживается для развертывания конечной точки с несколькими моделями. Решением проблемы является выбор другого типа экземпляра, который поддерживает эту функцию, и повторное развертывание.

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

Для других проблем с размещением модели обратитесь к поддерживаемым функциям.

Очистка

Очистка также проста. Вы можете удалить одну или несколько моделей из вашей существующей конечной точки SageMaker, выбрав конкретную модель на консоли SageMaker. Чтобы удалить всю конечную точку, перейдите на страницу Конечные точки, выберите нужную конечную точку, выберите Удалить и примите отказ от ответственности для продолжения удаления.

Заключение

Улучшенный интерактивный опыт в SageMaker Studio позволяет специалистам по данным сосредоточиться на создании модели и внесении своих артефактов в SageMaker, при этом абстрагируясь от сложностей развертывания. Для тех, кто предпочитает подход на основе кода, можно ознакомиться с эквивалентом с низким уровнем кода с помощью класса ModelBuilder.

Чтобы узнать больше, посетите документацию Python-интерфейса ModelBuilder SageMaker документация и инструкции деплой WS в SageMaker Studio. Дополнительная плата за SDK SageMaker и SageMaker Studio не взимается. Вы платите только за используемые нижние ресурсы. Дополнительную информацию о том, как развернуть модели с помощью SageMaker, см. Развертывание моделей для вывода.

Отдельное спасибо Sirisha Upadhyayala, Melanie Li, Dhawal Patel, Sam Edwards и Kumara Swami Borra.