Distribuire l'estensione di Azure Machine Learning in Servizio Azure Kubernetes (AKS) o in un cluster Kubernetes abilitato per Azure Arc

Per abilitare il cluster Kubernetes abilitato per Servizio Azure Kubernetes (AKS) o Azure Arc per eseguire processi di training o carichi di lavoro di inferenza, distribuire prima di tutto l'estensione Azure Machine Learning. L'estensione Azure Machine Learning è un'estensione standard del cluster per AKS e un'estensione del cluster per Kubernetes abilitato per Azure Arc. È possibile gestire il ciclo di vita usando interfaccia della riga di comando di Azure k8s-extension.

In questo articolo vengono fornite informazioni su:

  • Prerequisiti
  • Limitazioni
  • Esaminare i set di config dell'estensione di Azure Machine Learning
  • Scenari di distribuzione dell’estensione di Azure Machine Learning
  • Verificare la distribuzione dell'estensione di Azure Machine Learning
  • Esaminare i componenti dell'estensione di Azure Machine Learning
  • Gestire l'estensione Azure Machine Learning

Prerequisiti

Limitazioni

  • Azure Machine Learning non supportal'uso di un'entità servizio con AKS. Il cluster del servizio Azure Kubernetes deve usare invece un'identità gestita. Sono supportate sia l'identità gestita assegnata dal sistema sia l'identità gestita assegnata dall'utente. Per altre informazioni, vedere Usare un'identità gestita nel servizio Azure Kubernetes.
    • Quando si converte il cluster AKS dall'uso di un'entità servizio all'uso dell'identità gestita, è necessario eliminare e ricreare tutti i pool di nodi prima di installare l'estensione. Non è possibile aggiornare direttamente i pool di nodi.
  • Azure Machine Learning non supportala disattivazione degli account locali per AKS. Quando si distribuisce il cluster del servizio Azure Kubernetes, gli account locali sono abilitati per impostazione predefinita.
  • Se il cluster del servizio Azure Kubernetes dispone di un intervallo IP Autorizzato per accedere al server API, è necessario abilitare gli intervalli IP del piano di controllo Azure Machine Learning per il cluster del servizio Azure Kubernetes. Il piano di controllo di Azure Machine Learning viene distribuito in diverse aree associate. Senza accesso al server API, i pod di apprendimento automatico non possono essere distribuiti. Quando si abilitano gli intervalli IP in un cluster del servizio Azure Kubernetes, usare gli intervalli IP per entrambe le aree associate.
  • Azure Machine Learning non supporta il collegamento di un cluster del servizio Azure Kubernetes tra sottoscrizioni. Se si dispone di un cluster AKS in una sottoscrizione diversa, è necessario prima connetterlo ad Azure Arc e specificare la stessa sottoscrizione nell'area di lavoro di Azure Machine Learning.
  • Azure Machine Learning non garantisce il supporto di tutte le funzionalità in fase di anteprima nel servizio Azure Kubernetes. Ad esempio, Microsoft Entra l'identità gestita da pod (deprecata) non è supportata. Usare invece ID dei carichi di lavoro di Microsoft Entra.
  • Se hai seguito i passaggi del documento Azure Machine Learning AKS v1 per creare o collegare il cluster AKS come cluster di inferenza, usa il collegamento seguente per eliminare le risorse legacy correlate ad azureml-fe prima di procedere con il passaggio successivo.

Esaminare le impostazioni di configurazione dell'estensione di Azure Machine Learning

Usare il comando interfaccia della riga di comando di Azure az k8s-extension create per distribuire l'estensione Azure Machine Learning. Il comando az k8s-extension create accetta le impostazioni di configurazione come coppie key=value separate da spazi tramite il parametro --config o --config-protected. Nella tabella seguente sono elencate le impostazioni di configurazione disponibili che è possibile specificare durante la distribuzione.

Nome chiave dell'impostazione di configurazione Descrizione Formazione Inferenza Training e inferenza
enableTraining True o False, predefinito False. Deve essere impostato su True per la distribuzione dell'estensione Azure Machine Learning con il supporto del training del modello di Machine Learning e dell'assegnazione dei punteggi batch. N/D
enableInference True o False, predefinito False. Deve essere impostato su True per la distribuzione dell'estensione Azure Machine Learning con il supporto dell'inferenza di Machine Learning. N/D
allowInsecureConnections True o False, predefinito False. Può essere impostato su True per usare gli endpoint HTTP di inferenza a scopo di sviluppo o test. N/D Facoltativo Facoltativo
inferenceRouterServiceType loadBalancer, nodePort o clusterIP. Obbligatorio se enableInference=True. N/D
internalLoadBalancerProvider Questa configurazione è applicabile solo al cluster del servizio Azure Kubernetes. Impostare su azure per consentire al router di inferenza di usare il servizio di bilanciamento del carico interno. N/D Facoltativo Facoltativo
sslSecret Nome del segreto Kubernetes nello spazio dei nomi azureml. Questa configurazione viene usata per archiviare cert.pem (certificato TLS/SSL con codifica PEM) e key.pem (chiave TLS/SSL con codifica PEM), necessari per il supporto dell'endpoint HTTPS di inferenza quando allowInsecureConnections è impostato su False. Per una definizione YAML di esempio di sslSecret, vedere Configure sslSecret. Usare questa configurazione o una combinazione di impostazioni di configurazione protette sslCertPemFile e sslKeyPemFile. N/D Facoltativo Facoltativo
sslCname Un CNAME TLS/SSL viene usato dall'endpoint HTTPS di inferenza. Obbligatorio se allowInsecureConnections=False N/D Facoltativo Facoltativo
inferenceRouterHA True o False, predefinito True. Per impostazione predefinita, l'estensione Azure Machine Learning distribuisce tre repliche del router di inferenza per la disponibilità elevata, che richiede almeno tre nodi di lavoro in un cluster. Impostare su False se il cluster ha meno di tre nodi di lavoro, in questo caso viene distribuito un solo servizio del router di inferenza. N/D Facoltativo Facoltativo
nodeSelector Per impostazione predefinita, le risorse Kubernetes distribuite e i carichi di lavoro di Machine Learning vengono distribuiti in modo casuale in uno o più nodi del cluster e le risorse DaemonSet vengono distribuite in TUTTI i nodi. Se si vuole limitare la distribuzione dell'estensione e i carichi di lavoro di training/inferenza a nodi specifici con etichetta key1=value1 e key2=value2, usare nodeSelector.key1=value1 e nodeSelector.key2=value2 in modo corrispondente. Facoltativo Facoltativo Facoltativo
installNvidiaDevicePlugin True o False, predefinito False. Il plug-in dei dispositivi NVIDIA è necessario per i carichi di lavoro di Machine Learning nell'hardware GPU NVIDIA. Per impostazione predefinita, la distribuzione dell'estensione Azure Machine Learning non installerà il plug-in dei dispositivi NVIDIA indipendentemente dal fatto che il cluster Kubernetes disponga o meno di hardware GPU. L'utente può impostare questo valore su True per installarlo, ma assicurarsi di soddisfare i Prerequisiti. Facoltativo Facoltativo Facoltativo
installPromOp True o False, predefinito True. L'estensione Azure Machine Learning richiede l'operatore Prometheus per gestire Prometheus. Impostare su False per riutilizzare l'operatore Prometheus esistente. Per altre informazioni sul riutilizzo dell'operatore Prometheus esistente, vedere Riutilizzo dell'operatore Prometheus. Facoltativo Facoltativo Facoltativo
installVolcano True o False, predefinito True. L'estensione Azure Machine Learning richiede l'utilità di pianificazione Volcano per pianificare il processo. Impostare su False per riutilizzare l'utilità di pianificazione Volcano esistente. Per altre informazioni sul riutilizzo dell'utilità di pianificazione Volcano esistente, vedere Riutilizzo dell'utilità di pianificazione Volcano. Facoltativo N/D Facoltativo
installDcgmExporter True o False, predefinito False. Dcgm-exporter può esporre le metriche GPU per i carichi di lavoro di Azure Machine Learning, che possono essere monitorati nel portale di Azure. Impostare installDcgmExporter su True per installare dcgm-exporter. Ma se si desidera utilizzare il proprio dcgm-exporter, vedere DCGM exporter. Facoltativo Facoltativo Facoltativo
Nome chiave dell'impostazione di configurazione protetta Descrizione Formazione Inferenza Training e inferenza
sslCertPemFile, sslKeyPemFile Percorso del certificato TLS/SSL e del file di chiave (con codifica PEM), necessario per la distribuzione dell'estensione Azure Machine Learning con supporto dell'endpoint HTTPS di inferenza, quando allowInsecureConnections è impostato su False. Nota il file PEM con passphrase protetta non è supportato. N/D Facoltativo Facoltativo

Come si può vedere dalla tabella delle impostazioni di configurazione, le combinazioni di impostazioni di configurazione diverse consentono di distribuire l'estensione Azure Machine Learning per diversi scenari di carico di lavoro di Machine Learning:

  • Per il carico di lavoro del processo di training e di inferenza batch, specificare enableTraining=True
  • Per il solo carico di lavoro di inferenza, specificare enableInference=True
  • Per tutti i tipi di carico di lavoro di Machine Learning, specificare sia enableTraining=True che enableInference=True

Se si prevede di distribuire l'estensione Azure Machine Learning per il carico di lavoro di inferenza in tempo reale e si vuole specificare enableInference=True, prestare attenzione alle impostazioni di configurazione seguenti correlate al carico di lavoro di inferenza in tempo reale:

  • Il servizio del router azureml-fe è necessario per il supporto dell'inferenza in tempo reale ed è necessario specificare l'impostazione di configurazione inferenceRouterServiceType per azureml-fe. azureml-fe può essere distribuito con uno dei valori seguenti di inferenceRouterServiceType:
    • Digitare loadBalancer. Espone azureml-fe esternamente usando il servizio di bilanciamento del carico di un provider di servizi cloud. Per specificare questo valore, assicurarsi che il cluster supporti il provisioning del servizio di bilanciamento del carico. Si noti che la maggior parte dei cluster Kubernetes locali potrebbe non supportare il servizio di bilanciamento del carico esterno.
    • Digitare nodePort. Espone azureml-fe nell'indirizzo IP di ogni nodo di una porta statica. È possibile contattare azureml-fe, dall'esterno del cluster, richiedendo <NodeIP>:<NodePort>. L'uso di nodePort consente anche di configurare la propria soluzione di bilanciamento del carico e la terminazione TLS/SSL per azureml-fe. Per altre informazioni su come configurare il proprio ingresso, vedere Integrate altri controller di ingresso con estensione Azure Machine Learning su HTTP o HTTPS.
    • Digitare clusterIP. Espone azureml-fe in un indirizzo IP interno del cluster e rende azureml-fe raggiungibile solo dall'interno del cluster. Affinché azureml-fe possa gestire le richieste di inferenza provenienti dall'esterno del cluster, è necessario configurare la propria soluzione di bilanciamento del carico e la terminazione TLS/SSL per azureml-fe. Per altre informazioni su come configurare il proprio ingresso, vedere Integrate altri controller di ingresso con estensione Azure Machine Learning su HTTP o HTTPS.
  • Per garantire la disponibilità elevata del servizio di routing azureml-fe, la distribuzione dell'estensione Azure Machine Learning crea per impostazione predefinita tre repliche di azureml-fe per i cluster con tre o più nodi. Se il cluster ha meno di 3 nodi, impostare inferenceRouterHA=False.
  • È inoltre opportuno considerare l'utilizzo di HTTPS per limitare l'accesso agli endpoint del modello e proteggere i dati inviati dai client. A questo scopo, è necessario specificare l'impostazione di configurazione sslSecret oppure la combinazione delle impostazioni protette dalla configurazione sslKeyPemFile e sslCertPemFile .
  • Per impostazione predefinita, la distribuzione dell'estensione Azure Machine Learning prevede impostazioni di configurazione per il supporto HTTPS. A scopo di sviluppo o test, il supporto HTTP viene fornito in modo pratico tramite l'impostazione di configurazione allowInsecureConnections=True.

Distribuzione dell'estensione di Azure Machine Learning - Esempi di interfaccia della riga di comando e portale di Azure

Per distribuire l'estensione Azure Machine Learning tramite l'interfaccia della riga di comando, usare il comando az k8s-extension create e specificare i valori per i parametri obbligatori.

L'elenco seguente descrive quattro scenari tipici di distribuzione delle estensioni. Per distribuire l'estensione per l'utilizzo di produzione, leggere attentamente l'elenco completo delle impostazioni di configurazione.

  • Usa un cluster AKS in Azure per una rapida prova di concetto, per eseguire ogni tipo di carico di lavoro di ML, ad esempio per eseguire processi di addestramento o distribuire i modelli come endpoint online o batch

    Per la distribuzione dell'estensione di Azure Machine Learning nel cluster AKS, specificare il valore managedClusters per il parametro --cluster-type. Eseguire il comando dell'interfaccia della riga di comando di Azure seguente per distribuire l'estensione 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
    
  • Usare un cluster Kubernetes abilitato per Azure Arc al di fuori di Azure per una rapida prova di concetto, eseguendo solo job di addestramento

    Per la distribuzione dell'estensione di Azure Machine Learning in un cluster Kubernetes abilitato per Azure Arc, specificare il valore connectedClusters per il parametro --cluster-type. Eseguire il comando dell'interfaccia della riga di comando di Azure seguente per distribuire l'estensione 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
    
  • Abilitare un cluster del servizio Azure Kubernetes in Azure per il carico di lavoro di training e inferenza di produzione Per la distribuzione dell'estensione Azure Machine Learning nel servizio Azure Kubernetes, specificare managedClusters valore per il parametro --cluster-type. Si supponga che il cluster abbia più di tre nodi e si usi un servizio di bilanciamento del carico pubblico di Azure e HTTPS per il supporto del carico di lavoro di inferenza. Eseguire il comando dell'interfaccia della riga di comando di Azure seguente per distribuire l'estensione 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
    
  • Abilitare un cluster Kubernetes abilitato per Azure Arc ovunque per il carico di lavoro di training e inferenza di produzione usando GPU NVIDIA

    Per la distribuzione dell'estensione di Azure Machine Learning in un cluster Kubernetes abilitato per Azure Arc, specificare il valore connectedClusters per il parametro --cluster-type. Supponendo che il cluster abbia più di tre nodi, che si usi un tipo di servizio NodePort e HTTPS per il supporto del carico di lavoro di inferenza, eseguire il comando seguente dell'interfaccia della riga di comando di Azure per distribuire l'estensione 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
    

Verificare la distribuzione dell'estensione di Azure Machine Learning

  1. Eseguire il comando CLI applicabile per controllare i dettagli dell'estensione 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 con abilitazione di Azure Arc

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. Nella risposta cercare "name" e "provisioningState": "Succeeded". Potrebbe essere visualizzato "provisioningState": "Pending" per i primi minuti.

  3. Se provisioningState mostra Succeeded, usare il comando seguente nel computer con il file kubeconfig a cui punta il cluster per assicurarsi che lo stato di tutti i pod nello azuremlspazio dei nomi siaRunning nello stato:

     kubectl get pods -n azureml
    

Esaminare il componente dell'estensione di Azure Machine Learning

Al termine della distribuzione dell'estensione Azure Machine Learning, usare kubectl get deployments -n azureml per visualizzare l'elenco delle risorse create nel cluster. L'elenco è in genere costituito da un subset delle risorse seguenti, a seconda delle impostazioni di configurazione specificate.

Nome risorsa Tipo di risorsa Formazione Inferenza Training e inferenza Descrizione Comunicazione con il cloud
relayserver Distribuzione di Kubernetes La distribuzione crea il server di inoltro solo per i cluster Kubernetes con Azure Arc abilitato e non nei cluster AKS. Il Relay Server funziona con Inoltro di Azure per comunicare con i servizi cloud. Riceve la richiesta di creazione del processo e di distribuzione modello dal servizio cloud; sincronizza lo stato del processo con il servizio cloud.
porta di accesso Distribuzione di Kubernetes Il gateway viene usato per comunicare e per inviare i dati in entrambe le direzioni. Invia le informazioni sui nodi e sulle risorse cluster ai servizi cloud.
aml-operator Distribuzione di Kubernetes N/D Gestire il ciclo di vita dei processi di training. Scambio di token con il servizio token cloud per l'autenticazione e l'autorizzazione di Registro Azure Container.
metrics-controller-manager Distribuzione di Kubernetes Gestisce la configurazione per Prometheus N/D
{EXTENSION-NAME}-kube-state-metrics Distribuzione di Kubernetes Esporta le metriche correlate al cluster in Prometheus. N/D
{EXTENSION-NAME}-prometheus-operator Distribuzione di Kubernetes Facoltativo Facoltativo Facoltativo Fornisce la distribuzione e la gestione nativa di Kubernetes di Prometheus e dei componenti di monitoraggio correlati. N/D
amlarc-identity-controller Distribuzione di Kubernetes N/D Richiedere e rinnovare il token BLOB di Azure/Registro Azure Container tramite l'identità gestita. Scambio di token con il servizio token cloud per l'autenticazione e l'autorizzazione di Registro Azure Container e BLOB di Azure usato dall'inferenza/distribuzione modello.
amlarc-identity-proxy Distribuzione di Kubernetes N/D Richiedere e rinnovare il token BLOB di Azure/Registro Azure Container tramite l'identità gestita. Scambio di token con il servizio token cloud per l'autenticazione e l'autorizzazione di Registro Azure Container e BLOB di Azure usato dall'inferenza/distribuzione modello.
azureml-fe-v2 Distribuzione di Kubernetes N/D Il componente front-end che indirizza le richieste di inferenza in arrivo ai servizi distribuiti. Invia i log del servizio al BLOB di Azure.
inference-operator-controller-manager Distribuzione di Kubernetes N/D Gestire il ciclo di vita degli endpoint di inferenza. N/D
volcano-admission Distribuzione di Kubernetes Facoltativo N/D Facoltativo Webhook di ammissione Volcano. N/D
sistemi di controllo per vulcani Distribuzione di Kubernetes Facoltativo N/D Facoltativo Gestisce il ciclo di vita dei pod dei processi di training di Azure Machine Learning. N/D
volcano-scheduler Distribuzione di Kubernetes Facoltativo N/D Facoltativo Usato per eseguire la pianificazione dei processi nel cluster. N/D
fluent-bit Daemonset Kubernetes Raccoglie il log di sistema dei componenti. Carica il log di sistema dei componenti nel cloud.
{EXTENSION-NAME}-dcgm-exporter Daemonset Kubernetes Facoltativo Facoltativo Facoltativo dcgm-exporter espone le metriche GPU per Prometheus. N/D
nvidia-device-plugin-daemonset Daemonset Kubernetes Facoltativo Facoltativo Facoltativo nvidia-device-plugin-daemonset espone le GPU in ogni nodo del cluster N/D
prometheus-prom-prometheus Set con stato di Kubernetes Raccoglie e invia le metriche dei processi al cloud. Invia metriche del processo come l'utilizzo di cpu/gpu/memoria al cloud.

Importante

  • La risorsa Inoltro di Azure si trova nello stesso gruppo di risorse della risorsa cluster Arc. Viene usato per comunicare con il cluster Kubernetes. Modificarlo rende inutilizzabili i target di calcolo associati.
  • Per impostazione predefinita, le risorse di distribuzione vengono distribuite in modo casuale in uno o più nodi del cluster e le risorse del daemonset vengono distribuite in tutti i nodi. Per limitare la distribuzione dell'estensione a nodi specifici, usare l'impostazione nodeSelector di configurazione descritta nella tabella delle impostazioni di configurazione.

Note

  • {EXTENSION-NAME}: è il nome dell'estensione che si specifica usando il comando az k8s-extension create --name CLI.

Gestire l'estensione Azure Machine Learning

Aggiornare, elencare, visualizzare ed eliminare un'estensione Azure Machine Learning.

Passaggi successivi