Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- Un cluster del servizio Azure Kubernetes in esecuzione in Azure. Se in precedenza non sono state usate le estensioni del cluster, è necessario registrare il provider di servizi KubernetesConfiguration.
- In alternativa, un cluster Kubernetes abilitato per Azure Arc attivo e funzionante. Seguire le istruzioni in Collegare un cluster Kubernetes esistente ad Azure Arc.
- Se il cluster è un cluster Azure RedHat OpenShift Service (ARO) o un cluster OpenShift Container Platform (OCP), è necessario soddisfare altri passaggi essenziali, come descritto nell'articolo Informazioni di riferimento per la configurazione del cluster Kubernetes.
- Ai fini della produzione, il cluster Kubernetes deve avere almeno 4 core vCPU e 14 GB di memoria. Per altre informazioni sui dettagli delle risorse e sulle dimensioni del cluster consigliate, vedere Pianificazione delle risorse consigliata.
- Un cluster in esecuzione dietro un server proxy in uscita o un firewall richiede configurazioni di rete aggiuntive.
- Installare o aggiornare l'interfaccia della riga di comando di Azure alla versione 2.51.0 o successiva.
- Installare o aggiornare l'estensione dell'interfaccia della riga di comando di Azure
k8s-extensionalla versione 1.2.3 o a una versione successiva.
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=TruecheenableInference=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 configurazioneinferenceRouterServiceTypeperazureml-fe.azureml-fepuò essere distribuito con uno dei valori seguenti diinferenceRouterServiceType:- Digitare
loadBalancer. Esponeazureml-feesternamente 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. Esponeazureml-fenell'indirizzo IP di ogni nodo di una porta statica. È possibile contattareazureml-fe, dall'esterno del cluster, richiedendo<NodeIP>:<NodePort>. L'uso dinodePortconsente anche di configurare la propria soluzione di bilanciamento del carico e la terminazione TLS/SSL perazureml-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. Esponeazureml-fein un indirizzo IP interno del cluster e rendeazureml-feraggiungibile solo dall'interno del cluster. Affinchéazureml-fepossa gestire le richieste di inferenza provenienti dall'esterno del cluster, è necessario configurare la propria soluzione di bilanciamento del carico e la terminazione TLS/SSL perazureml-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
- Per garantire la disponibilità elevata del servizio di routing
azureml-fe, la distribuzione dell'estensione Azure Machine Learning crea per impostazione predefinita tre repliche diazureml-feper i cluster con tre o più nodi. Se il cluster ha meno di 3 nodi, impostareinferenceRouterHA=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
sslSecretoppure la combinazione delle impostazioni protette dalla configurazionesslKeyPemFileesslCertPemFile. - 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
managedClustersper 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 clusterUsare 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
connectedClustersper 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 clusterAbilitare 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
managedClustersvalore 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 clusterAbilitare 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
connectedClustersper 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
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>Nella risposta cercare
"name"e"provisioningState": "Succeeded". Potrebbe essere visualizzato"provisioningState": "Pending"per i primi minuti.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 siaRunningnello 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
nodeSelectordi 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 --nameCLI.
Gestire l'estensione Azure Machine Learning
Aggiornare, elencare, visualizzare ed eliminare un'estensione Azure Machine Learning.
- Per i cluster AKS non connessi ad Azure Arc, vedere Distribuire e gestire le estensioni del cluster.
- Per Kubernetes abilitato per Azure Arc, vedere Distribuire e gestire le estensioni del cluster di Kubernetes abilitato per Azure Arc.