Конечные точки для вывода в рабочей среде
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)
После обучения моделей машинного обучения или конвейеров или найденных моделей из каталога моделей, которые соответствуют вашим потребностям, необходимо развернуть их в рабочей среде, чтобы другие могли использовать их для вывода. Вывод — это процесс применения новых входных данных к модели машинного обучения или конвейеру для создания выходных данных. Хотя эти выходные данные обычно называются "прогнозами", вывод можно использовать для создания выходных данных для других задач машинного обучения, таких как классификация и кластеризация. В Машинное обучение Azure вы выполняете вывод с помощью конечных точек.
Конечные точки и развертывания
Конечная точка — это стабильный и устойчивый URL-адрес, который можно использовать для запроса или вызова модели. Вы предоставляете необходимые входные данные конечной точке и возвращаете выходные данные. Машинное обучение Azure позволяет реализовать конечные точки API без сервера, сетевые конечные точки и пакетные конечные точки. Конечная точка предоставляет:
- стабильный и устойчивый URL-адрес (например , endpoint-name.region.inference.ml.azure.com),
- механизм проверки подлинности и
- механизм авторизации.
Развертывание — это набор ресурсов и вычислений, необходимых для размещения модели или компонента, выполняющего фактическое вывод. Конечная точка содержит развертывание, а для сетевых и пакетных конечных точек одна конечная точка может содержать несколько развертываний. Развертывания могут размещать независимые ресурсы и использовать различные ресурсы в зависимости от потребностей ресурсов. Кроме того, конечная точка имеет механизм маршрутизации, который может направлять запросы к любому из его развертываний.
С одной стороны, некоторые типы конечных точек в Машинное обучение Azure используют выделенные ресурсы для их развертываний. Для выполнения этих конечных точек необходимо иметь квоту вычислений в подписке Azure. С другой стороны, некоторые модели поддерживают бессерверное развертывание, что позволяет им не использовать квоту из подписки. Для бессерверного развертывания выставляются счета на основе использования.
Интуиция
Предположим, вы работаете над приложением, которое прогнозирует тип и цвет автомобиля, учитывая его фотографию. Для этого приложения пользователь с определенными учетными данными выполняет HTTP-запрос по URL-адресу и предоставляет фотографию автомобиля в рамках запроса. В обратном случае пользователь получает ответ, включающий тип и цвет автомобиля в виде строковых значений. В этом сценарии URL-адрес служит конечной точкой.
Кроме того, говорят, что специалист по обработке и анализу данных Алиса работает над реализацией приложения. Алиса знает много о TensorFlow и решает реализовать модель с помощью последовательного классификатора Keras с архитектурой RestNet из Концентратора TensorFlow. После тестирования модели Алиса удовлетворена своими результатами и решает использовать модель для решения проблемы прогнозирования автомобиля. Для работы модели требуется 8 ГБ памяти с 4 ядрами. В этом сценарии модель Алисы и ресурсы, такие как код и вычислительные ресурсы, необходимые для запуска модели, составляют развертывание в конечной точке.
Предположим, что через пару месяцев организация обнаруживает, что приложение плохо работает на изображениях с менее чем идеальными условиями освещения. Боб, другой специалист по обработке и анализу данных, знает много о методах расширения данных, которые помогают модели построить надежность на этом факторе. Тем не менее, Боб чувствует себя более комфортно с помощью Факела для реализации модели и обучения новой модели с Факелом. Боб хочет попробовать эту модель в рабочей среде постепенно, пока организация не готова выйти из эксплуатации старой модели. Новая модель также обеспечивает более высокую производительность при развертывании на GPU, поэтому развертывание должно включать GPU. В этом сценарии модель Боба и ресурсы, такие как код и вычислительные ресурсы, необходимые для запуска модели, составляют другое развертывание в той же конечной точке.
Конечные точки: бессерверный API, онлайн и пакет
Машинное обучение Azure позволяет реализовать конечные точки API без сервера, сетевые конечные точки и пакетные конечные точки.
Бессерверные конечные точки API и сетевые конечные точки предназначены для вывода в режиме реального времени. При вызове конечной точки результаты возвращаются в ответе конечной точки. Конечные точки API без сервера не используют квоту из подписки; скорее, они выставляются с оплатой по мере использования.
Конечные точки пакетной службы предназначены для длительного вывода пакетной службы. При вызове конечной точки пакетной службы создается пакетное задание, выполняющее фактическую работу.
Использование бессерверных конечных точек API, сети и пакетной службы
Конечные точки API без сервера:
Используйте бессерверные конечные точки API для использования больших базовых моделей для вывода вне полки или для точной настройки таких моделей. Не все модели доступны для развертывания в конечных точках API без сервера. Мы рекомендуем использовать этот режим развертывания, если:
- Модель — это базовая модель или настраиваемая версия базовой модели, которая доступна для бессерверных развертываний API.
- Вы можете воспользоваться развертыванием без квот.
- Вам не нужно настраивать стек вывода, используемый для запуска модели.
Сетевые конечные точки:
Используйте сетевые конечные точки для операционализации моделей для вывода в режиме реального времени синхронных запросов с низкой задержкой. Мы рекомендуем использовать их при:
- Ваша модель является базовой или точно настроенной версией базовой модели, но она не поддерживается в конечных точках БЕССерверных API.
- У вас есть требования к низкой задержке.
- Модель может ответить на запрос относительно коротким временем.
- Входные данные модели соответствуют полезным данным HTTP запроса.
- Необходимо увеличить масштаб с точки зрения количества запросов.
Конечные точки пакетной службы:
Используйте пакетные конечные точки для операционализации моделей или конвейеров для длительного асинхронного вывода. Мы рекомендуем использовать их при:
- У вас есть дорогие модели или конвейеры, требующие длительного времени выполнения.
- Вы хотите использовать конвейеры машинного обучения и повторно использовать компоненты.
- Необходимо выполнить вывод больших объемов данных, распределенных в нескольких файлах.
- У вас нет требований к низкой задержке.
- Входные данные модели хранятся в учетной записи хранения или в Машинное обучение Azure ресурсе данных.
- Вы можете воспользоваться преимуществами параллелизации.
Сравнение бессерверных конечных точек API, сети и пакетной службы
Все бессерверные API, сетевые и пакетные конечные точки основаны на идее конечных точек, поэтому вы можете легко перейти с одной на другую. Сетевые и пакетные конечные точки также могут управлять несколькими развертываниями для одной конечной точки.
Конечные точки
В следующей таблице показана сводка различных функций, доступных бессерверным API, онлайн и пакетным конечным точкам на уровне конечной точки.
Функция | Конечные точки API без сервера | Сетевые конечные точки | Конечные точки пакетной службы |
---|---|---|---|
URL-адрес стабильного вызова | Да | Да | Да |
Поддержка нескольких развертываний | No | Да | Да |
Маршрутизация развертывания | нет | Разделение трафика | Переключение на значение по умолчанию |
Зеркальный трафик для безопасного развертывания | No | Да | Нет |
Поддержка Swagger | Да | Да | Нет |
Проверка подлинности | Ключ | Ключ и идентификатор Microsoft Entra (предварительная версия) | Microsoft Entra ID |
Поддержка частной сети (устаревшая версия) | No | Да | Да |
Управляемая сетевая изоляция | Да | Да | Да (см. требуемую дополнительную конфигурацию) |
Ключи, управляемые клиентом | Неприменимо | Да | Да |
База затрат | На конечную точку, в минуту1 | нет | нет |
1Небольшая доля взимается за конечные точки API без сервера в минуту. См. раздел "Развертывания" для расходов, связанных с потреблением, которые выставляются за токен.
Развертывания
В следующей таблице показана сводка различных функций, доступных бессерверным API, онлайн и пакетным конечным точкам на уровне развертывания. Эти понятия применяются к каждому развертыванию в конечной точке (для сетевых и пакетных конечных точек) и применяются к конечным точкам API без сервера (где концепция развертывания встроена в конечную точку).
Функция | Конечные точки API без сервера | Сетевые конечные точки | Конечные точки пакетной службы |
---|---|---|---|
Типы развертывания | Модели | Модели | Модели и компоненты конвейера |
Развертывание модели MLflow | Нет, только определенные модели в каталоге | Да | Да |
Развертывание пользовательской модели | Нет, только определенные модели в каталоге | Да, с скриптом оценки | Да, с скриптом оценки |
Развертывание пакета модели 2 | Встроенный | Да (предварительная версия) | No |
Сервер вывода 3 | API вывода модели ИИ Azure | — сервер вывода Машинное обучение Azure -Тритон — Custom (using BYOC) |
Вывод пакетной службы |
Потребляемый вычислительный ресурс | Нет (бессерверные) | Экземпляры или детализированные ресурсы | Экземпляры кластера |
Тип вычисления | Нет (бессерверные) | Управляемые вычислительные ресурсы и Kubernetes | Управляемые вычислительные ресурсы и Kubernetes |
Низкоприоритетные вычисления | Неприменимо | No | Да |
Масштабирование вычислений до нуля | Встроенный | No | Да |
Автомасштабирование вычислений4 | Встроенный | Да, на основе использования ресурсов | Да, на основе количества заданий |
Управление избыточностью | Регулирование | Регулирование | Организация очереди |
Стоимость5 | На маркер | На развертывание: вычислительные экземпляры, работающие | На задание: вычислительные экземпляры, потребляемые в задании (ограничено максимальным числом экземпляров кластера). |
Локальное тестирование развертываний | No | Да | Нет |
2 . Для развертывания моделей MLflow в конечных точках без исходящего подключения к Интернету или частных сетей сначала требуется упаковка модели .
3 Сервер вывода относится к технологии обслуживания, которая принимает запросы, обрабатывает их и создает ответы. Сервер вывода также определяет формат входных данных и ожидаемых выходных данных.
4 Автомасштабирование — это возможность динамически масштабировать выделенные ресурсы развертывания или уменьшить его масштаб на основе его нагрузки. В сети и пакетных развертываниях используются различные стратегии автомасштабирования. В то время как сетевые развертывания масштабируются вверх и вниз на основе использования ресурсов (например, ЦП, памяти, запросов и т. д.), конечные точки пакетной службы масштабируются вверх или вниз на основе числа созданных заданий.
5 Как в сети, так и в пакетном развертывании взимается плата за ресурсы, используемые. В сетевых развертываниях ресурсы подготавливаются во время развертывания. В пакетном развертывании ресурсы не используются во время развертывания, но во время выполнения задания. Следовательно, нет затрат, связанных с самим пакетным развертыванием. Аналогичным образом, в очередях задания не используются ресурсы.
Интерфейсы для разработчиков
Конечные точки предназначены для работы рабочих нагрузок на уровне рабочей среды в Машинное обучение Azure. Конечные точки являются надежными и масштабируемыми ресурсами, и они предоставляют лучшие возможности для реализации рабочих процессов MLOps.
Вы можете создавать пакетные и сетевые конечные точки и управлять ими с помощью нескольких средств разработчика:
- Azure CLI и пакет SDK для Python
- Azure Resource Manager/REST API
- Веб-портал Студии машинного обучения Azure
- Портал Azure (ИТ-администратор)
- Поддержка конвейеров CI/CD MLOps с использованием интерфейса Azure CLI и интерфейсов REST/ARM