Implementar a extensão do Azure Machine Learning no Azure Kubernetes Service (AKS) ou no cluster do Kubernetes compatível com o Azure Arc

Para permitir que o seu cluster Azure Kubernetes Service (AKS) ou Kubernetes habilitado pelo Azure Arc execute trabalhos de treino ou cargas de inferência, implemente primeiro a extensão Azure Machine Learning. A extensão do Azure Machine Learning é uma extensão de cluster padrão para o AKS e uma extensão de cluster para o Kubernetes com Azure Arc ativado. Pode gerir o seu ciclo de vida usando CLI do Azure k8s-extension.

Neste artigo, você aprende sobre:

  • Pré-requisitos
  • Limitações
  • Rever as definições de configuração da extensão do Azure Machine Learning
  • Cenários de implantação da extensão do Azure Machine Learning
  • Verificar a implementação da extensão do Azure Machine Learning
  • Rever os componentes da extensão do Azure Machine Learning
  • Gerir a extensão do Azure Machine Learning

Pré-requisitos

  • Um cluster AKS em execução no Azure. Se não usou anteriormente extensões de cluster, precisa de registar o fornecedor de serviços KubernetesConfiguration.
  • Ou um cluster Kubernetes ativado com Azure Arc que esteja a funcionar. Siga as instruções em conectar o cluster Kubernetes existente ao Azure Arc.
  • Para fins de produção, o cluster Kubernetes deve ter um mínimo de 4 núcleos vCPU e 14 GB de memória. Para obter mais informações sobre detalhes de recursos e recomendações de tamanho de cluster, consulte Planejamento de recursos recomendado.
  • Um cluster em execução por trás de um servidor proxy de saída ou firewall requer configurações de rede adicionais.
  • Instale ou atualize o CLI do Azure para a versão 2.51.0 ou superior.
  • Instale ou atualize a extensão k8s-extension da CLI do Azure para a versão 1.2.3 ou superior.

Limitações

  • Azure Machine Learning não suportautilizar um principal de serviço com o AKS. O cluster do AKS deve usar uma identidade gerida em vez disso. Há suporte para a identidade gerenciada atribuída ao sistema e a identidade gerenciada atribuída pelo usuário. Para obter mais informações, consulte Usar uma identidade gerenciada no Serviço Kubernetes do Azure.
    • Ao converter o seu cluster AKS da utilização de uma entidade de serviço para identidade gerida, tem de eliminar e recriar todos os conjuntos de nós antes de instalar a extensão. Não é possível atualizar os pools de nós diretamente.
  • Azure Machine Learning não suportadesabilitar contas locais para AKS. Quando implementas o cluster AKS, as contas locais estão ativadas por defeito.
  • Se o seu cluster AKS tiver um intervalo de IP autorizado ativado para aceder ao servidor da API, tem de ativar os intervalos de IP do plano de controlo do Azure Machine Learning no cluster AKS. O plano de controlo do Azure Machine Learning é implementado em regiões emparelhadas. Sem acesso ao servidor de API, os pods de machine learning não podem ser implementados. Utilize os intervalos de IP para ambas as regiões emparelhadas quando ativar os intervalos de IP num cluster do AKS.
  • O Azure Machine Learning não suporta anexar uma subscrição cruzada de cluster AKS. Se tiver um cluster AKS numa subscrição diferente, deve primeiro ligá-lo ao Azure Arc e especificar na mesma subscrição que o seu espaço de trabalho de Machine Learning do Azure.
  • O Azure Machine Learning não garante suporte para todos os recursos do estágio de visualização no AKS. Por exemplo, Microsoft Entra pod-managed identity (obsoleto) não é suportado. Use ID de carga de trabalho Microsoft Entra em vez disso.
  • Se seguiu os passos do documento Azure Machine Learning AKS v1 para criar ou anexar o seu AKS como um cluster de inferência, use o link seguinte para limpar os recursos legados relacionados com azureml-fe antes de continuar o passo seguinte.
  • A extensão Azure Machine Learning não é atualmente suportada em arquiteturas ARM64. Utilize conjuntos de nós com a arquitetura x86_64 (amd64) para a extensão. Um pool de nós do AKS não pode misturar amd64 e SKUs de VM ARM64, por isso, escolha SKUs de VM para o pool de nós com a arquitetura suportada e não combine arquiteturas no mesmo pool de nós. Se o seu cluster tiver conjuntos de nós mistos, utilize nodeSelector para direcionar a extensão e as suas cargas de trabalho para os nós com a arquitetura suportada.

Ver as definições de configuração da extensão do Azure Machine Learning

Use o comando CLI do Azure az k8s-extension create para implementar a extensão Azure Machine Learning. O comando az k8s-extension create aceita definições de configuração sob a forma de pares key=value separados por espaços, através do parâmetro --config ou --config-protected. A tabela seguinte lista as definições de configuração disponíveis que pode especificar durante a implementação.

Nome da chave da definição de configuração Descrição Formação Inferência Formação e Inferência
enableTraining True ou False, padrão False. Deve ser definido como True para a implantação da extensão do Azure Machine Learning com treinamento de modelo do Machine Learning e suporte à pontuação em lote. N/A
enableInference True ou False, padrão False. Deve ser definido como True para a implantação da extensão do Azure Machine Learning com suporte à inferência do Machine Learning. N/A
allowInsecureConnections True ou False, padrão False. Pode ser definido como True para utilizar pontos finais HTTP de inferência para fins de desenvolvimento ou de teste. N/A Opcional Opcional
inferenceRouterServiceType loadBalancer, nodePort, ou clusterIP. Obrigatório se enableInference=True. N/A
internalLoadBalancerProvider Essa configuração só é aplicável ao cluster do Serviço Kubernetes do Azure (AKS) agora. Defina para azure permitir que o roteador de inferência use o balanceador de carga interno. N/A Opcional Opcional
sslSecret O nome do segredo do Kubernetes no azureml namespace. 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 suporte de ponto de extremidade HTTPS de inferência quando allowInsecureConnections definido como False. Para obter um exemplo de definição de YAML de sslSecret, consulte Configurar sslSecret. Utilize esta configuração ou uma combinação das definições de configuração protegidas sslCertPemFile e sslKeyPemFile. N/A Opcional Opcional
sslCname Um CNAME TLS/SSL é utilizado pelo ponto final HTTPS de inferência. Obrigatório se allowInsecureConnections=False N/A 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, neste caso, apenas um serviço de roteador de inferência será implantado. N/A Opcional Opcional
nodeSelector Por padrão, os recursos do kubernetes implantados e suas cargas de trabalho de aprendizado de máquina 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 quiser restringir a implementação da extensão e as cargas de trabalho de treino/inferência a determinados nós com os rótulos key1=value1 e key2=value2, utilize nodeSelector.key1=value1 e nodeSelector.key2=value2, respetivamente. Opcional Opcional Opcional
installNvidiaDevicePlugin True ou False, padrão False. NVIDIA Device Plugin é necessário para workloads de ML em GPUs NVIDIA. Por padrão, a implantação da extensão do Azure Machine Learning não instalará o plug-in de dispositivo NVIDIA, independentemente do cluster Kubernetes ter hardware de GPU ou não. O usuário pode especificar essa configuração para True, para instalá-la, mas certifique-se de cumprir os pré-requisitos. Opcional Opcional Opcional
installPromOp True ou False, padrão True. A extensão do Azure Machine Learning precisa do operador prometheus para gerenciar o prometheus. Defina para False para reutilizar o operador Prometheus existente. Para obter mais informações sobre como reutilizar o operador prometheus existente, consulte reutilizar o operador prometheus Opcional Opcional Opcional
installVolcano True ou False, padrão True. A extensão do Azure Machine Learning precisa do Volcano Scheduler para agendar a tarefa. Definido como False para reutilizar o agendador Volcano existente. Para obter mais informações sobre como reutilizar o agendador de vulcões existente, consulte Reutilizar o agendador de vulcões Opcional N/A Opcional
installDcgmExporter True ou False, padrão False. O Dcgm-exporter pode expor métricas de GPU para cargas de trabalho do Azure Machine Learning, que podem ser monitoradas no portal do Azure. Defina installDcgmExporter como True para instalar o dcgm-exporter. Mas se você quiser utilizar seu próprio exportador de dcgm, consulte Exportador de DCGM Opcional Opcional Opcional
Nome da chave da definição de configuração protegida Descrição Formação Inferência Formação e Inferência
sslCertPemFile, sslKeyPemFile Caminho para o certificado TLS/SSL e ficheiro de chave (codificados em PEM), necessário para a implantação da extensão do Azure Machine Learning com suporte para ponto final HTTPS de inferência, quando allowInsecureConnections estiver definido como False. Observação O arquivo PEM com senha protegida não é suportado N/A 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 implantar a extensão do Azure Machine Learning para diferentes cenários de carga de trabalho de ML:

  • Para a tarefa de treino e a carga de trabalho de inferência em lote, especifique enableTraining=True
  • Apenas para carga de trabalho de inferência, especifique enableInference=True
  • Para todos os tipos de cargas de trabalho de ML, especifique ambos enableTraining=True e enableInference=True

Se você planeja 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:

  • azureml-fe O serviço de roteador é necessário para suporte de inferência em tempo real e você precisa especificar inferenceRouterServiceType a configuração de configuração para azureml-fe. O router é implementado como a azureml-fe-v2 implantação do Kubernetes, que aparece listada em componentes de extensão. azureml-fepode ser implementado com um dos seguintes inferenceRouterServiceType:
    • Escreva loadBalancer. Expõe azureml-fe externamente usando o balanceador de carga de um provedor de nuvem. Para especificar esse valor, verifique se o cluster oferece suporte ao provisionamento do balanceador de carga. Observe que a maioria dos clusters Kubernetes locais pode não oferecer suporte ao balanceador de carga externo.
    • Escreva nodePort. Expõe azureml-fe no IP de cada nó, numa porta estática. Pode contactar azureml-fe, de fora do cluster, solicitando <NodeIP>:<NodePort>. O uso nodePort também permite que você configure sua própria solução de balanceamento de carga e terminação TLS/SSL para azureml-fe. Para mais informações sobre como configurar o seu próprio ingress, consulte Integrar outro controlador de ingress com a extensão do Azure Machine Learning através de HTTP ou HTTPS.
    • Escreva clusterIP. Expõe azureml-fe em um IP interno do cluster e torna azureml-fe acessível apenas de dentro do cluster. Para azureml-fe atender às solicitações de inferência que vêm fora do cluster, é necessário configurar sua própria solução de balanceamento de carga e terminação TLS/SSL para azureml-fe. Para mais informações sobre como configurar o seu próprio ingress, consulte Integrar outro controlador de ingress com a extensão do Azure Machine Learning através de HTTP ou HTTPS.
  • Para garantir a alta disponibilidade do serviço de roteamento, a implantação da azureml-fe 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.
  • Deve também considerar utilizar HTTPS para restringir o acesso aos pontos de extremidade dos modelos e proteger os dados enviados pelos clientes. Para este fim, precisa de especificar a definição de configuração sslSecret ou a combinação das definições protegidas por configuração sslKeyPemFile e sslCertPemFile.
  • Por predefinição, a implementação da extensão do Azure Machine Learning pressupõe definições de configuração para suporte de HTTPS. Para fins de desenvolvimento ou teste, o suporte de HTTP é disponibilizado de forma conveniente através da definição de configuração allowInsecureConnections=True.

Implementação da extensão do Azure Machine Learning – exemplos da CLI e portal do Azure

Para implementar a extensão Azure Machine Learning usando CLI, utilize o comando az k8s-extension create e forneça os valores para os parâmetros obrigatórios.

A lista seguinte descreve quatro cenários típicos de implementação de extensões. Para implementar a extensão para o seu uso em produção, leia cuidadosamente a lista completa de definições de configuração.

  • Usa o cluster AKS em Azure para uma prova rápida de conceito para executar todo o tipo de cargas de trabalho de ML, por exemplo, para executar trabalhos de treino ou para implementar modelos como endpoints online/batch

    Para a implementação da extensão do Azure Machine Learning num 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 Kubernetes habilitado com Azure Arc, fora do Azure, apenas para executar trabalhos de treino, como uma prova rápida de conceito

    Para a implementação da extensão do Azure Machine Learning num cluster do Kubernetes com Azure Arc ativado, 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
    
  • Ative um cluster do AKS no Azure para cargas de trabalho de treino e inferência em produção Para a implementaçã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 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
    
  • Ative um cluster Kubernetes com Azure Arc em qualquer lugar para treino em produção e carga de inferência usando GPUs NVIDIA

    Para a implementação da extensão do Azure Machine Learning num cluster do Kubernetes com Azure Arc ativado, especifique o valor connectedClusters para o parâmetro --cluster-type. Supondo que seu cluster tenha mais de três nós, você usa 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 implementação da extensão do Azure Machine Learning

  1. Execute o comando CLI aplicável para verificar os detalhes da extensão 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 compatível com 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 indicar Succeeded, execute o seguinte comando na sua máquina, com o ficheiro kubeconfig a apontar para o seu cluster, para verificar se todos os pods no namespace azureml estão no estado Running:

     kubectl get pods -n azureml
    

Rever o componente de extensão do Azure Machine Learning

Quando a implementação da extensão Azure Machine Learning terminar, use kubectl get deployments -n azureml para ver a lista de recursos criados no cluster. A lista geralmente consiste num subconjunto dos seguintes recursos, dependendo das definições de configuração que especificar.

Nome do recurso Tipo de recurso Formação Inferência Formação e Inferência Descrição Comunicação com a nuvem
servidor de retransmissão Implantação do Kubernetes A implementação cria o servidor de retransmissão apenas para clusters do Kubernetes ativados para o Azure Arc e não em clusters do AKS. O servidor de retransmissão funciona com o Azure Relay para se comunicar com os serviços de nuvem. Receber a solicitação de criação de emprego, implantação de modelo a partir de serviço em nuvem; Sincronize o status do trabalho com o serviço de nuvem.
gateway Implantação do Kubernetes O gateway é usado para comunicar e enviar dados de um lado para o outro. Enviar nodos e informações sobre os recursos do cluster para serviços na nuvem.
Operador-AML Implantação do Kubernetes N/A Gerencie o ciclo de vida dos trabalhos de treinamento. Troca de token com o serviço de token de nuvem para autenticação e autorização do Registro de Contêiner do Azure.
métricas-controlador-gerente Implantação do Kubernetes Gerenciar a configuração do Prometheus N/A
{EXTENSION-NAME}-kube-state-metrics Implantação do Kubernetes Exporte as métricas relacionadas ao cluster para Prometheus. N/A
{EXTENSION-NAME}-prometheus-operator Implantação do Kubernetes Opcional Opcional Opcional Disponibiliza a implementação e gestão nativas no Kubernetes do Prometheus e de componentes de monitorização relacionados. N/A
amlarc-identidade-controlador Implantação do Kubernetes N/A Solicite e renove o token do Azure Blob/Azure Container Registry através de uma identidade gerida. Troca de token 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 para implantação de inferência/modelo.
amlarc-identity-proxy Implantação do Kubernetes N/A Solicite e renove o token do Azure Blob/Azure Container Registry através de uma identidade gerida. Troca de token 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 para implantação de inferência/modelo.
AzureML-FE-V2 Implantação do Kubernetes N/A O componente de front-end que encaminha os pedidos de inferência recebidos para os serviços implementados. Envie logs de serviço para o Blob do Azure.
inferência-operador-controlador-gerente Implantação do Kubernetes N/A Gerencie o ciclo de vida dos pontos de extremidade de inferência. N/A
Vulcão-Admissão Implantação do Kubernetes Opcional N/A Opcional Gancho web de admissão do Volcano. N/A
Controladores-Vulcões Implantação do Kubernetes Opcional N/A Opcional Gerencie o ciclo de vida dos pods de trabalho de treinamento do Azure Machine Learning. N/A
Volcano-Scheduler Implantação do Kubernetes Opcional N/A Opcional Usado para executar o agendamento de tarefas em cluster. N/A
fluent-bit Daemonset do Kubernetes Reúna o registo do sistema dos componentes. Carregue o registo do sistema dos componentes para a nuvem.
{EXTENSION-NAME}-dcgm-exporter Daemonset do Kubernetes Opcional Opcional Opcional dcgm-exporter expõe métricas de GPU para Prometheus. N/A
nvidia-device-plugin-daemonset Daemonset do Kubernetes Opcional Opcional Opcional nvidia-device-plugin-daemonset expõe GPUs em cada nó do seu cluster N/A
prometheus-prom-prometheus Kubernetes StatefulSet 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 Azure Relay está no mesmo grupo de recursos que o recurso do cluster Arc. É usado para comunicar com o cluster Kubernetes. A sua modificação interrompe os destinos de computação anexados.
  • Por defeito, os recursos de implementação são distribuídos aleatoriamente para um ou mais nós do cluster, e os recursos do conjunto de daemons são distribuídos para todos os nós. Para restringir a implementação da extensão a nós específicos, use a definição descrita nodeSelector na tabela de definições de configuração.

Nota

  • {NOME-EXTENSÃO}: é o nome da extensão que especificas usando o az k8s-extension create --name comando CLI.

Gerir a extensão do Azure Machine Learning

Atualize, liste, mostre e elimine uma extensão do Azure Machine Learning.

Próximos passos