Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
- Se o cluster for um cluster do serviço Azure Red Hat OpenShift (ARO) ou um cluster OpenShift Container Platform (OCP), tem de cumprir outros pré-requisitos, conforme documentado no artigo de referência para configurar o cluster 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.
- 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-extensionda 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 misturaramd64e 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, utilizenodeSelectorpara 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=TrueeenableInference=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-feO serviço de roteador é necessário para suporte de inferência em tempo real e você precisa especificarinferenceRouterServiceTypea configuração de configuração paraazureml-fe. O router é implementado como aazureml-fe-v2implantação do Kubernetes, que aparece listada em componentes de extensão.azureml-fepode ser implementado com um dos seguintesinferenceRouterServiceType:- Escreva
loadBalancer. Expõeazureml-feexternamente 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-feno IP de cada nó, numa porta estática. Pode contactarazureml-fe, de fora do cluster, solicitando<NodeIP>:<NodePort>. O usonodePorttambém permite que você configure sua própria solução de balanceamento de carga e terminação TLS/SSL paraazureml-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õeazureml-feem um IP interno do cluster e tornaazureml-feacessível apenas de dentro do cluster. Paraazureml-featender à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. 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
- Para garantir a alta disponibilidade do serviço de roteamento, a implantação da
azureml-feextensão do Azure Machine Learning por padrão cria três réplicas deazureml-fepara clusters com três nós ou mais. Se o cluster tiver menos de 3 nós, definainferenceRouterHA=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
sslSecretou a combinação das definições protegidas por configuraçãosslKeyPemFileesslCertPemFile. - 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
- CLI do Azure
- 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
managedClusterspara 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 clusterUse 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
connectedClusterspara 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 clusterAtive 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
managedClusterspara 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 clusterAtive 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
connectedClusterspara 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
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>Na resposta, procure
"name"e"provisioningState": "Succeeded". Pode aparecer"provisioningState": "Pending"nos primeiros minutos.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
azuremlestão no estadoRunning: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
nodeSelectorna tabela de definições de configuração.
Nota
-
{NOME-EXTENSÃO}: é o nome da extensão que especificas usando o
az k8s-extension create --namecomando CLI.
Gerir a extensão do Azure Machine Learning
Atualize, liste, mostre e elimine uma extensão do Azure Machine Learning.
- Para clusters do AKS não ligados ao Azure Arc, consulte Implementar e gerir extensões de cluster.
- Para o Kubernetes habilitado para Azure Arc, veja Implementar e gerir extensões de clusters do Kubernetes habilitado para Azure Arc.