Implementar a extensão do Azure Machine Learning no cluster do Kubernetes

Para permitir que seu cluster AKS ou Arc Kubernetes execute trabalhos de treinamento ou cargas de trabalho de inferência, você deve primeiro implantar a extensão do Azure Machine Learning em um cluster AKS ou Arc Kubernetes. A extensão do Azure Machine Learning é criada na extensão de cluster para AKS e extensão de cluster ou Arc Kubernetes, e seu ciclo de vida pode ser gerenciado facilmente com a extensão k8s da CLI do Azure.

Neste artigo, você pode aprender:

  • 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
  • Ver o componente da extensão do Azure Machine Learning
  • Extensão da CLI do Azure Machine Learning

Pré-requisitos

  • Um cluster 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 Arc Kubernetes está instalado e em execução. Siga as instruções em conectar o cluster Kubernetes existente ao Azure Arc.
    • Se o cluster for um cluster do Azure RedHat OpenShift Service (ARO) ou um cluster do OpenShift Container Platform (OCP), você deverá satisfazer outras etapas de pré-requisito, conforme documentado no artigo Referência para configurar o cluster do Kubernetes.
  • 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.
  • O cluster executado atrás de um servidor proxy de saída ou firewall precisa de configurações de rede extras.
  • Instale ou atualize a CLI do Azure para a versão 2.24.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

Ver as definições de configuração da 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 especificar um conjunto de definições de configuração no key=value formato usando --config o parâmetro OR --config-protected . A seguir está 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 definição de configuração Description 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 configurado para True usar pontos de extremidade HTTP de inferência para fins de desenvolvimento ou 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. Use esta configuração ou uma combinação de sslCertPemFilesslKeyPemFile configurações protegidas. N/A Opcional Opcional
sslCname Um TLS/SSL CNAME é usado pelo ponto de extremidade 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 você quiser restringir a implantação de extensão e suas cargas de trabalho de treinamento/inferência a nós específicos com rótulo key1=value1 e key2=value2, use nodeSelector.key1=value1, nodeSelector.key2=value2 correspondentemente. Opcional Opcional Opcional
installNvidiaDevicePlugin True ou False, padrão False. O plug-in de dispositivo NVIDIA é necessário para cargas de trabalho de ML em hardware de GPU 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 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 de um agendador de vulcão para agendar o trabalho. Definido para False reutilizar o agendador de vulcão 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 para True 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 de configuração protegida de configuração Description Formação Inferência Formação e Inferência
sslCertPemFile, sslKeyPemFile Caminho para o certificado TLS/SSL e arquivo de chave (codificado por PEM), necessário para a implantação da extensão do Azure Machine Learning com suporte de ponto de extremidade HTTPS de inferência, quando allowInsecureConnections 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 trabalho de treinamento e 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 carga de trabalho de ML, especifique e enableTraining=TrueenableInference=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. azureml-fepode ser implantado 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 o IP de cada nó em uma porta estática. Você poderá entrar em contato com 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.
    • 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 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.
  • Você também deseja considerar o uso de HTTPS para restringir o acesso aos pontos de extremidade do modelo e proteger os dados enviados pelos clientes. Para isso, você precisaria especificar a sslSecret configuração de configuração ou a combinação de configurações protegidas por sslKeyPemFilesslCertPemFile configuração.
  • Por padrão, a implantação da extensão do Azure Machine Learning espera configurações de configuração para suporte HTTPS . Para fins de desenvolvimento ou teste, o suporte HTTP é convenientemente fornecido através da configuração allowInsecureConnections=Truede configuração .

Implementaçã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 az k8s-extension create o comando passando 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 seu uso de produção, leia atentamente a lista completa de definições de configuração.

  • Use o cluster 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 lote

    Para a implantação da extensão do Azure Machine Learning no cluster AKS, certifique-se de especificar managedClusters o valor para --cluster-type o parâmetro. 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 o cluster do Arc Kubernetes fora do Azure para uma prova rápida de conceito, para executar apenas trabalhos de treinamento

    Para a implantação da extensão do Azure Machine Learning no cluster Arc Kubernetes , você precisaria especificar connectedClusters o valor para --cluster-type o parâmetro. 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 AKS no Azure para treinamento de produção e carga de trabalho de inferência Para a implantação da extensão do Azure Machine Learning no AKS, certifique-se de especificar managedClusters o valor para --cluster-type o parâmetro. 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
    
  • Habilite um cluster Arc 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 no cluster Arc Kubernetes , certifique-se de especificar connectedClusters o valor para --cluster-type o parâmetro. 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 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 ele pode mostrar "provisioningState": "Pendente" nos primeiros minutos.

  3. Se o provisioningState mostrar Succeeded, execute o seguinte comando em sua máquina com o arquivo kubeconfig apontado para o cluster para verificar se todos os pods no namespace "azureml" estão no estado 'Em execução':

     kubectl get pods -n azureml
    

Ver 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 consiste em um subconjunto de recursos a seguir por definições de configuração especificadas.

Nome do recurso Tipo de recurso Formação Inferência Formação e Inferência Description Comunicação com a nuvem
servidor de retransmissão Implantação do Kubernetes O servidor de retransmissão é criado apenas para o cluster Arc Kubernetes, e não no cluster 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. Envie nós e informações de recursos de cluster para serviços de 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-operador Implantação do Kubernetes Opcional Opcional Opcional Fornecer implantação e gerenciamento nativos do Kubernetes do Prometheus e componentes de monitoramento relacionados. N/A
amlarc-identidade-controlador Implantação do Kubernetes N/A Solicite e renove o token do Registro de Contêiner do Azure/Azure por meio da identidade gerenciada. 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-identidade-proxy Implantação do Kubernetes N/A Solicite e renove o token do Registro de Contêiner do Azure/Azure por meio da identidade gerenciada. 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 front-end que roteia solicitações de inferência de entrada para serviços implantados. 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 Webhook de admissão do vulcão. 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
fluente-bit Daemonset do Kubernetes Reúna o log do sistema dos componentes. Carregue o log do sistema dos componentes na nuvem.
{EXTENSION-NAME}-dcgm-exportador 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 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á sob o mesmo grupo de recursos que o recurso de cluster Arc. Ele é usado para se comunicar com o cluster do Kubernetes e modificá-los quebrará os alvos de computação anexados.
  • Por padrão, os recursos de implantação do kubernetes são implantados aleatoriamente em 1 ou mais nós do cluster e os recursos 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 nodeSelector a definição de configuração descrita na tabela de definições de configuração.

Nota

  • {EXTENSION-NAME}: é o nome da extensão especificado com az k8s-extension create --name o comando CLI.

Extensão da CLI do Azure Machine Learning

Atualizar, listar, mostrar e excluir uma extensão do Azure Machine Learning.

  • Para cluster AKS sem o Azure Arc conectado, consulte Implantar e gerenciar extensões de cluster.
  • Para Kubernetes habilitados para Azure Arc, consulte Implantar e gerenciar extensões de cluster do Kubernetes habilitadas para Azure Arc.

Próximos passos