Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы кластер Azure Kubernetes Service (AKS) или кластер Kubernetes с поддержкой Azure Arc мог выполнять задания обучения или задачи инференса, сначала установите расширение Машинное обучение Azure. Расширение Машинное обучение Azure — это стандартное расширение кластера для AKS и расширение кластера для Kubernetes с поддержкой Azure Arc. Вы можете управлять жизненным циклом с помощью Azure CLI k8s-extension.
В этой статье вы узнаете:
- Предварительные требования
- Ограничения
- Просмотр параметров конфигурации расширения Машинного обучения Azure
- Варианты развертывания расширения Машинного обучения Azure
- Подтверждение развертывания расширения Машинного обучения Azure
- Знакомство с компонентами расширения Машинного обучения Azure
- Управление расширением Машинного обучения Azure
Предварительные требования
- Кластер AKS, работающий в Azure. Если вы раньше не использовали расширения кластера, необходимо зарегистрировать поставщика службы KubernetesConfiguration.
- Или кластер Kubernetes с поддержкой Azure Arc, который уже развернут и работает. Следуйте инструкциям в подключении существующего кластера Kubernetes к Azure Arc.
- Если кластер является кластером службы Azure RedHat OpenShift (ARO) или кластером платформы контейнеров OpenShift (OCP), необходимо выполнить другие необходимые действия, описанные в справочнике по настройке кластера Kubernetes.
- В рабочих целях кластер Kubernetes должен иметь не менее 4 виртуальных ЦП и 14 ГБ памяти. Дополнительные сведения о ресурсах и рекомендациях по размеру кластера см. в статье "Рекомендуемое планирование ресурсов".
- Кластер, работающий за исходящим прокси-сервером или брандмауэром , нуждается в дополнительных конфигурациях сети.
- Установите или обновите Azure CLI до версии 2.51.0 или более поздней.
- Установите расширение Azure CLI
k8s-extensionили обновите его до версии 1.2.3 или выше.
Ограничения
- Машинное обучение Azure не поддерживаетиспользование субъекта-службы с AKS. Вместо этого кластер AKS должен использовать управляемое удостоверение . Поддерживаются как управляемая идентичность, назначаемая системой, так и управляемая идентичность, назначаемая пользователем. Дополнительные сведения см. в статье Использование управляемого удостоверения в Служба Azure Kubernetes.
- При преобразовании кластера AKS из субъекта-службы в использование управляемого удостоверения необходимо удалить и повторно создать все пулы узлов перед установкой расширения. Невозможно напрямую обновить пулы узлов.
- Машинное обучение Azure не поддерживаетотключение локальных учетных записей для AKS. При развертывании кластера AKS локальные учетные записи включены по умолчанию.
- Если для вашего кластера AKS включены разрешённые диапазоны IP-адресов для доступа к серверу API, необходимо включить диапазоны IP-адресов управляющей плоскости Машинное обучение Azure для кластера AKS. Уровень управления AzureML развертывается в парных регионах. Без доступа к серверу API невозможно развернуть поды машинного обучения. Используйте диапазоны IP-адресов для обоих парных регионов при включении диапазонов IP-адресов в кластере AKS.
- Машинное обучение Azure не поддерживает подключение кластера AKS из другой подписки. Если у вас есть кластер AKS в другой подписке, необходимо сначала подключить его к Azure Arc и указать в той же подписке, что и рабочая область Машинного обучения Azure.
- Машинное обучение Azure не гарантирует поддержку всех функций этапа предварительной версии в AKS. Например, удостоверение Microsoft Entra, управляемое pod (устаревшее) не поддерживается. Вместо этого используйте Идентификация рабочей нагрузки Microsoft Entra.
- Если вы выполнили действия, описанные в документе AKS v1 для Машинное обучение Azure, чтобы создать или подключить AKS в качестве кластера логического вывода, воспользуйтесь следующей ссылкой, чтобы удалить связанные устаревшие ресурсы azureml-fe, прежде чем переходить к следующему шагу.
Просмотр параметров конфигурации расширения Машинного обучения Azure
Используйте команду Azure CLI az k8s-extension create для развертывания расширения Машинное обучение Azure. Команда az k8s-extension create принимает настройки конфигурации в виде разделённых пробелами пар key=value через параметр --config или --config-protected. В следующей таблице перечислены доступные параметры конфигурации, которые можно указать во время развертывания.
| Имя ключа настройки конфигурации | Описание | Обучение | Инференс | Обучение и вывод |
|---|---|---|---|---|
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". Используйте эту конфигурацию или комбинацию защищённых параметров конфигурации 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. Для задач машинного обучения на графических процессорах NVIDIA требуется NVIDIA Device Plugin. По умолчанию развертывание расширения Машинное обучение Azure не устанавливает плагин устройств NVIDIA, независимо от того, есть ли в кластере Kubernetes графические процессоры (GPU) или нет. Для установки пользователь может указать для этого параметра значение True, но обязательно выполните необходимые требования. |
Необязательно | Необязательно | Необязательно |
installPromOp |
True или False, по умолчанию True. Расширению Машинное обучение Azure требуется оператор Prometheus для управления Prometheus. Установите значение False, чтобы повторно использовать существующий оператор Prometheus. Дополнительные сведения об повторном использовании существующего оператора prometheus см. в статье о повторном использовании оператора prometheus |
Необязательно | Необязательно | Необязательно |
installVolcano |
True или False, по умолчанию True. Расширению Машинное обучение Azure требуется планировщик Volcano для планирования задания. Установите значение в False, чтобы повторно использовать существующий планировщик Volcano. Дополнительные сведения об повторном использовании существующего планировщика вулканов см. в статье о повторном использовании планировщика вулканов |
Необязательно | Н/П | Необязательно |
installDcgmExporter |
True или False, по умолчанию False. Dcgm-exporter может публиковать метрики GPU для рабочих нагрузок Машинное обучение Azure, которые можно отслеживать в портале Azure. Задайте для параметра installDcgmExporter значение True, чтобы установить dcgm-exporter. Но если вы хотите использовать собственный dcgm-экспортер, см . статью "Экспортер DCGM" |
Необязательно | Необязательно | Необязательно |
| Имя ключа защищенных параметров конфигурации | Описание | Обучение | Инференс | Обучение и вывод |
|---|---|---|---|---|
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. Дополнительные сведения о том, как настроить собственный ingress, см. в разделе Интеграция другого ingress-контроллера с расширением Машинное обучение Azure через HTTP или HTTPS. - Введите
clusterIP. Предоставляет доступ кazureml-feпо внутреннему IP-адресу кластера и делаетazureml-feдоступным только из кластера. Чтобыazureml-feмог обслуживать запросы вывода, поступающие из-за пределов кластера, необходимо настроить собственное решение балансировки нагрузки и завершение сеанса TLS/SSL дляazureml-fe. Дополнительные сведения о том, как настроить собственный Ingress, см. в разделе Интеграция других контроллеров Ingress с расширением Машинное обучение Azure через HTTP или HTTPS.
- Введите
- Чтобы обеспечить высокую доступность службы маршрутизации
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 с поддержкой Azure Arc за пределами Azure для быстрого proof-of-concept и только для выполнения заданий обучения
Для развертывания расширения Машинное обучение Azure в кластере Kubernetes с поддержкой Azure Arc-enabled 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 с поддержкой Azure Arc в любом месте для производственной нагрузки обучения и инференса с использованием GPU NVIDIA
При развертывании расширения Машинное обучение Azure в кластере Azure Arc-enabled 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:
AKS
az k8s-extension show --name <extension-name> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <resource-group>Kubernetes с поддержкой Azure Arc
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, указывающий на ваш кластер, чтобы убедиться, что все поды в пространстве имен
azuremlнаходятся в состоянииRunning:kubectl get pods -n azureml
Знакомство с компонентом расширения Машинного обучения Azure
По завершении развертывания расширения Машинное обучение Azure используйте kubectl get deployments -n azureml, чтобы просмотреть список ресурсов, созданных в кластере. Список обычно состоит из подмножества следующих ресурсов в зависимости от заданных параметров конфигурации.
| Имя ресурса | Тип ресурса | Обучение | Инференс | Обучение и вывод | Описание | Обмен данными с облаком |
|---|---|---|---|---|---|---|
| ретрансляторный сервер | Развертывание Kubernetes | ✓ | ✓ | ✓ | При развертывании создается сервер ретрансляции только для кластеров Kubernetes с поддержкой Azure Arc, а не для кластеров AKS. Сервер ретрансляции работает с Azure Relay для взаимодействия с облачными службами. | Получение запроса на создание задания, развертывание модели из облачной службы; синхронизация состояния задания с облачной службой. |
| шлюз | Развертывание Kubernetes | ✓ | ✓ | ✓ | Шлюз используется для взаимодействия и обмена данными. | Отправка сведений об узлах и ресурсах кластера в облачные службы. |
| AML-оператор | Развертывание Kubernetes | ✓ | Н/П | ✓ | Управляйте жизненным циклом задач обучения. | Обмен токенами с облачной службой токенов для проверки подлинности и авторизации Реестра контейнеров Azure. |
| менеджер контроллера метрик | Развертывание Kubernetes | ✓ | ✓ | ✓ | Управление конфигурацией для Prometheus | Н/П |
| {EXTENSION-NAME}-kube-state-metrics | Развертывание Kubernetes | ✓ | ✓ | ✓ | Экспортируйте метрики, связанные с кластером, в Prometheus. | Н/П |
| {EXTENSION-NAME}-prometheus-operator | Развертывание Kubernetes | Необязательно | Необязательно | Необязательно | Обеспечить нативное для Kubernetes развертывание и управление Prometheus и связанными компонентами мониторинга. | Н/П |
| amlarc-identity-controller | Развертывание Kubernetes | Н/П | ✓ | ✓ | Запрос и продление токена Azure Blob/Реестра контейнеров Azure через управляемое удостоверение. | Обмен токенами с облачной службой токенов для проверки подлинности и авторизации Реестра контейнеров Azure и BLOB-объекта Azure, используемых при выводе или развертывании модели. |
| amlarc-identity-proxy | Развертывание Kubernetes | Н/П | ✓ | ✓ | Запрос и обновление токена Azure Blob/Реестр контейнеров Azure с использованием управляемого удостоверения. | Обмен токенами с облачной службой токенов для аутентификации и авторизации Реестр контейнеров Azure и Azure Blob, используемых при инференсе или развертывании модели. |
| azureml-fe-v2 | Развертывание Kubernetes | Н/П | ✓ | ✓ | Интерфейсный компонент, который направляет входящие запросы вывода в развернутые службы. | Отправить журналы службы в Azure Blob. |
| инференс-оператор-менеджер контроллеров | Развертывание Kubernetes | Н/П | ✓ | ✓ | Управление жизненным циклом конечных точек вывода. | Н/П |
| вулкан-прием | Развертывание Kubernetes | Необязательно | Н/П | Необязательно | Веб-перехватчик приема Volcano. | Н/П |
| контроллеры вулканов | Развертывание Kubernetes | Необязательно | Н/П | Необязательно | Управление жизненным циклом подов заданий обучения Машинное обучение Azure. | Н/П |
| планировщик вулканов | Развертывание 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 | StatefulSet Kubernetes | ✓ | ✓ | ✓ | Сбор и отправка метрик задания в облако. | Отправка метрик задания, таких как использование ЦП, GPU и памяти, в облако. |
Внимание
- Ресурс Azure Relay находится в той же группе ресурсов, что и ресурс кластера Arc. Он используется для взаимодействия с кластером Kubernetes. Изменение этого объекта нарушает работу подключенных целевых вычислительных ресурсов.
- По умолчанию ресурсы развертывания развертываются случайным образом на одном или нескольких узлах кластера, а ресурсы управляющей программы развертываются на всех узлах. Чтобы ограничить развертывание расширения определенными узлами, используйте
nodeSelectorпараметр конфигурации, описанный в таблице параметров конфигурации.
Примечание.
-
{EXTENSION-NAME}: это имя расширения, указанное
az k8s-extension create --nameс помощью команды CLI.
Управление расширением Машинного обучения Azure
Обновление, перечисление, отображение и удаление расширения Машинное обучение Azure.
- Сведения о кластерах AKS без подключения Azure Arc см. в разделе Deploy и управление расширениями кластера.
- Сведения о Kubernetes с поддержкой Azure Arc см. в статье Развертывание расширений кластера Kubernetes с поддержкой Azure Arc и управление ими.