Implantar a extensão do Azure Machine Learning no AKS (Serviço de Kubernetes do Azure) ou em um cluster Kubernetes habilitado para Azure Arc

Para habilitar seu cluster do AKS (Serviço de Kubernetes do Azure) ou do Kubernetes habilitado para Azure Arc a executar trabalhos de treinamento ou cargas de trabalho de inferência, implante primeiro a extensão do Azure Machine Learning. A extensão do Azure Machine Learning é uma extensão de cluster padrão para AKS e uma extensão de cluster para Kubernetes habilitado para Azure Arc. Você pode gerenciar seu ciclo de vida usando CLI do Azure k8s-extension.

Neste artigo, você aprenderá sobre:

  • 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

  • O Azure Machine Learning não dá suporteao uso de uma entidade de serviço com o AKS. 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.
    • Ao converter o cluster do AKS de uso de uma entidade de serviço para o uso da identidade gerenciada, você precisa excluir e recriar todos os pools de nós antes de instalar a extensão. Você não pode atualizar diretamente os pools de nós.
  • Azure Machine Learning não oferece suporteà desabilitação de contas locais para AKS. Quando você implanta o cluster do AKS, as contas locais são habilitadas por padrão.
  • Se o cluster do AKS tiver um intervalo de IP autorizado habilitado para acesso ao servidor de API, você deverá habilitar os intervalos de IP do plano 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-o na mesma assinatura que seu 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, a identidade gerenciada por pod do Microsoft Entra (preterida) não é compatível. Use ID de carga de trabalho do Microsoft Entra em vez disso.
  • Se você seguiu as etapas no documento Azure Machine Learning AKS v1 para criar ou anexar seu AKS como um cluster de inferência, use o link a seguir para limpar os recursos herdados relacionados ao azureml-fe antes de prosseguir para a próxima etapa.
  • No momento, não há suporte para a extensão Azure Machine Learning em arquiteturas ARM64. Use pools de nós com a arquitetura x86_64 (amd64) para a extensão. Um pool de nós do AKS não pode misturar SKUs de VM amd64 e ARM64, portanto, escolha SKUs de VM do pool de nós com a arquitetura compatível e não combine arquiteturas no mesmo pool de nós. Se o cluster tiver pools de nós mistos, use nodeSelector para direcionar a extensão e suas cargas de trabalho para os nós com arquitetura compatível.

Revisar as configurações de extensão do Azure Machine Learning

Use o comando CLI do Azure az k8s-extension create para implantar a extensão Azure Machine Learning. O comando az k8s-extension create aceita configurações como pares key=value separados por espaços por meio do parâmetro --config ou --config-protected. A tabela a seguir lista as configurações disponíveis que você pode especificar durante a implantação.

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 (Serviço de Kubernetes do Azure). 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. O roteador é implantado como a implantação do Kubernetes azureml-fe-v2, que você vê listada nos componentes de extensão. 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ê pode 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. Para obter mais informações sobre como configurar seu próprio ingress, consulte Integrar outro controlador de ingress à extensão do Azure Machine Learning via HTTP ou HTTPS.
    • 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 obter mais informações sobre como configurar seu próprio ingress, consulte Integrar outro controlador de ingress à extensão do Azure Machine Learning via HTTP ou HTTPS.
  • 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 essa finalidade, você precisa 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 Azure Machine Learning usando a CLI, use o comando az k8s-extension create e forneça valores para os parâmetros obrigatórios.

A lista a seguir descreve quatro cenários típicos de implantação de extensão. Para implantar a extensão para o uso de produção, leia cuidadosamente 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, por exemplo, para executar trabalhos de treinamento ou implantar modelos como pontos de extremidade online/em lote

    Para a implantação da extensão do Azure Machine Learning no cluster 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
    
  • Use um cluster do Kubernetes habilitado pelo Azure Arc fora do Azure para realizar uma prova de conceito rápida, executando apenas tarefas de treinamento

    Para a implantação da extensão do Azure Machine Learning em um cluster do Azure Arc-enabled Kubernetes, 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
    
  • Habilite um cluster do AKS no Azure para cargas de trabalho de treinamento e 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 Azure Arc habilitado para Kubernetes 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 em um cluster do Azure Arc-enabled Kubernetes, 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 comando da CLI aplicável para verificar os detalhes da extensão do Azure Machine Learning:

    AKS

    az k8s-extension show --name <extension-name> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <resource-group>
    

    Kubernetes habilitado para Azure Arc

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. Na resposta, procure "name" e "provisioningState": "Succeeded". Pode aparecer "provisioningState": "Pending" nos primeiros minutos.

  3. Se o provisioningState mostrar Succeeded, execute o seguinte comando em seu computador com o arquivo kubeconfig apontado para o seu 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

Quando a implantação da extensão do Azure Machine Learning for concluída, use kubectl get deployments -n azureml para consultar a lista de recursos criados no cluster. A lista geralmente consiste em um subconjunto dos recursos a seguir, dependendo das configurações especificadas.

Nome do recurso Tipo de recurso Treinamento Inferência Treinamento e inferência Descrição Comunicação com a nuvem
servidor de retransmissão Implantação do Kubernetes A implantação só cria o servidor de retransmissão para clusters do Kubernetes habilitados para o Azure Arc, e não em clusters 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
controladores de vulcões 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-exporter 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 Retransmissão do Azure está no mesmo grupo de recursos que o recurso de cluster arc. Ele é usado para se comunicar com o cluster do Kubernetes. A modificação interrompe destinos de computação anexados.
  • Por padrão, os recursos de implantação 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. Para restringir a implantação da extensão a nós específicos, use a configuração nodeSelector descrita na tabela de configurações.

Observação

  • {EXTENSION-NAME}: é o nome da extensão que você especifica usando o comando da az k8s-extension create --name CLI.

Gerenciar a extensão do Azure Machine Learning

Atualize, liste, mostre e exclua uma extensão de Azure Machine Learning.

Próximas etapas