Implantar a extensão do Azure Machine Learning no cluster do AKS ou do Kubernetes para Arc
Para permitir que o cluster do AKS ou do Kubernetes para Arc execute trabalhos de treinamento ou cargas de trabalho de inferência, primeiro, você precisa implantar a extensão do Azure Machine Learning em um cluster do AKS ou do Kubernetes para Arc. A extensão do Azure Machine Learning é criada na extensão de cluster do AKS e na extensão de cluster ou no Kubernetes para Arc e tem um ciclo de vida que pode ser facilmente gerenciado com a k8s-extension da CLI do Azure.
Neste artigo, você aprenderá o seguinte:
- Pré-requisitos
- Limitações
- Revisar as configurações de extensão do Azure Machine Learning
- Cenários de implantação da extensão do Azure Machine Learning
- Verificar a implantação da extensão do Azure Machine Learning
- Revisar os componentes da extensão do Azure Machine Learning
- Gerenciar a extensão do Azure Machine Learning
Pré-requisitos
- Um cluster do AKS em execução no Azure. Se você não tiver usado extensões de cluster anteriormente, precisará registrar o provedor de serviços KubernetesConfiguration.
- Ou um cluster do Kubernetes do Arc está em execução. Siga as instruções em conectar o cluster do Kubernetes existente ao Azure Arc.
- Se o cluster for um cluster de serviço do Azure RedHat OpenShift (ARO) ou um cluster do OpenShift Container Platform (OCP), você deverá atender a outras etapas de pré-requisito, conforme documentado no artigo Referência para configuração de cluster do Kubernetes.
- Para fins de produção, o cluster do Kubernetes deve ter um mínimo de 4 núcleos de vCPU e 14 GB de memória. Para obter mais informações sobre detalhes do recurso e recomendações de tamanho do cluster, consulte Planejamento de recursos recomendado.
- O cluster em execução por trás de um servidor proxy de saída ou firewall precisa de configurações adicionais de rede.
- Instale ou atualize a CLI do Azure para a versão 2.24.0 ou posterior.
- Instale ou atualize a extensão da CLI do Azure
k8s-extension
para a versão 1.2.3 ou posterior.
Limitações
- Não há suporte para o uso de uma entidade de serviço com o AKS no Azure Machine Learning. Em vez disso, o cluster do AKS deve usar uma identidade gerenciada. Há suporte para identidade gerenciada atribuída pelo sistema e identidade gerenciada atribuída pelo usuário. Para obter mais informações, confira Usar identidade gerenciada no Serviço de Kubernetes do Azure.
- Quando a entidade de serviço usada pelo cluster do AKS é convertida para usar a Identidade Gerenciada, antes de instalar a extensão, todos os pools de nós precisam ser excluídos e recriados, em vez de atualizados diretamente.
- Não há suporte para desabilitar contas locais para o AKS pelo Azure Machine Learning. Quando o cluster AKS é implantado, as contas locais são habilitadas por padrão.
- Se o seu cluster do AKS tiver um Intervalo de IP autorizado habilitado para acessar o servidor da API, habilite os intervalos de IP do painel de controle do Azure Machine Learning para o cluster do AKS. O painel de controle do Azure Machine Learning é implantado em regiões emparelhadas. Sem acesso ao servidor da API, os pods de aprendizado de máquina não podem ser implantado. Use os intervalos de IP para ambas regiões emparelhadas ao habilitar os intervalos de IP em um cluster do AKS.
- O Azure Machine Learning não oferece suporte à anexação de uma assinatura cruzada de cluster do AKS. Se você tiver um cluster do AKS em uma assinatura diferente, primeiro conecte-o ao Azure-Arc e especifique na mesma assinatura que o workspace do Azure Machine Learning.
- O Azure Machine Learning não garante suporte para todos os recursos de estágio de visualização no AKS. Por exemplo, não há suporte para a Identidade do pod do Microsoft Entra.
- Se você seguiu as etapas do Documento do AKS v1 do Azure Machine Learning para criar ou anexar seu AKS como cluster de inferência, use o link a seguir para limpar os recursos relacionados ao azureml-fe herdado antes de continuar a próxima etapa.
Revisar as configurações de extensão do Azure Machine Learning
Você pode usar o comando k8s-extension create
da CLI do Azure Machine Learning para implantar a extensão do Azure Machine Learning. A CLI k8s-extension create
permite que você especifique um conjunto de configurações no formato key=value
usando os parâmetros --config
ou --config-protected
. Veja a seguir a lista de definições de configuração disponíveis a serem especificadas durante a implantação da extensão do Azure Machine Learning.
Nome da chave de configuração | Descrição | Treinamento | Inferência | Treinamento e inferência |
---|---|---|---|---|
enableTraining |
True ou False , padrão False . Precisa ser definido como True para a implantação da extensão do Azure Machine Learning com suporte ao treinamento do modelo de machine learning e à pontuação em lote. |
✓ | N/D | ✓ |
enableInference |
True ou False , padrão False . Precisa ser definido como True para a implantação da extensão do Azure Machine Learning com suporte à inferência de machine learning. |
N/D | ✓ | ✓ |
allowInsecureConnections |
True ou False , padrão False . Pode ser definido como True para usar pontos de extremidade HTTP de inferência para fins de desenvolvimento ou teste. |
N/D | Opcional | Opcional |
inferenceRouterServiceType |
loadBalancer , nodePort ou clusterIP . Obrigatório se enableInference=True . |
N/D | ✓ | ✓ |
internalLoadBalancerProvider |
Essa configuração agora é aplicável somente ao cluster do AKS (Azure Kubernetes Service). Definido como azure para permitir que o roteador de inferência use o balanceador de carga interno. |
N/D | Opcional | Opcional |
sslSecret |
O nome do segredo do Kubernetes no namespace azureml . Essa configuração é usada para armazenar cert.pem (certificado TLS/SSL codificado em PEM) e key.pem (chave TLS/SSL codificada em PEM), que são necessários para o suporte ao ponto de extremidade HTTPS de inferência quando allowInsecureConnections é definido como False . Para obter uma definição YAML de exemplo de sslSecret , consulte Configurar sslSecret. Use essa configuração ou combinação de definições de configuração protegidas sslCertPemFile e sslKeyPemFile . |
N/D | Opcional | Opcional |
sslCname |
Um CNAME TLS/SSL é usado pelo ponto de extremidade HTTPS de inferência. Obrigatório se allowInsecureConnections=False |
N/D | Opcional | Opcional |
inferenceRouterHA |
True ou False , padrão True . Por padrão, a extensão do Azure Machine Learning implanta três réplicas de roteador de inferência para alta disponibilidade, o que requer pelo menos três nós de trabalho em um cluster. Definido como False , se o cluster tiver menos de três nós de trabalho, nesse caso, apenas um serviço de roteador de inferência será implantado. |
N/D | Opcional | Opcional |
nodeSelector |
Por padrão, os recursos do Kubernetes e as cargas de trabalho de machine learning são implantados aleatoriamente em um ou mais nós do cluster, e os recursos do DaemonSet são implantados em TODOS os nós. Se você quiser restringir a implantação de extensão e as cargas de trabalho de treinamento e inferência a nós específicos com o rótulo key1=value1 e key2=value2 , use nodeSelector.key1=value1 , nodeSelector.key2=value2 respectivamente. |
Opcional | Opcional | Opcional |
installNvidiaDevicePlugin |
True ou False , padrão False . O plug-in do dispositivo NVIDIA é necessário para cargas de trabalho de ML no hardware da GPU NVIDIA. Por padrão, a implantação da extensão do Azure Machine Learning não instalará o plug-in do dispositivo NVIDIA, independentemente de o cluster do Kubernetes ter ou não o hardware da GPU. O usuário pode especificar essa configuração para True , para instalá-la, mas você deve atender aos pré-requisitos. |
Opcional | Opcional | Opcional |
installPromOp |
True ou False , padrão True . A extensão do Azure Machine Learning precisa ter o operador do Prometheus para gerenciar o Prometheus. Defina como False para reutilizar o operador Prometheus existente. Para obter mais informações sobre como reusar o Operador Prometheus existente, consulte reusar o Operador Prometheus |
Opcional | Opcional | Opcional |
installVolcano |
True ou False , padrão True . A extensão do Azure Machine Learning precisa ter o agendador do Volcano para agendar o trabalho. Defina como False para reutilizar o agendador volcano existente. Para obter mais informações sobre como reusar o Agendador Volcano existente, consulte reusar o Agendador Volcano |
Opcional | N/D | Opcional |
installDcgmExporter |
True ou False , padrão False . O dcgm-exporter pode expor as métricas de GPU para as cargas de trabalho do Azure Machine Learning, que podem ser monitoradas no portal do Azure. Defina installDcgmExporter como True para instalar o exportador de dcgm. Mas se você quiser usar seu próprio exportador de dcgm, consulte Exportador de DCGM |
Opcional | Opcional | Opcional |
Nome da chave de configuração protegida por configuração | Descrição | Treinamento | Inferência | Treinamento e inferência |
---|---|---|---|---|
sslCertPemFile , sslKeyPemFile |
Caminho para o certificado TLS/SSL e o arquivo de chave (codificado por PEM), necessário para a implantação da extensão do Azure Machine Learning com suporte para ponto de extremidade HTTPS de inferência, quando allowInsecureConnections estiver definido como False. Nota Não há suporte para o arquivo PEM com a frase secreta protegida |
N/D | Opcional | Opcional |
Como você pode ver na tabela de definições de configuração, as combinações de diferentes definições de configuração permitem que você implante a extensão do Azure Machine Learning nos diferentes cenários de carga de trabalho de ML:
- Para trabalho de treinamento e carga de trabalho de inferência em lote, especifique
enableTraining=True
- Para carga de trabalho de inferência apenas, especifique
enableInference=True
- Para todos os tipos de carga de trabalho de ML, especifique ambos:
enableTraining=True
eenableInference=True
Se você pretende implantar a extensão do Azure Machine Learning para carga de trabalho de inferência em tempo real e deseja especificar enableInference=True
, preste atenção às seguintes definições de configuração relacionadas à carga de trabalho de inferência em tempo real:
- O serviço de roteador
azureml-fe
é necessário para dar suporte à inferência em tempo real e você precisa especificar a configuraçãoinferenceRouterServiceType
paraazureml-fe
.azureml-fe
pode ser implantado com um dos seguintes:inferenceRouterServiceType
:- Digite
LoadBalancer
. Expõeazureml-fe
externamente usando o balanceador de carga de um provedor de nuvem. Para especificar esse valor, verifique se o cluster dá suporte para provisionamento do balanceador de carga. Observe que a maioria dos clusters do Kubernetes locais pode não dar suporte ao balanceador de carga externo. - Digite
NodePort
. Expõeazureml-fe
no IP de cada nó em uma porta estática. Você poderá contatarazureml-fe
, de fora do cluster, solicitando<NodeIP>:<NodePort>
. UsarNodePort
também permitirá que você configure a própria solução de balanceamento de carga e a terminação TLS/SSL paraazureml-fe
. - Digite
ClusterIP
. Expõeazureml-fe
em um IP interno do cluster e tornaazureml-fe
acessível apenas de dentro do cluster. Para queazureml-fe
atenda a solicitações de inferência fora do cluster, é necessário configurar a própria solução de balanceamento de carga e a terminação TLS/SSL paraazureml-fe
.
- Digite
- Para garantir a alta disponibilidade do serviço de roteamento do
azureml-fe
, a implantação da extensão do Azure Machine Learning por padrão cria três réplicas deazureml-fe
para clusters com três nós ou mais. Se o cluster tiver menos de 3 nós, definainferenceRouterHA=False
. - Considere usar HTTPS para restringir o acesso aos pontos de extremidade do modelo e proteger os dados enviados pelos clientes. Para isso, é necessário especificar a definição de configuração
sslSecret
ou a combinação de configurações protegidassslKeyPemFile
esslCertPemFile
. - Por padrão, a implantação da extensão do Azure Machine Learning espera definições de configuração para o suporte a HTTPS. Para fins de desenvolvimento ou de teste, o suporte HTTP é fornecido de forma conveniente por meio da definição de configuração
allowInsecureConnections=True
.
Implantação da extensão do Azure Machine Learning – Exemplos da CLI e portal do Azure
Para implantar a extensão do Azure Machine Learning com a CLI, use o comando az k8s-extension create
transmitindo valores para os parâmetros obrigatórios.
Listamos quatro cenários típicos de implantação de extensão para referência. Para implantar a extensão para uso em produção, leia com atenção a lista completa de configurações.
Usar o cluster do AKS no Azure para uma prova rápida de conceito para executar todos os tipos de carga de trabalho de ML, ou seja, para executar trabalhos de treinamento ou implantar modelos como pontos de extremidade online/em lotes
Para a implantação de extensão do Azure Machine Learning no cluster do AKS, especifique o valor
managedClusters
para o parâmetro--cluster-type
. Execute o seguinte comando da CLI do Azure para implantar a extensão do Azure Machine Learning: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
Usar o cluster do Kubernetes do Arc fora do Azure para uma prova rápida de conceito, com o objetivo de executar apenas trabalhos de treinamento
Para a implantação da extensão do Azure Machine Learning no cluster do Kubernetes para Arc, especifique o valor
connectedClusters
para o parâmetro--cluster-type
. Execute o seguinte comando da CLI do Azure para implantar a extensão do Azure Machine Learning: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
Habilitar um cluster do AKS no Azure para a carga de trabalho de treinamento e de inferência de produção Para a implantação da extensão do Azure Machine Learning no AKS, especifique o valor
managedClusters
para o parâmetro--cluster-type
. Supondo que seu cluster tenha mais de três nós e que você use um balanceador de carga público do Azure e HTTPS para suporte à carga de trabalho de inferência. Execute o seguinte comando da CLI do Azure para implantar a extensão do Azure Machine Learning: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
Habilitar um cluster do Kubernetes do Arc em qualquer lugar para treinamento de produção e carga de trabalho de inferência usando GPUs NVIDIA
Para a implantação da extensão do Azure Machine Learning no cluster do Kubernetes para Arc, especifique o valor
connectedClusters
para o parâmetro--cluster-type
. Supondo que seu cluster tenha mais de três nós, que você use um tipo de serviço NodePort e HTTPS para suporte à carga de trabalho de inferência, execute o seguinte comando da CLI do Azure para implantar a extensão do Azure Machine Learning: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
Verificar a implantação da extensão do Azure Machine Learning
Execute o seguinte comando da CLI para verificar os detalhes da extensão do Azure Machine Learning:
az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
Na resposta, procure por "name" e "provisioningState": "Succeeded". Observe que poderá mostrar "provisioningState": "Pending" nos primeiros minutos.
Se o provisioningState mostrar Succeeded, execute o seguinte comando no computador com o arquivo kubeconfig apontado para o cluster para verificar se todos os pods no namespace "azureml" estão no estado 'Running':
kubectl get pods -n azureml
Revisar o componente da extensão do Azure Machine Learning
Após a conclusão da implantação da extensão do Azure Machine Learning, você poderá usar kubectl get deployments -n azureml
para ver a lista de recursos criados no cluster. Geralmente, ele consiste em um subconjunto dos recursos a seguir por configuração especificada.
Nome do recurso | Tipo de recurso | Treinamento | Inferência | Treinamento e inferência | Descrição | Comunicação com a nuvem |
---|---|---|---|---|---|---|
relayserver | Implantação do Kubernetes | ✓ | ✓ | ✓ | O Relayserver só é criado para o cluster do Kubernetes do Arc e não no cluster do AKS. O servidor de retransmissão funciona com a Retransmissão do Azure para se comunicar com os serviços de nuvem. | Receba a solicitação de criação de trabalho, implantação de modelo do serviço de nuvem; sincronize o status do trabalho com o serviço de nuvem. |
gateway | Implantação do Kubernetes | ✓ | ✓ | ✓ | O gateway é usado para se comunicar e enviar dados bidirecionalmente. | Envie nós e informações de recursos de cluster para serviços de nuvem. |
aml-operator | Implantação do Kubernetes | ✓ | N/D | ✓ | Gerencie o ciclo de vida dos trabalhos de treinamento. | Troca de tokens com o serviço de token de nuvem para autenticação e autorização do Registro de Contêiner do Azure. |
metrics-controller-manager | Implantação do Kubernetes | ✓ | ✓ | ✓ | Gerencie a configuração do Prometheus | N/D |
{EXTENSION-NAME}-kube-state-metrics | Implantação do Kubernetes | ✓ | ✓ | ✓ | Exporte as métricas relacionadas ao cluster para o Prometheus. | N/D |
{EXTENSION-NAME}-prometheus-operator | Implantação do Kubernetes | Opcional | Opcional | Opcional | Forneça implantação e gerenciamento nativos do Kubernetes de Prometheus e componentes de monitoramento relacionados. | N/D |
amlarc-identity-controller | Implantação do Kubernetes | N/D | ✓ | ✓ | Solicite e renova o token do Registro de Contêiner do Azure/Blobs do Azure por meio de identidade gerenciada. | Troca de tokens com o serviço de token de nuvem para autenticação e autorização do Registro de Contêiner do Azure e do Blob do Azure usado pela implantação de modelo/inferência. |
amlarc-identity-proxy | Implantação do Kubernetes | N/D | ✓ | ✓ | Solicite e renova o token do Registro de Contêiner do Azure/Blobs do Azure por meio de identidade gerenciada. | Troca de tokens com o serviço de token de nuvem para autenticação e autorização do Registro de Contêiner do Azure e do Blob do Azure usado pela implantação de modelo/inferência. |
azureml-fe-v2 | Implantação do Kubernetes | N/D | ✓ | ✓ | O componente de front-end que roteia as solicitações de inferência de entrada para serviços implantados. | Envie logs do serviço para o Blob do Azure. |
inference-operator-controller-manager | Implantação do Kubernetes | N/D | ✓ | ✓ | Gerencie o ciclo de vida dos pontos de extremidade de inferência. | N/D |
volcano-admission | Implantação do Kubernetes | Opcional | N/D | Opcional | Webhook de admissão volcano. | N/D |
volcano-controllers | Implantação do Kubernetes | Opcional | N/D | Opcional | Gerencie o ciclo de vida dos pods de trabalho de treinamento do Azure Machine Learning. | N/D |
volcano-scheduler | Implantação do Kubernetes | Opcional | N/D | Opcional | Usado para realizar o agendamento de trabalhos no cluster. | N/D |
fluent-bit | DaemonSet do Kubernetes | ✓ | ✓ | ✓ | Reúna o log do sistema dos componentes. | Carregue o log do sistema dos componentes para a nuvem. |
{NOME-DA-EXTENSÃO}-dcgm-exporter | DaemonSet do Kubernetes | Opcional | Opcional | Opcional | O dcgm-export expõe as métricas de GPU para o Prometheus. | N/D |
nvidia-device-plugin-daemonset | DaemonSet do Kubernetes | Opcional | Opcional | Opcional | O nvidia-device-plugin-daemonset expõe as GPUs de cada nó do cluster | N/D |
prometheus-prom-prometheus | Kubernetes com estado | ✓ | ✓ | ✓ | Reúna e envie métricas de trabalho para a nuvem. | Envie métricas de trabalho como utilização de CPU/gpu/memória para a nuvem. |
Importante
- O recurso de Retransmissão do Azure fica no mesmo grupo de recursos do recurso de cluster do Arc. Ele é usado para a comunicação com o cluster do Kubernetes, e a modificação dele interromperá os destinos de computação anexados.
- Por padrão, os recursos de implantação do Kubernetes são implantados aleatoriamente em um ou mais nós do cluster, e os recursos do daemonset são implantados em TODOS os nós. Se você quiser restringir a implantação da extensão a nós específicos, use a definição de configuração
nodeSelector
descrita na tabela de definições de configuração.
Observação
- {EXTENSION-NAME}: é o nome da extensão especificado com o comando da CLI
az k8s-extension create --name
.
Gerenciar a extensão do Azure Machine Learning
Atualize, liste, mostre e exclua uma extensão do Azure Machine Learning.
- Para o cluster do AKS sem o Azure Arc conectado, confira Implantar e gerenciar extensões de cluster.
- Para o Kubernetes habilitado para o Azure Arc, consulte Implantar e gerenciar extensões de cluster do Kubernetes habilitado para o Azure Arc.