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

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 e enableInference=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ção inferenceRouterServiceType para azureml-fe. azureml-fe pode ser implantado com um dos seguintes: inferenceRouterServiceType:
    • Digite LoadBalancer. Expõe azureml-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õe azureml-fe no IP de cada nó em uma porta estática. Você poderá contatar azureml-fe, de fora do cluster, solicitando <NodeIP>:<NodePort>. Usar NodePort também permitirá que você configure a própria solução de balanceamento de carga e a terminação TLS/SSL para azureml-fe.
    • Digite ClusterIP. Expõe azureml-fe em um IP interno do cluster e torna azureml-fe acessível apenas de dentro do cluster. Para que azureml-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 para azureml-fe.
  • 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 de azureml-fe para clusters com três nós ou mais. Se o cluster tiver menos de 3 nós, defina inferenceRouterHA=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 protegidas sslKeyPemFile e sslCertPemFile.
  • 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

  1. 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>
    
  2. Na resposta, procure por "name" e "provisioningState": "Succeeded". Observe que poderá mostrar "provisioningState": "Pending" nos primeiros minutos.

  3. 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.

Próximas etapas