Развертывание расширения Машинного обучения 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 (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 . Пример определения sslSecret YAML см. в разделе "Настройка sslSecret". Используйте эту конфигурацию или сочетание параметров защищенной sslCertPemFile sslKeyPemFile конфигурации. |
Н/П | Необязательно | Необязательно |
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
Выполните следующую команду CLI, чтобы проверить сведения о расширении Машинное обучение Azure:
az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
В ответе найдите "name" и "provisioningState": "Succeeded". Обратите внимание, что в течение нескольких первых минут параметр "provisioningState" может иметь значение "Pending".
Если для параметра "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.
- Для кластера AKS без подключения к Azure Arc см. сведения о развертывании расширений кластера и управлении ими.
- Для Kubernetes с поддержкой Azure Arc см. сведения о развертывании расширений кластера Kubernetes с поддержкой Azure Arc и управлении ими.