Развертывание расширения Машинного обучения Azure в AKS или кластере Arc Kubernetes

Чтобы включить кластер AKS или Arc Kubernetes для выполнения заданий обучения или рабочих нагрузок вывода, необходимо сначала развернуть расширение Машинное обучение Azure в кластере AKS или Arc Kubernetes. Расширение Машинное обучение Azure основано на расширении кластера для расширения AKS и кластера или Arc Kubernetes, а его жизненный цикл можно легко управлять с помощью расширения Azure CLI k8s-extension.

В этой статье раскрываются приведенные ниже темы.

  • Необходимые компоненты
  • Ограничения
  • Просмотр параметров конфигурации расширения Машинного обучения Azure
  • Варианты развертывания расширения Машинного обучения Azure
  • Подтверждение развертывания расширения Машинного обучения Azure
  • Знакомство с компонентами расширения Машинного обучения Azure
  • Управление расширением Машинного обучения Azure

Необходимые компоненты

  • Кластер AKS, работающий в Azure. Если вы ранее не использовали расширения кластера, необходимо зарегистрировать поставщика служб KubernetesConfiguration.
  • работающий кластер Kubernetes с поддержкой Arc. Следуйте инструкциям в подключении существующего кластера Kubernetes к Azure Arc.
    • Если кластер является кластером Azure RedHat OpenShift Service (ARO) или кластером Платформы контейнеров OpenShift (OCP), необходимо выполнить другие необходимые действия, как описано в справочнике по настройке кластера Kubernetes.
  • В рабочих целях кластер Kubernetes должен иметь не менее 4 виртуальных ЦП и 14 ГБ памяти. Дополнительные сведения о ресурсах и рекомендациях по размеру кластера см. в статье "Рекомендуемое планирование ресурсов".
  • Кластер, работающий за исходящим прокси-сервером или брандмауэром, нуждается в дополнительных конфигурациях сети.
  • Установите Azure CLI либо обновите его до версии 2.24.0 или более поздней версии.
  • Установите или расширение k8s-extension Azure CLI либо обновите его до версии 1.2.3 или более поздней версии.

Ограничения

  • Использование субъекта-службы с AKSне поддерживается Машинным обучением Azure. Вместо этого кластер AKS должен использовать управляемое удостоверение . Поддерживаются управляемые удостоверения, назначаемые системой, и назначаемое пользователем управляемое удостоверение. Дополнительные сведения см. в разделе "Использование управляемого удостоверения в Служба Azure Kubernetes".
    • Когда используемый субъект-служба кластера AKS преобразуется для использования управляемого удостоверения, перед установкой расширения все пулы узлов необходимо удалить и создать заново, а не обновлять напрямую.
  • Отключение локальных учетных записей для AKS не поддерживается Машинным обучением Azure. При развертывании кластера AKS локальные учетные записи включаются по умолчанию.
  • Если кластер AKS имеет разрешенный диапазон IP-адресов для доступа к серверу API, включите диапазоны IP-адресов уровня управления Машинное обучение Azure для кластера AKS. Уровень управления AzureML развертывается в парных регионах. Без доступа к серверу API невозможно развернуть модули pod машинного обучения. Используйте диапазоны IP-адресов для парных регионов при включении диапазонов IP-адресов в кластере AKS.
  • Машинное обучение Azure не поддерживает подключение кластера AKS между подписками. Если у вас есть кластер AKS в другой подписке, необходимо сначала подключить его к Azure-Arc и указать в той же подписке, что и рабочая область Машинное обучение Azure.
  • Машинное обучение Azure не гарантирует поддержку всех функций этапа предварительной версии в AKS. Например, удостоверение pod Microsoft Entra не поддерживается.
  • Если вы выполнили действия из документа Машинное обучение Azure AKS версии 1 для создания или присоединения AKS к кластеру вывода, используйте следующую ссылку, чтобы очистить устаревшие ресурсы, связанные с azureml-fe, прежде чем продолжить следующий шаг.

Просмотр параметров конфигурации расширения Машинного обучения Azure

Для развертывания расширения Машинное обучение Azure можно использовать команду k8s-extension create cli Машинное обучение Azure CLI. Команда k8s-extension create CLI позволяет указать набор параметров конфигурации в формате key=value с помощью параметра --config или --config-protected. Ниже приведен список доступных параметров конфигурации, которые необходимо указать во время развертывания расширения Машинное обучение Azure.

Имя ключа параметров конфигурации Description Обучение Вывод Обучение и вывод
enableTraining True или False, по умолчанию False. Необходимо задать True для развертывания расширения Машинное обучение Azure с поддержкой обучения модели Машинное обучение и пакетной оценки. Н/П
enableInference True или False, по умолчанию False. Необходимо задать для True развертывания расширения Машинное обучение Azure с поддержкой вывода Машинное обучение. Н/П
allowInsecureConnections True или False, по умолчанию False. Можно задать значение True для использования конечных точек HTTP вывода для разработки или тестирования. Н/П Необязательно Необязательно
inferenceRouterServiceType loadBalancer, nodePort или clusterIP. Обязательно, если enableInference=True. Н/П
internalLoadBalancerProvider Сейчас эта конфигурация может быть применена только к кластеру Службы Azure Kubernetes (AKS). Задайте значение azure, чтобы разрешить маршрутизатору вывода использовать внутреннюю подсистему балансировки нагрузки. Н/П Необязательно Необязательно
sslSecret Имя секрета Kubernetes в azureml пространстве имен. Эта конфигурация используется для хранения cert.pem (сертификат TLS/SSL в кодировке PEM) и key.pem (КЛЮЧ TLS/SSL в кодировке PEM), которые необходимы для поддержки конечных точек HTTPS вывода, если allowInsecureConnections задано значение False. Пример определения sslSecretYAML см. в разделе "Настройка sslSecret". Используйте эту конфигурацию или сочетание параметров защищенной sslCertPemFilesslKeyPemFile конфигурации. Н/П Необязательно Необязательно
sslCname Tls/SSL CNAME используется конечной точкой HTTPS вывода. Обязательно, если allowInsecureConnections=False. Н/П Необязательно Необязательно
inferenceRouterHA True или False, по умолчанию True. По умолчанию расширение Машинное обучение Azure развертывает три реплика маршрутизатора вывода для обеспечения высокой доступности, для которого требуется по крайней мере три рабочих узла в кластере. Если задано значение False и в кластере менее трех рабочих узлов, развертывается только одна служба маршрутизатора вывода. Н/П Необязательно Необязательно
nodeSelector По умолчанию развернутые ресурсы kubernetes и рабочие нагрузки машинного обучения развертываются случайным образом на одном или нескольких узлах кластера, а ресурсы DaemonSet развертываются на всех узлах. Если вы хотите ограничить развертывание расширения и рабочие нагрузки обучения или вывода определенным узлам с меткой key1=value1 и key2=value2использовать nodeSelector.key1=value1соответствующим nodeSelector.key2=value2 образом. Необязательно Необязательно Необязательно
installNvidiaDevicePlugin True или False, по умолчанию False. Для рабочих нагрузок машинного обучения на GPU NVIDIA требуется подключаемый модуль устройства NVIDIA. По умолчанию развертывание расширения Машинное обучение Azure не установит подключаемый модуль устройства NVIDIA независимо от того, что кластер Kubernetes имеет оборудование GPU или нет. Для установки пользователь может указать для этого параметра значение True, но обязательно выполните необходимые требования. Необязательно Необязательно Необязательно
installPromOp True или False, по умолчанию True. Машинное обучение Azure расширению требуется оператор prometheus для управления prometheus. Установите для False повторного использования существующего оператора prometheus. Дополнительные сведения об повторном использовании существующего оператора prometheus см. в статье о повторном использовании оператора prometheus Необязательно Необязательно Необязательно
installVolcano True или False, по умолчанию True. Машинное обучение Azure расширению требуется планировщик вулканов для планирования задания. Установите значение False, чтобы повторно использовать имеющийся планировщик volcano. Дополнительные сведения об повторном использовании существующего планировщика вулканов см. в статье о повторном использовании планировщика вулканов Необязательно Н/П Необязательно
installDcgmExporter True или False, по умолчанию False. Dcgm-exporter может предоставлять метрики GPU для рабочих нагрузок Машинное обучение Azure, которые можно отслеживать в портал Azure. Задайте для параметра installDcgmExporter значение True, чтобы установить dcgm-exporter. Но если вы хотите использовать собственный dcgm-экспортер, см . статью "Экспортер DCGM" Необязательно Необязательно Необязательно
Имя ключа защищенных параметров конфигурации Description Обучение Вывод Обучение и вывод
sslCertPemFile, sslKeyPemFile Путь к TLS/SSL-сертификату и файлу ключа (в кодировке PEM), необходимому для развертывания расширения Машинное обучение Azure с поддержкой конечной точки HTTPS вывода, если allowInsecureConnections задано значение False. Примечание. PEM-файл, защищенный парольной фразой, не поддерживается. Н/П Необязательно Необязательно

Как видно из таблицы параметров конфигурации, сочетания различных параметров конфигурации позволяют развертывать расширение Машинное обучение Azure для различных сценариев рабочей нагрузки машинного обучения:

  • Для задания обучения и рабочей нагрузки пакетного вывода укажите enableTraining=True.
  • Только для рабочей нагрузки вывода укажите enableInference=True.
  • Для всех видов рабочей нагрузки машинного обучения укажите enableTraining=True и enableInference=True.

Если вы планируете развернуть расширение Машинное обучение Azure для рабочей нагрузки вывода в режиме реального времени и хотите указатьenableInference=True, обратите внимание на следующие параметры конфигурации, связанные с рабочей нагрузкой вывода в режиме реального времени:

  • Служба маршрутизатора azureml-fe нужна для поддержки вывода в режиме реального времени. Необходимо также указать параметр конфигурации inferenceRouterServiceType для azureml-fe. azureml-fe можно развернуть с помощью одного из следующих вариантов inferenceRouterServiceType:
    • Введите LoadBalancer. Предоставляет внешний доступ к azureml-fe с помощью подсистемы балансировки нагрузки поставщика облачных служб. Чтобы указать это значение, убедитесь, что кластер поддерживает подготовку подсистемы балансировки нагрузки. Обратите внимание, что большинство локальных кластеров Kubernetes могут не поддерживать внешнюю подсистему балансировки нагрузки.
    • Введите NodePort. Предоставляет доступ к azureml-fe по IP-адресу каждого узла со статическим портом. Вы сможете связаться с azureml-fe за пределами кластера, запросив <NodeIP>:<NodePort>. Использование NodePort также позволяет настроить собственное решение балансировки нагрузки и завершение сеанса TLS/SSL для azureml-fe.
    • Введите ClusterIP. Предоставляет доступ к azureml-fe по внутреннему IP-адресу кластера и делает azureml-fe доступным только из кластера. Чтобы azureml-fe мог обслуживать запросы вывода, поступающие из-за пределов кластера, необходимо настроить собственное решение балансировки нагрузки и завершение сеанса TLS/SSL для azureml-fe.
  • Чтобы обеспечить высокий azureml-fe уровень доступности службы маршрутизации, развертывание расширения Машинное обучение Azure по умолчанию создает три реплика azureml-fe для кластеров с тремя узлами или более. Если кластер имеет менее 3 узлов, задайте значение inferenceRouterHA=False.
  • Можно также использовать протокол HTTPS для ограничения доступа к конечным точкам модели и защиты данных, отправляемых клиентами. Для этого необходимо указать параметр конфигурации sslSecret или сочетание защищенных параметров конфигурации sslKeyPemFile и sslCertPemFile.
  • По умолчанию развертывание расширения Машинное обучение Azure ожидает параметров конфигурации для поддержки HTTPS. Для целей разработки или тестирования предоставляется протокол HTTP путем указания параметра allowInsecureConnections=True.

Развертывание расширения Машинного обучения Azure: примеры с использованием CLI и портала Azure

Чтобы развернуть расширение Машинное обучение Azure с помощью ИНТЕРФЕЙСА командной строки, используйте az k8s-extension create команду, передаваемую значения для обязательных параметров.

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

  • Быстрое подтверждение концепции с помощью кластера AKS в Azure для выполнения любой рабочей нагрузки машинного обучения, то есть заданий обучения или развертывания моделей в качестве конечных точек в сети или конечных точек пакетной обработки

    Чтобы Машинное обучение Azure развертывание расширений в кластере AKS, обязательно укажите managedClusters значение параметра--cluster-type. Выполните следующую команду Azure CLI, чтобы развернуть расширение Машинное обучение Azure:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer allowInsecureConnections=True InferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Быстрое подтверждение концепции с помощью кластера Kubernetes с Arc вне Azure исключительно для выполнения заданий обучения.

    Для развертывания расширения Машинное обучение Azure в кластере Arc Kubernetes необходимо указать connectedClusters значение параметра--cluster-type. Выполните следующую команду Azure CLI, чтобы развернуть расширение Машинное обучение Azure:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Включите кластер AKS в Azure для обучения рабочей среды и рабочей нагрузки вывода для развертывания расширения Машинное обучение Azure в AKS, обязательно укажите managedClusters значение параметра--cluster-type. Предположим, что кластер имеет более трех узлов, и вы используете общедоступную подсистему балансировки нагрузки Azure и HTTPS для поддержки рабочей нагрузки вывода. Выполните следующую команду Azure CLI, чтобы развернуть расширение Машинное обучение Azure:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Включение кластера Kubernetes с Arc в любом расположении для рабочей нагрузки обучения и вывода в рабочей среде с помощью процессоров GPU NVIDIA.

    Для развертывания расширения Машинное обучение Azure в кластере Arc Kubernetes обязательно укажите connectedClusters значение параметра--cluster-type. Если кластер имеет более трех узлов, вы используете тип службы NodePort и HTTPS для поддержки рабочей нагрузки вывода, выполните следующую команду Azure CLI для развертывания расширения Машинное обучение Azure:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=NodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Подтверждение развертывания расширения Машинного обучения Azure

  1. Выполните следующую команду CLI, чтобы проверка Машинное обучение Azure сведения о расширении:

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. В ответе найдите "name" и "provisioningState": "Succeeded". Обратите внимание, что в течение нескольких первых минут параметр "provisioningState" может иметь значение "Pending".

  3. Если для параметра "provisioningState" отображается состояние "Succeeded", выполните следующую команду на компьютере с файлом kubeconfig, который указывает на ваш кластер, чтобы проверить, что все объекты pod в пространстве имен "azureml" находятся в состоянии "Running".

     kubectl get pods -n azureml
    

Знакомство с компонентом расширения Машинного обучения Azure

После завершения развертывания расширения Машинное обучение Azure можно kubectl get deployments -n azureml просмотреть список ресурсов, созданных в кластере. Как правило, список состоит из подмножества следующих ресурсов в соответствии с указанными параметрами конфигурации.

Имя ресурса Тип ресурса Обучение Вывод Обучение и вывод Description Обмен данными с облаком
relayserver Развертывание Kubernetes Сервер ретрансляции создается только для кластера Arc Kubernetes, а не в кластере AKS. Сервер ретрансляции работает с Azure Relay для взаимодействия с облачными службами. Получение запроса на создание задания, развертывание модели из облачной службы; синхронизация состояния задания с облачной службой.
шлюз Развертывание Kubernetes Шлюз используется для взаимодействия и обмена данными. Отправка сведений об узлах и ресурсах кластера в облачные службы.
AML-оператор Развертывание Kubernetes Н/П Управление жизненным циклом учебных заданий. Обмен токенами с облачной службой токенов для проверки подлинности и авторизации Реестра контейнеров Azure.
metrics-controller-manager Развертывание Kubernetes Управление конфигурацией для Prometheus Н/П
{EXTENSION-NAME}-kube-state-metrics Развертывание Kubernetes Экспортируйте метрики, связанные с кластером, в Prometheus. Н/П
{EXTENSION-NAME}-prometheus-operator Развертывание Kubernetes Необязательно Необязательно Необязательно Предоставьте Kubernetes собственное развертывание и управление Prometheus и связанными компонентами мониторинга. Н/П
amlarc-identity-controller Развертывание Kubernetes Н/П Запрос и продление токена BLOB-объекта Azure/Реестра контейнеров Azure с помощью управляемого удостоверения. Обмен токенами с облачной службой токенов для проверки подлинности и авторизации Реестра контейнеров Azure и BLOB-объекта Azure, используемых при выводе или развертывании модели.
amlarc-identity-proxy Развертывание Kubernetes Н/П Запрос и продление токена BLOB-объекта Azure/Реестра контейнеров Azure с помощью управляемого удостоверения. Обмен токенами с облачной службой токенов для проверки подлинности и авторизации Реестра контейнеров Azure и BLOB-объекта Azure, используемых при выводе или развертывании модели.
azureml-fe-v2 Развертывание Kubernetes Н/П Интерфейсный компонент, который направляет входящие запросы вывода в развернутые службы. Отправка журналов службы в BLOB-объект Azure.
inference-operator-controller-manager Развертывание Kubernetes Н/П Управление жизненным циклом конечных точек вывода. Н/П
volcano-admission Развертывание Kubernetes Необязательно Н/П Необязательно Веб-перехватчик приема Volcano. Н/П
volcano-controllers Развертывание Kubernetes Необязательно Н/П Необязательно Управление жизненным циклом объектов pod для задания обучения Машинного обучения Azure. Н/П
volcano-scheduler Развертывание Kubernetes Необязательно Н/П Необязательно Используется для планирования заданий кластера. Н/П
fluent-bit Набор управляющих программ Kubernetes Сбор системного журнала компонентов. Отправка системного журнала компонентов в облако.
{EXTENSION-NAME}-dcgm-exporter Набор управляющих программ Kubernetes Необязательно Необязательно Необязательно dcgm-exporter предоставляет метрики GPU для Prometheus. Н/П
nvidia-device-plugin-daemonset Набор управляющих программ Kubernetes Необязательно Необязательно Необязательно nvidia-device-plugin-daemonset предоставляет GPU на каждом узле кластера Н/П
prometheus-prom-prometheus Набор Kubernetes с отслеживанием состояния Сбор и отправка метрик задания в облако. Отправка метрик задания, таких как использование ЦП, GPU и памяти, в облако.

Внимание

  • Ресурс Azure Relay находится в той же группе ресурсов, что и ресурс кластера Arc. Он используется для взаимодействия с кластером Kubernetes, и его изменение приводит к разрыву подключенных целевых объектов вычислений.
  • По умолчанию ресурсы развертывания Kubernetes случайным образом развертываются на одном или нескольких узлах в кластере, а ресурсы управляющей программы развертываются на всех узлах. Если вы хотите ограничить развертывание расширения определенными узлами, используйте nodeSelector параметр конфигурации, описанный в таблице параметров конфигурации.

Примечание.

  • {EXTENSION-NAME} — это имя расширения, указанное в команде CLI az k8s-extension create --name.

Управление расширением Машинного обучения Azure

Обновление, перечисление, отображение и удаление расширения Машинное обучение Azure.

Следующие шаги