Конечные точки для вывода в рабочей среде

ПРИМЕНИМО К:Azure CLI ml extension версии 2 (текущая)ПАКЕТ SDK для Python azure-ai-ml версии 2 (текущая)

После обучения моделей машинного обучения или конвейеров или поиска подходящих моделей из каталога моделей необходимо развернуть их в рабочей среде для других пользователей, которые будут использовать их для инференции. Вывод — это процесс применения новых входных данных к модели машинного обучения или конвейеру для создания выходных данных. Хотя эти выходные данные обычно называются "прогнозами", вывод может создавать выходные данные для других задач машинного обучения, таких как классификация и кластеризация. В Машинное обучение Azure вы выполняете вывод с помощью endpoints.

Конечные точки и развертывания

Конечная точка — это стабильный и устойчивый URL-адрес, который можно использовать для запроса или вызова модели. Вы предоставляете необходимые входные данные конечной точке и получаете выходные данные. Машинное обучение Azure поддерживает стандартные развертывания, сетевые конечные точки и пакетные конечные точки. Конечная точка предоставляет:

  • Стабильный и устойчивый URL-адрес (например , endpoint-name.region.inference.ml.azure.com)
  • Механизм проверки подлинности
  • Механизм авторизации

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

Некоторые типы конечных точек в Машинное обучение Azure используют выделенные ресурсы в развертываниях. Для выполнения этих конечных точек необходимо иметь квоту вычислений в подписке Azure. Однако некоторые модели поддерживают бессерверное развертывание, что позволяет им не использовать квоту из подписки. Для бессерверных развертываний плата взимается на основе использования.

Интуиция

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

Схема, показывающая концепцию конечной точки.

Теперь предположим, что специалист по обработке и анализу данных Алиса реализует приложение. Алиса имеет обширный опыт TensorFlow и решает реализовать модель с помощью последовательного классификатора Keras с архитектурой ResNet из Концентратора TensorFlow. После тестирования модели Алиса удовлетворена своими результатами и решает использовать модель для решения проблемы прогнозирования автомобиля. Модель крупная и требует 8 ГБ памяти и 4 ядра для работы. В этом сценарии модель Алисы и ресурсы, такие как код и вычислительные ресурсы, необходимые для запуска модели, составляют развертывание в конечной точке.

Схема, показывающая концепцию развертывания.

Через несколько месяцев организация обнаруживает, что приложение работает плохо на изображениях с плохими условиями освещения. Боб, другой специалист по обработке и анализу данных, имеет опыт в методах расширения данных, которые помогают моделям создавать надежность для этого фактора. Однако Боб предпочитает использовать PyTorch для реализации модели и обучать новую модель с помощью PyTorch. Боб хочет протестировать эту модель в рабочей среде постепенно, пока организация не готова выйти из эксплуатации старой модели. Новая модель также лучше выполняется при развертывании на GPU, поэтому развертывание должно включать GPU. В этом сценарии модель Боба и ресурсы, такие как код и вычислительные ресурсы, необходимые для запуска модели, составляют другое развертывание в той же конечной точке.

Схема, показывающая концепцию конечной точки с несколькими развертываниями.

Конечные точки: стандартное развертывание, онлайн и пакетная обработка

Машинное обучение Azure поддерживает стандартные развертывания, онлайн-конечные точки и пакетные конечные точки.

Стандартные развертывания и сетевые конечные точки предназначены для вывода в режиме реального времени. При вызове конечной точки результаты возвращаются в ответе конечной точки. Стандартные развертывания не используют квоту из подписки; вместо этого они биллингуются по стандартной системе.

Конечные точки пакетной обработки предназначены для длительных процессов пакетной инференции. При вызове конечной точки пакетной обработки создается пакетное задание, выполняющее основную работу.

Когда следует использовать стандартные конечные точки развертывания, онлайн и пакетные конечные точки

Стандартное развертывание:

Используйте стандартные развертывания, чтобы использовать большие базовые модели для вывода в режиме реального времени из коробки или для тонкой настройки таких моделей. Не все модели доступны для развертывания в стандартных развертываниях. Мы рекомендуем использовать этот режим развертывания, если:

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

Сетевые конечные точки:

Используйте сетевые конечные точки для операционализации моделей для вывода в режиме реального времени синхронных запросов с низкой задержкой. Мы рекомендуем использовать их при:

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

Пакетные конечные точки:

Используйте пакетные конечные точки для операционализации моделей или конвейеров для длительного асинхронного вывода. Мы рекомендуем использовать их при:

  • У вас есть дорогие модели или конвейеры, требующие длительного времени выполнения.
  • Вы хотите использовать конвейеры машинного обучения и повторно использовать компоненты.
  • Необходимо выполнить вывод больших объемов данных, распределенных в нескольких файлах.
  • У вас нет требований к низкой задержке.
  • Входные данные модели хранятся в учетной записи хранения или в активе данных Машинное обучение Azure.
  • Вы можете воспользоваться преимуществами параллелизации.

Сравнение стандартного развертывания, онлайн и пакетных конечных точек

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

Конечные точки

В следующей таблице показана сводка различных функций, доступных в стандартных развертываниях, онлайн-конечных точках и пакетных конечных точках.

Функция Стандартные развертывания Сетевые конечные точки Пакетные конечные точки
URL стабильного вызова Да Да Да
Поддержка нескольких развертываний Нет Да Да
Маршрутизация развертывания Ни один Разделение трафика Переключение на значение по умолчанию
Зеркальный трафик для безопасного развертывания Нет Да Нет
Поддержка Swagger Да Да Нет
Проверки подлинности Ключ Ключ и Microsoft Entra ID (предварительная версия) Microsoft Entra ID
Поддержка частной сети (устаревшая версия) Нет Да Да
Управляемая сетевая изоляция Да Да Да (см. требуемую дополнительную конфигурацию)
Ключи, управляемые клиентом NA Да Да
База затрат На конечную точку, в минуту1 Ни один Ни один

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

Развертывания

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

Функция Стандартные развертывания Сетевые конечные точки Пакетные конечные точки
Типы развертывания Модели Модели Модели и компоненты конвейера
Развертывание модели MLflow Нет, только определенные модели в каталоге Да Да
Развертывание пользовательской модели Нет, только определенные модели в каталоге Да, со скриптом оценки Да, со скриптом оценки
Сервер вывода 2 API вывода модели ИИ Azure — сервер инференса Машинное обучение Azure
-Тритон
— Custom (с использованием BYOC)
Пакетный вывод
Потребляемый вычислительный ресурс Нет (бессерверные) Экземпляры или гранулированные ресурсы Экземпляры кластера
Тип вычислений Нет (бессерверные) Управляемые вычислительные ресурсы и Kubernetes Управляемые вычислительные ресурсы и Kubernetes
Низкоприоритетные вычисления NA Нет Да
Масштабирование вычислений до нуля Встроенная Нет Да
Автомасштабирование вычислительных ресурсов3 Встроенная Да, на основе использования ресурсов Да, на основе количества заданий
Управление избыточностью Регулирования Регулирования Очереди
Начальная стоимость4 За токен На каждое развертывание: работающие вычислительные экземпляры Для каждой задания: экземпляры вычислительных ресурсов, используемые в задании (но не превышающие максимальное число экземпляров в кластере).
Локальное тестирование развертываний Нет Да Нет

2Сервер вывода относится к технологии обслуживания, которая принимает запросы, обрабатывает их и создает ответы. Сервер вывода также определяет формат входных данных и ожидаемых выходных данных.

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

4 Как в сети, так и в пакетном развертывании взимается плата за ресурсы, используемые. В сетевых развертываниях ресурсы подготавливаются во время развертывания. В пакетных развертываниях ресурсы не используются во время развертывания, но во время выполнения задания. Следовательно, нет затрат, связанных с самим пакетным развертыванием. Аналогичным образом, задания в очереди не потребляют ресурсы.

Интерфейсы разработчика

Конечные точки предназначены для помощи организациям в эксплуатационной готовности рабочих нагрузок на промышленном уровне в Машинное обучение Azure. Конечные точки являются надежными и масштабируемыми ресурсами, и они предоставляют лучшие возможности для реализации рабочих процессов MLOps.

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

  • Azure CLI и Python SDK
  • AZURE RESOURCE MANAGER/REST API
  • веб-портал Студия машинного обучения Azure
  • портал Azure (ИТ/администратор)
  • Поддержка конвейеров CI/CD MLOps с использованием интерфейса Azure CLI и интерфейсов REST/ARM