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 de Serviço RedHat OpenShift (ARO) do Azure ou um cluster OCP (OpenShift Container Platform), 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
- O uso de uma entidade de serviço com AKS não é suportado pelo Azure Machine Learning. O cluster AKS deve usar uma identidade gerenciada. 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.
- Quando o principal de serviço utilizado pelo cluster do AKS é convertido para utilizar a Identidade Gerida, antes de instalar a extensão, todos os conjuntos de nós têm de ser eliminados e recriados, em vez de serem atualizados diretamente.
- A desativação de contas locais para AKS não é suportada pelo Azure Machine Learning. Quando o Cluster do AKS é implementado, as contas locais são ativadas por predefinição.
- Se o cluster AKS tiver um intervalo de IP autorizado habilitado para acessar o servidor de API, habilite os intervalos de IP do plano de controle do Azure Machine Learning para o cluster AKS. O plano de controlo do Azure Machine Learning é implementado transversalmente 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 você tiver um cluster AKS em uma assinatura diferente, primeiro deverá conectá-lo ao Azure-Arc e especificar na mesma assinatura que seu espaço de trabalho do Azure Machine Learning.
- O Azure Machine Learning não garante suporte para todos os recursos do estágio de visualização no AKS. Por exemplo, a identidade do pod do Microsoft Entra não é suportada.
- Se você seguiu as etapas do documento 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 herdados antes de continuar a próxima etapa.
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 sslCertPemFile sslKeyPemFile 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=True
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 especificarinferenceRouterServiceType
a configuração de configuração paraazureml-fe
.azureml-fe
pode ser implantado com um dos seguintes :inferenceRouterServiceType
- Escreva
LoadBalancer
. Expõeazureml-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õeazureml-fe
o IP de cada nó em uma porta estática. Você poderá entrar em contato comazureml-fe
, de fora do cluster, solicitando<NodeIP>:<NodePort>
. O usoNodePort
também permite que você configure sua própria solução de balanceamento de carga e terminação TLS/SSL paraazureml-fe
. - Escreva
ClusterIP
. Expõeazureml-fe
em um IP interno do cluster e tornaazureml-fe
acessível apenas de dentro do cluster. Paraazureml-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 paraazureml-fe
.
- Escreva
- 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 deazureml-fe
para clusters com três nós ou mais. Se o cluster tiver menos de 3 nós, definainferenceRouterHA=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 porsslKeyPemFile
sslCertPemFile
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=True
de 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
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 ele pode mostrar "provisioningState": "Pendente" nos primeiros minutos.
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.