Creare un cluster di elaborazione di Azure Machine Learning
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
Questo articolo spiega come creare e gestire un cluster di elaborazione nell'area di lavoro di Azure Machine Learning.
È possibile usare il cluster di elaborazione di Azure Machine Learning per distribuire il processo di training o di inferenza batch in un cluster di nodi di calcolo CPU o GPU nel cloud. Per altre informazioni sulle dimensioni delle macchine virtuali che includono GPU, consultare il documento Dimensioni delle macchine virtuali ottimizzate per GPU.
Scopri come:
- Creare un cluster di elaborazione.
- Ridurre il costo del cluster di elaborazione con macchine virtuali con priorità bassa.
- Configurare un'identità gestita per il cluster.
Nota
Invece di creare un cluster di calcolo, usare l'ambiente di calcolo serverless per eseguire l'offload della gestione del ciclo di vita di calcolo in Azure Machine Learning.
Prerequisiti
- Un'area di lavoro di Azure Machine Learning. Per altre informazioni, vedere Gestire aree di lavoro di Azure Machine Learning.
Selezionare la scheda appropriata per il resto dei prerequisiti in base al metodo preferito per la creazione del cluster di calcolo.
Se il codice non è in esecuzione in un'istanza di calcolo, installare Azure Machine Learning Python SDK. Questo SDK è già installato in un'istanza di ambiente di calcolo.
Allegare all'area di lavoro nello script Python:
Eseguire questo codice per connettersi all'area di lavoro di Azure Machine Learning.
Sostituire l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'area di lavoro nel codice seguente. Per trovare questi valori:
- Accedere ad Azure Machine Learning Studio.
- Aprire l'area di lavoro che si vuole usare.
- Selezionare il nome dell'area di lavoro in alto a destra nella barra degli strumenti di Studio di Azure Machine Learning.
- Copiare i valori per l'area di lavoro, il gruppo di risorse e l'ID sottoscrizione nel codice.
SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)
# Enter details of your AML workspace subscription_id = "<SUBSCRIPTION_ID>" resource_group = "<RESOURCE_GROUP>" workspace = "<AML_WORKSPACE_NAME>"
# get a handle to the workspace from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential ml_client = MLClient( DefaultAzureCredential(), subscription_id, resource_group, workspace )
ml_client
è un gestore dell'area di lavoro che viene usato per gestire altre risorse e processi.
Che cos'è un cluster di elaborazione?
Un cluster di elaborazione di Azure Machine Learning è un'infrastruttura di calcolo gestito che consente di creare facilmente un ambiente di calcolo a uno o più nodi. Il cluster di elaborazione è una risorsa da poter condividere con altri utenti dell'area di lavoro. Il calcolo si ridimensiona verticalmente in modo automatico quando viene inviato un processo e può essere inserito in una Rete virtuale di Azure. I cluster di elaborazione supportano distribuzioni di ID non pubblici, nonché nelle reti virtuali. Il calcolo viene eseguito in un ambiente basato su contenitori, con la creazione di un pacchetto delle dipendenze del modello in un contenitore Docker.
I cluster di elaborazione possono eseguire processi in modo protetto in una rete virtuale gestita o in una rete virtuale di Azure, senza richiedere alle aziende di aprire porte SSH. Il processo viene eseguito in un ambiente basato su contenitori, con la creazione di un pacchetto delle dipendenze del modello in un contenitore Docker.
Limiti
I cluster di elaborazione possono essere creati in un'area diversa rispetto all'area di lavoro dell'utente. Questa funzionalità è disponibile solo per i cluster di elaborazione, non per le istanze di ambiente di calcolo.
Avviso
Quando si usa un cluster di elaborazione in un'area diversa rispetto all'area di lavoro o agli archivi dati, si potrebbe riscontrare un aumento della latenza di rete e dei costi di trasferimento dei dati. La latenza e i costi possono verificarsi durante la creazione del cluster e durante l'esecuzione di processi in tale cluster.
Per alcuni aspetti, l'ambiente di calcolo di Azure Machine Learning prevede limiti predefiniti, ad esempio il numero di core che possono essere allocati. Per altre informazioni, consultare il documento Gestire e richiedere quote per risorse di Azure.
Azure consente di inserire blocchi sulle risorse, in modo che non possano essere eliminate o siano di sola lettura. Non applicare blocchi al gruppo di risorse che contiene l'area di lavoro. L'applicazione di un blocco al gruppo di risorse che contiene l'area di lavoro impedisce le operazioni di ridimensionamento per i cluster di elaborazione di Azure Machine Learning. Per altre informazioni sul blocco delle risorse, vedere Bloccare le risorse per impedire modifiche impreviste.
Creazione
Tempo stimato: circa cinque minuti.
Nota
Se si usa l'ambiente di elaborazione serverless, non è necessario creare un cluster di elaborazione.
Un ambiente di calcolo di Azure Machine Learning può essere usato su più esecuzioni. L'ambiente di calcolo può essere condiviso con altri utenti nell'area di lavoro e mantenuto da un'esecuzione all'altra, ridimensionando automaticamente i nodi in base al numero di esecuzioni inviate e all'impostazione max_nodes
definita per il cluster. L'impostazione min_nodes
controlla il numero minimo di nodi disponibili.
I core dedicati per area e per quota di famiglia di macchine virtuali e quota totale a livello di area, che si applica alla creazione del cluster di elaborazione, è unificata a e condivisa con la quota dell'istanza di ambiente di calcolo del training di Azure Machine Learning.
Importante
Per evitare addebiti quando non è in esecuzione alcun processo, impostare il numero minimo di nodi su 0. Questa impostazione consente ad Machine Learning di deallocare i nodi quando non sono in uso. Qualsiasi valore superiore a 0 manterrà in esecuzione tale numero di nodi, anche se non sono in uso.
Il calcolo viene ridimensionato automaticamente fino a zero nodi quando non viene usato. Le macchine virtuali dedicate vengono create per eseguire i processi in base alle esigenze.
Per creare un cluster di calcolo, usare gli esempi seguenti:
Per creare una risorsa permanente di ambiente di calcolo di Machine Learning in Python, specificare le proprietà size
e max_instances
. Azure Machine Learning quindi usa valori predefiniti intelligenti per le altre proprietà.
- size: la famiglia di macchine virtuali dei nodi creati dall'ambiente di calcolo di Azure Machine Learning.
- max_instances: il numero massimo di nodi per la scalabilità automatica durante l'esecuzione di un processo in un ambiente di calcolo di Azure Machine Learning.
SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)
from azure.ai.ml.entities import AmlCompute
cluster_basic = AmlCompute(
name="basic-example",
type="amlcompute",
size="STANDARD_DS3_v2",
location="westus",
min_instances=0,
max_instances=2,
idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()
Durante la creazione di un ambiente di calcolo di Machine Learning è anche possibile configurare diverse proprietà avanzate. Le proprietà consentono di creare un cluster permanente di dimensione fissa o all'interno di una Rete virtuale di Azure esistente nella sottoscrizione. Per informazioni dettagliate, consultare AmlCompute class (Classe AmlCompute).
Avviso
Quando si imposta il parametro location
, se è un'area diversa rispetto all'area di lavoro o agli archivi dati dell'utente, si potrebbe riscontrare un aumento della latenza di rete e dei costi di trasferimento dei dati. La latenza e i costi possono verificarsi durante la creazione del cluster e durante l'esecuzione di processi in tale cluster.
Ridurre il costo del cluster di elaborazione con macchine virtuali con priorità bassa.
È anche possibile scegliere di usare macchine virtuali con priorità bassa per eseguire alcuni o tutti i carichi di lavoro. Queste macchine virtuali non hanno una disponibilità garantita e possono essere terminate durante l'uso. È necessario riavviare un processo interrotto.
L'uso delle macchine virtuali con priorità bassa consente di sfruttare la capacità inutilizzata di Azure con un notevole risparmio sui costi. In qualsiasi momento in cui Azure richiede di nuovo la capacità, l'infrastruttura di Azure rimuove le macchine virtuali con priorità bassa di Azure. Di conseguenza, le macchine virtuali con priorità bassa di Azure sono ideali per carichi di lavoro in grado di gestire le interruzioni. La quantità di capacità disponibile dipende dalle dimensioni, dall'area, dal momento della giornata e da altri fattori. Quando si distribuiscono macchine virtuali con priorità bassa di Azure, Azure le alloca se c'è capacità disponibile, ma non esiste alcun contratto di servizio per queste macchine virtuali. Una macchina virtuale con priorità bassa di Azure non offre garanzie di disponibilità elevata. In qualsiasi momento in cui Azure richiede di nuovo la capacità, l'infrastruttura di Azure rimuove le macchine virtuali con priorità bassa di Azure.
Usare uno di queste soluzioni per specificare una macchina virtuale con priorità bassa:
SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)
from azure.ai.ml.entities import AmlCompute
cluster_low_pri = AmlCompute(
name="low-pri-example",
size="STANDARD_DS3_v2",
min_instances=0,
max_instances=2,
idle_time_before_scale_down=120,
tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()
Elimina
Anche se il cluster di elaborazione si riduce a zero nodi quando non in uso, i nodi senza provisioning contribuiscono all'utilizzo della quota. L'eliminazione del cluster di elaborazione rimuove la destinazione di calcolo dall'area di lavoro e rilascia la quota.
SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)
In questo modo viene eliminato il cluster di elaborazione di base, creato dall'oggetto create_basic
in precedenza in questo articolo.
from azure.ai.ml.entities import AmlCompute
ml_client.compute.begin_delete(cluster_basic.name).wait()
Configurare l'identità gestita
Per informazioni su come configurare un'identità gestita con il cluster di elaborazione, vedere Impostare l'autenticazione tra Azure Machine Learning e altri servizi.
Risoluzione dei problemi
È possibile che alcuni utenti che hanno creato l'area di lavoro di Azure Machine Learning dal portale di Azure prima della versione in disponibilità generale non riescano a creare un ambiente di calcolo di Azure Machine Learning nell'area di lavoro. È possibile generare una richiesta di supporto per il servizio o creare una nuova area di lavoro tramite il portale o l'SDK per annullare il blocco immediatamente.
Importante
Se l'istanza di calcolo o i cluster di calcolo si basano su una di queste serie, ricreare con un'altra dimensione della macchina virtuale.
Questa serie è stata ritirata il 31 agosto 2023:
Questa serie è stata ritirata il 31 agosto 2024:
Blocco in fase di ridimensionamento
Se il cluster di calcolo di Azure Machine Learning risulta bloccato in fase di ridimensionamento (0 -> 0) per lo stato del nodo, il problema potrebbe dipendere da blocchi delle risorse di Azure.
Azure consente di inserire blocchi delle risorse, in modo che non possano essere eliminate o siano di sola lettura. Il blocco di una risorsa può causare risultati imprevisti. Alcune operazioni che non sembrano modificare la risorsa richiedono effettivamente azioni bloccate dal blocco.
Con Azure Machine Learning, l'applicazione di un blocco di eliminazione al gruppo di risorse per l'area di lavoro impedirà le operazioni di ridimensionamento per i cluster di calcolo di Azure Machine Learning. Per ovviare a questo problema, è consigliabile rimuovere il blocco dal gruppo di risorse e applicarlo a singoli elementi nel gruppo.
Importante
Non applicare il blocco alle risorse seguenti:
Nome risorsa | Tipo di risorsa |
---|---|
<GUID>-azurebatch-cloudservicenetworksecurityggroup |
Gruppo di sicurezza di rete |
<GUID>-azurebatch-cloudservicepublicip |
Indirizzo IP pubblico |
<GUID>-azurebatch-cloudserviceloadbalancer |
Bilanciamento del carico |
Queste risorse vengono usate per comunicare con il cluster di elaborazione e per eseguire operazioni come il ridimensionamento sul cluster di elaborazione. La rimozione del blocco delle risorse da queste risorse deve consentire il ridimensionamento automatico dei cluster di calcolo.
Per altre informazioni sul blocco delle risorse, vedere Bloccare le risorse per impedire modifiche impreviste.
Passaggio successivo
Usare il cluster di elaborazione per: