Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 1
Внимание
В этой статье содержатся сведения об использовании пакета SDK машинного обучения Azure версии 1. Пакет SDK версии 1 устарел с 31 марта 2025 г. Поддержка будет завершена 30 июня 2026 г. Вы можете установить и использовать пакет SDK версии 1 до этой даты. Существующие рабочие процессы, использующие пакет SDK версии 1, будут продолжать работать после даты окончания поддержки. Однако они могут быть подвержены рискам безопасности или критическим изменениям в случае изменений архитектуры в продукте.
Рекомендуется перейти на пакет SDK версии 2 до 30 июня 2026 г. Дополнительные сведения о пакете SDK версии 2 см. в статье "Что такое ИНТЕРФЕЙС командной строки Машинного обучения Azure" и пакет SDK для Python версии 2 исправочник по пакету SDK версии 2.
Внимание
В этой статье показано, как использовать ИНТЕРФЕЙС командной строки и пакет SDK версии 1 для создания или подключения кластера Служба Azure Kubernetes, который теперь считается устаревшим компонентом. Сведения о подключении кластера Служба Azure Kubernetes с помощью рекомендуемого подхода для версии 2 см. в статье "Общие сведения о целевом объекте вычислений Kubernetes" версии 2.
Машинное обучение Azure позволяет развернуть обученные модели машинного обучения в службе Azure Kubernetes. Однако сначала необходимо создать кластер Служба Azure Kubernetes (AKS) из рабочей области Машинное обучение Azure или подключить существующий кластер AKS. Эта статья содержит сведения о создании кластера и подключении к нему.
Необходимые компоненты
Рабочая область Машинного обучения Azure. Дополнительные сведения см. в разделе Создание рабочей области Машинного обучения Azure.
Расширение Azure CLI (v1) для службы машинного обучения Azure, пакет SDK службы машинного обучения Azure для Python или расширение Visual Studio Code для службы машинного обучения Azure.
Внимание
Внимание
Для использования некоторых команд Azure CLI, приведенных в этой статье, используйте расширение
azure-cli-ml(версия 1) для Машинного обучения Azure. Поддержка CLI версии 1 закончилась 30 сентября 2025 г. Корпорация Майкрософт больше не будет предоставлять техническую поддержку или обновления для этой службы. Существующие рабочие процессы, использующие CLI версии 1, будут продолжать работать после даты окончания поддержки. Однако они могут быть подвержены рискам безопасности или критическим изменениям в случае изменений архитектуры в продукте.Рекомендуется как можно скорее перейти к расширению
mlили версии 2. Дополнительные сведения о расширении версии 2 см. в разделе Машинное обучение Azure расширение CLI и пакет SDK для Python версии 2.Если вы планируете использовать azure виртуальная сеть для защиты связи между рабочей областью Машинное обучение Azure и кластером AKS, ваша рабочая область и связанные с ней ресурсы (хранилище, хранилище ключей, Реестр контейнеров Azure) должны иметь частные конечные точки или конечные точки службы в той же виртуальной сети, что и виртуальная сеть кластера AKS. Следуйте инструкциям по созданию безопасной рабочей области , чтобы добавить эти частные конечные точки или конечные точки службы в виртуальную сеть.
Ограничения
AKS можно создать или подключить только в качестве одного целевого объекта вычислений в рабочей области Машинного обучения Azure. Несколько вложений для одного вычисления AKS не поддерживаются.
Если вам требуется служба Load Balancer ценовой категории "Стандартный" , развернутая в кластере вместо Load Balancer ценовой категории "Базовый", создайте кластер на портале AKS, в CLI или SDK, а затем подключите его к рабочей области Машинного обучения Azure.
Если у вас есть политика Azure, которая ограничивает создание общедоступных IP-адресов, создание кластера AKS завершается сбоем. Для работы AKS требуется общедоступный IP-адрес для исходящего трафика. В статье также приводятся рекомендации по блокированию исходящего трафика из кластера через общедоступный IP-адрес, за исключением нескольких полных доменных имен. Существует два способа включения общедоступного IP-адреса.
- Кластер может использовать общедоступный IP-адрес, созданный по умолчанию с помощью подсистемы балансировки нагрузки (цен. категория "Стандартный") или подсистемы балансировки нагрузки (цен. категория "Базовый").
- Кластер можно создать без общедоступного IP-адреса, а затем настроить общедоступный IP-адрес в брандмауэре с определяемым пользователем маршрутом. Дополнительные сведения см. в статье Настройка исходящего трафика кластера с помощью определяемого пользователем маршрута (предварительная версия).
Плоскость управления машинным обучением Azure не взаимодействует с этим общедоступным IP-адресом. Для развертывания он обращается к уровню управления AKS.
Чтобы подключить кластер AKS, субъекту-службе или пользователю, выполняющим операцию, должна быть назначена роль Владелец или участник управления доступом на основе ролей Azure (Azure RBAC) в группе ресурсов Azure, содержащей кластер. Субъекту-службе или пользователю также нужно назначить Роль администратора кластера службы Azure Kubernetes в кластере.
Если вы подключаете кластер AKS с разрешенным диапазоном IP-адресов, чтобы получить доступ к серверу API, включите диапазоны IP-адресов уровня управления Машинного обучения Azure для кластера AKS. Уровень управления Машинного обучения Azure развертывается в парных регионах и развертывает модули вывода объекта pod в кластере AKS. Без доступа к серверу API контейнеры, выполняющие вычислительные задачи, не могут быть развернуты. Используйте диапазоны IP-адресов для парных регионов при включении диапазонов IP-адресов в кластере AKS.
IP-диапазоны авторизации работают только с подсистемой балансировки нагрузки (цен. категория "Стандартный").
Если вы хотите использовать частный кластер AKS (с помощью частного канала Azure), сначала необходимо создать кластер, а затем подключить его к рабочей области. Дополнительные сведения см. в статье Создание частного кластера службы Kubernetes Azure.
Использование общедоступного полного доменного имени (FQDN) с частным кластером AKSне поддерживается в Машинном обучении Azure.
Имя вычислительной среды для кластера AKS ДОЛЖНО быть уникальным в пределах рабочей области Машинного обучения Azure. Он может включать буквы, цифры и дефисы. Имя должно начинаться с буквы, заканчиваться буквой или цифрой и иметь длину от 3 до 24 символов.
Если вы хотите развернуть модели на узлах GPU или узлах FPGA (или на любом конкретном номере SKU), необходимо создать кластер с конкретным номером SKU. Создание пула вторичных узлов в существующем кластере и развертывание моделей в пуле вторичных узлов не поддерживаются.
При создании или подключении кластера можно выбрать, следует ли создать кластер для разработки, тестирования или производства. Если вы хотите создать кластер AKS для разработки, проверки и тестирования вместо производства, задайте для параметра Назначение кластера значение Разработка и тестирование. Если не указать назначение кластера, создается рабочий кластер.
Внимание
Кластер dev-test не подходит для трафика на уровне рабочей среды и может увеличить время вывода. Кластеры разработки и тестирования также не гарантируют отказоустойчивость.
При создании или присоединении кластера, если кластер используется для промышленной эксплуатации, он должен содержать не менее 3 узлов. Для кластера разработки и тестирования он должен содержать по крайней мере 1 узел.
Пакет SDK машинного обучения Azure не поддерживает масштабирование кластера AKS. Изменить узлы в кластере AKS можно с помощью пользовательского интерфейса для кластера AKS на портале Azure. Можно изменить только количество узлов, а не размер виртуальной машины кластера. Дополнительные сведения о масштабировании узлов в кластере AKS см. в следующих статьях.
Отсутствие прямого обновления кластера с помощью конфигурации YAML. Хотя службы Azure Kubernetes поддерживают обновления с помощью конфигурации YAML, развертывания Azure Machine Learning переопределяют ваши изменения. Единственными двумя полями YAML, которые не перезаписаны, являются ограничения запросов и ЦП и память.
Создание кластера AKS с помощью пользовательского интерфейса Студии машинного обучения Azure, пакета SDK или расширения CLI не является идемпотентным. Попытка создать ресурс снова приводит к ошибке, что кластер с тем же именем уже существует.
- Использование шаблона Azure Resource Manager и ресурса Microsoft. Microsoft.MachineLearningServices/workspaces/computes для создания кластера AKS также не является идемпотентным. При попытке повторного использования шаблона обновить уже существующий ресурс, вы получите ту же ошибку.
Версия Службы Azure Kubernetes (AKS)
Служба Azure Kubernetes позволяет создавать кластер с помощью различных версий Kubernetes. Дополнительные сведения о доступных версиях см. в разделе Поддерживаемые версии Kubernetes в Службе Azure Kubernetes.
При создании кластера службы Azure Kubernetes с помощью одного из следующих методов у вас нет выбора в версии созданного кластера:
- Студия машинного обучения Azure или раздел машинного обучение на портале Azure.
- Расширение машинного обучения для Azure CLI.
- Пакет SDK для машинного обучения Azure.
Указанные методы создания кластера AKS используют версию кластера по умолчанию. Версия по умолчанию меняется со временем, так как появляются новые версии Kubernetes.
При подключении существующего кластера AKS используются все версии AKS, поддерживаемые в настоящее время.
Внимание
Служба Azure Kubernetes использует драйвер Blobfuse FlexVolume для версий <= 1.16 и Blob-драйвер CSI для версий >= 1.17. Поэтому важно повторно развернуть или обновить веб-службу после обновления кластера, чтобы использовать правильный метод blobfuse для текущей версии кластера.
Примечание.
Могут возникнуть пограничные случаи, когда у вас есть старый кластер, который больше не поддерживается. В этом случае операция вложения возвращает ошибку и выводит список поддерживаемых версий.
Вы можете подключиться к Предварительной версии. Для предварительной версии соглашение об уровне обслуживания не предусмотрено. Мы не рекомендуем использовать ее в рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Поддержка использования предварительных версий может быть ограничена. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Доступные и версии по умолчанию
Для поиска доступных версий AKS и по умолчанию используйте команду Azure CLIaz aks get-versions. Например, следующая команда возвращает версии, доступные в регионе "Западная часть США":
az aks get-versions -l westus -o table
После выполнения этой команды вы должны увидеть текст, аналогичный приведенному ниже.
KubernetesVersion Upgrades
------------------- ----------------------------------------
1.18.6(preview) None available
1.18.4(preview) 1.18.6(preview)
1.17.9 1.18.4(preview), 1.18.6(preview)
1.17.7 1.17.9, 1.18.4(preview), 1.18.6(preview)
1.16.13 1.17.7, 1.17.9
1.16.10 1.16.13, 1.17.7, 1.17.9
1.15.12 1.16.10, 1.16.13
1.15.11 1.15.12, 1.16.10, 1.16.13
Чтобы найти версию по умолчанию, используемую при создании кластера с помощью машинного обучения Azure, можно использовать параметр --query, чтобы выбрать версию по умолчанию:
az aks get-versions -l westus --query "orchestrators[?default == `true`].orchestratorVersion" -o table
После выполнения этой команды вы должны увидеть текст, аналогичный приведенному ниже.
Result
--------
1.16.13
Если вы хотите программно проверить доступные версии, используйте клиент службы контейнеров — REST API list Orchestrators. Чтобы найти доступные версии, просмотрите записи, где orchestratorType имеет значение Kubernetes. Связанные записи orchestrationVersion содержат доступные версии, которые можно подключить к рабочей области.
Чтобы найти версию по умолчанию, используемую при создании кластера с помощью машинного обучения Azure, найдите запись, где orchestratorType имеет значение Kubernetes, а default — true. Связанное значение orchestratorVersion является версией по умолчанию. Ниже приведен фрагмент кода:
...
{
"orchestratorType": "Kubernetes",
"orchestratorVersion": "1.16.13",
"default": true,
"upgrades": [
{
"orchestratorType": "",
"orchestratorVersion": "1.17.7",
"isPreview": false
}
]
},
...
Создание кластера AKS.
Примерное время: около 10 минут.
Кластер AKS для рабочей области нужно создать только один раз. Один кластер можно использовать для нескольких развертываний. Если вы удаляете кластер или группу ресурсов, в которую он входит, во время следующего развертывания нужно будет создать новый кластер. К рабочей области можно подключить несколько кластеров AKS.
В следующем примере показано, как создать новый кластер AKS с помощью пакета SDK и интерфейса командной строки:
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core.compute import AksCompute, ComputeTarget
# Use the default configuration (you can also provide parameters to customize this).
# For example, to create a dev/test cluster, use:
# prov_config = AksCompute.provisioning_configuration(cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST)
prov_config = AksCompute.provisioning_configuration()
# Example configuration to use an existing virtual network
# prov_config.vnet_name = "mynetwork"
# prov_config.vnet_resourcegroup_name = "mygroup"
# prov_config.subnet_name = "default"
# prov_config.service_cidr = "10.0.0.0/16"
# prov_config.dns_service_ip = "10.0.0.10"
# prov_config.docker_bridge_cidr = "172.17.0.1/16"
aks_name = 'myaks'
# Create the cluster
aks_target = ComputeTarget.create(workspace = ws,
name = aks_name,
provisioning_configuration = prov_config)
# Wait for the create process to complete
aks_target.wait_for_completion(show_output = True)
Дополнительные сведения о классах, методах и параметрах, используемых в этом примере, см. в следующих справочных документах.
Подключение существующего кластера AKS
Примерное время: приблизительно 5 минут.
Если в вашей подписке Azure уже есть кластер AKS, его можно использовать для развертывания образа.
Совет
Существующий кластер AKS может находиться в регионе Azure, отличном от рабочей области Машинного обучения Azure.
Предупреждение
Не создавайте несколько одновременных вложений в один кластер AKS. Например, присоединение одного кластера AKS к рабочей области с использованием двух разных имен или присоединение одного кластера AKS к другой рабочей области. Каждое новое вложение нарушает предыдущие существующие вложения и приводит к непредсказуемой ошибке.
Если требуется повторно подключить кластер AKS, например для изменения настроек TLS или другого кластера, необходимо сначала удалить существующее вложение с помощью команды AksCompute.detach().
Дополнительные сведения о создании кластера AKS с помощью Azure CLI или портала см. в следующих статьях.
- Создание кластера AKS (CLI)
- Создание кластера AKS с помощью портала
- Создание кластера AKS (шаблон ARM в шаблонах быстрого запуска Azure)
Далее показано, как подключить имеющийся кластер AKS к рабочей области.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core.compute import AksCompute, ComputeTarget
# Set the resource group that contains the AKS cluster and the cluster name
resource_group = 'myresourcegroup'
cluster_name = 'myexistingcluster'
# Attach the cluster to your workgroup. If the cluster has less than 12 virtual CPUs, use the following instead:
# attach_config = AksCompute.attach_configuration(resource_group = resource_group,
# cluster_name = cluster_name,
# cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST)
attach_config = AksCompute.attach_configuration(resource_group = resource_group,
cluster_name = cluster_name)
aks_target = ComputeTarget.attach(ws, 'myaks', attach_config)
# Wait for the attach process to complete
aks_target.wait_for_completion(show_output = True)
Дополнительные сведения о классах, методах и параметрах, используемых в этом примере, см. в следующих справочных документах.
Создание или подключение кластера AKS с завершением TLS
При создании или подключении кластера AKS можно включить завершение сеанса TLS с помощью объектов конфигурации AksCompute.provisioning_configuration() и AksCompute.attach_configuration(). Оба варианта возвращают объект конфигурации, содержащий метод enable_ssl, и для включения TLS можно использовать метод enable_ssl.
В следующем примере показано, как включить завершение TLS с автоматическим созданием и настройкой сертификата TLS с помощью сертификата Майкрософт.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core.compute import AksCompute, ComputeTarget
# Enable TLS termination when you create an AKS cluster by using provisioning_config object enable_ssl method
# Leaf domain label generates a name using the formula
# "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
# where "######" is a random series of characters
provisioning_config.enable_ssl(leaf_domain_label = "contoso")
# Enable TLS termination when you attach an AKS cluster by using attach_config object enable_ssl method
# Leaf domain label generates a name using the formula
# "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
# where "######" is a random series of characters
attach_config.enable_ssl(leaf_domain_label = "contoso")
В следующем примере показано, как включить завершение TLS с пользовательским сертификатом и пользовательским именем домена. При использовании личного домена и сертификата необходимо обновить запись DNS, чтобы указать IP-адрес конечной точки оценки, см. статью "Обновление DNS"
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core.compute import AksCompute, ComputeTarget
# Enable TLS termination with custom certificate and custom domain when creating an AKS cluster
provisioning_config.enable_ssl(ssl_cert_pem_file="cert.pem",
ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
# Enable TLS termination with custom certificate and custom domain when attaching an AKS cluster
attach_config.enable_ssl(ssl_cert_pem_file="cert.pem",
ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
Примечание.
Дополнительную информацию о том, как защитить развертывание модели в кластере AKS, см. в статье о том, как использовать TLS для защиты веб-службы через Azure Machine Learning.
Создание или подключение кластера AKS для использования внутренней подсистемы балансировки нагрузки с частным IP-адресом
При создании или подключении кластера AKS можно настроить использование внутренней подсистемы балансировки нагрузки в кластере. С помощью внутренней подсистемы балансировки нагрузки конечные точки оценки для развертываний в AKS используют частный IP-адрес в виртуальной сети. В следующих фрагментах кода показано, как настроить внутреннюю подсистему балансировки нагрузки для кластера AKS.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
Чтобы создать кластер AKS, использующий внутреннюю подсистему балансировки нагрузки, используйте параметры load_balancer_type и load_balancer_subnet:
from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute import AksCompute, ComputeTarget
# When you create an AKS cluster, you can specify Internal Load Balancer to be created with provisioning_config object
provisioning_config = AksCompute.provisioning_configuration(load_balancer_type = 'InternalLoadBalancer')
# Create the cluster
aks_target = ComputeTarget.create(workspace = ws,
name = aks_name,
provisioning_configuration = provisioning_config)
# Wait for the create process to complete
aks_target.wait_for_completion(show_output = True)
Внимание
Если кластер AKS настроен с внутренней подсистемой балансировки нагрузки, использование предоставленного корпорацией Майкрософт сертификата не поддерживается, и для включения TLS необходимо использовать пользовательский сертификат.
Примечание.
Дополнительные сведения о том, как защитить среду вывода, см. в статье "Защита среды анализа машинного обучения Azure"
Отключение кластера AKS
Чтобы отключить кластер из рабочей области, используйте один из следующих методов.
Предупреждение
Использование студии машинного обучения, пакета SDK или расширения Azure CLI для отключения кластера AKS не приводит к удалению кластера AKS. Сведения об удалении кластера см. в разделе Использование Azure CLI с AKS.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
aks_target.detach()
Устранение неполадок
Обновление кластера
Обновления компонентов службы Машинное обучение Azure, установленных в кластере службы Azure Kubernetes, необходимо проводить вручную.
Эти обновления можно применить, отключив кластер от рабочей области Машинного обучения Azure и повторно подключив его к рабочей области.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
compute_target = ComputeTarget(workspace=ws, name=clusterWorkspaceName)
compute_target.detach()
compute_target.wait_for_completion(show_output=True)
Прежде чем можно будет повторно подключить кластер к рабочей области, сначала необходимо удалить все azureml-fe связанные с ним ресурсы. Если в кластере нет активной службы, вы можете удалить связанные с azureml-fe ресурсы, используя следующий код.
kubectl delete sa azureml-fe
kubectl delete clusterrole azureml-fe-role
kubectl delete clusterrolebinding azureml-fe-binding
kubectl delete svc azureml-fe
kubectl delete svc azureml-fe-int-http
kubectl delete deploy azureml-fe
kubectl delete secret azuremlfessl
kubectl delete cm azuremlfeconfig
Если протокол TLS включен в кластере, необходимо указать TLS/SSL-сертификат и закрытый ключ при повторном подключении кластера.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
attach_config = AksCompute.attach_configuration(resource_group=resourceGroup, cluster_name=kubernetesClusterName)
# If SSL is enabled.
attach_config.enable_ssl(
ssl_cert_pem_file="cert.pem",
ssl_key_pem_file="key.pem",
ssl_cname=sslCname)
attach_config.validate_configuration()
compute_target = ComputeTarget.attach(workspace=ws, name=args.clusterWorkspaceName, attach_configuration=attach_config)
compute_target.wait_for_completion(show_output=True)
Если у вас больше нет СЕРТИФИКАТА TLS/SSL и закрытого ключа, или вы используете сертификат, созданный машинным обучением Azure, вы можете получить файлы, прежде чем отсоединить кластер, подключившись к кластеру с помощью kubectl и получения секрета azuremlfessl.
kubectl get secret/azuremlfessl -o yaml
Примечание.
Kubernetes сохраняет секретные данные в формате кодировки Base-64. Перед тем, как предоставить секреты компоненту cert.pem, необходимо декодировать компоненты key.pem и attach_config.enable_ssl из Base64.
Сбои веб-служб
Многие сбои веб-служб в Службе Azure Kubernetes можно отладить, подключившись к кластеру с помощью kubectl. Вы можете получить kubeconfig.json для кластера AKS, выполнив
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 1
az aks get-credentials -g <rg> -n <aks cluster name>
Удаление ресурсов, связанных с azureml-fe
После отсоединения кластера, если в кластере нет активной службы, удалите azureml-fe связанные ресурсы перед повторной присоединением:
kubectl delete sa azureml-fe
kubectl delete clusterrole azureml-fe-role
kubectl delete clusterrolebinding azureml-fe-binding
kubectl delete svc azureml-fe
kubectl delete svc azureml-fe-int-http
kubectl delete deploy azureml-fe
kubectl delete secret azuremlfessl
kubectl delete cm azuremlfeconfig
Подсистемы балансировки нагрузки не должны иметь общедоступных IP-адресов
При попытке создать или подключить кластер AKS может появиться сообщение об отказе запроса, так как "Load Balancers не должны иметь общедоступных IP-адресов". Это сообщение возвращается, когда администратор применил политику, которая предотвращает использование кластера AKS с общедоступным IP-адресом.
Чтобы устранить эту проблему, создайте или Подключите кластер с помощью параметров load_balancer_type и load_balancer_subnet. Дополнительные сведения см. в статье "Внутренняя подсистема балансировки нагрузки (частный IP-адрес)".