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

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 sono in esecuzione processi, 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()

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 ambiente di calcolo o i cluster di calcolo si basano su una di queste serie, ricrearle con un'altra dimensione della macchina virtuale prima della data di ritiro per evitare interruzioni del servizio.

Queste serie sono state ritirate il 31 agosto 2023:

Queste serie verranno ritirate 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: