Usare macchine virtuali con priorità bassa per le distribuzioni batch
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
Le distribuzioni di Azure Batch supportano macchine virtuali (VM) con priorità bassa per ridurre il costo dei carichi di lavoro di inferenza batch. Le macchine virtuali con priorità bassa consentono di usare una grande quantità di potenza di calcolo a un costo basso. Le macchine virtuali con priorità bassa sfruttano la capacità in eccesso di Azure. Quando si specificano le macchine virtuali con priorità bassa nei pool, Azure può usare questa capacità in eccesso, quando disponibile.
Suggerimento
Il compromesso per l'uso di macchine virtuali con priorità bassa è che tali macchine virtuali potrebbero non essere disponibili o potrebbero essere interrotte in qualsiasi momento, a seconda della capacità disponibile. Per questo motivo, questo approccio è più indicato per carichi di lavoro di elaborazione asincrona e batch, in cui il tempo di completamento del processo è flessibile e il lavoro viene distribuito su diverse macchine virtuali.
Le macchine virtuali con priorità bassa sono caratterizzate da un prezzo ridotto rispetto alle macchine virtuali dedicate. Per informazioni sui prezzi, vedere Prezzi di Azure Machine Learning.
Come funziona la distribuzione batch con le VM con priorità bassa
Le distribuzioni batch di Azure Machine Learning forniscono diverse funzionalità che semplificano l'utilizzo e i vantaggi delle VM con priorità bassa:
- I processi di distribuzione batch usano macchine virtuali con priorità bassa eseguendole in cluster di elaborazione di Azure Machine Learning creati con VM con priorità bassa. Dopo una distribuzione viene associata a un cluster di macchine virtuali con priorità bassa, tutti i processi prodotti da tale distribuzione useranno VM con priorità bassa. La configurazione per processo non è possibile.
- I processi di distribuzione batch cercano automaticamente il numero di macchine virtuali di destinazione nel cluster di elaborazione disponibile in base al numero di attività da inviare. Se le macchine virtuali vengono interrotte o diventano indisponibili, i processi di distribuzione batch tentano di sostituire la capacità persa inserendo in una coda le attività non riuscite nel cluster.
- Le macchine virtuali con priorità bassa hanno una quota di vCPU che differisce da quella per le macchine virtuali dedicate. I core con priorità bassa per area hanno un limite predefinito di 100-3.000, a seconda della sottoscrizione. Il numero di core a bassa priorità per ogni sottoscrizione può essere aumentato ed è un valore singolo per le famiglie di macchine virtuali. Vedere Quote di calcolo di Azure Machine Learning.
Considerazioni e casi d'uso
Molti carichi di lavoro batch sono particolarmente adatti alle macchine virtuali con priorità bassa. L'uso di macchine virtuali con priorità bassa può introdurre ritardi di esecuzione quando si verifica la deallocazione delle macchine virtuali. Se si ha flessibilità nel tempo necessario per il completamento dei processi, è possibile tollerare i potenziali cali di capacità.
Quando si distribuiscono modelli negli endpoint batch, la riprogrammazione può essere eseguita a livello di mini batch. Questo approccio ha il vantaggio che la deallocazione influisce solo sui mini batch in fase di elaborazione e non sul nodo interessato. Tutto lo stato di avanzamento completato viene mantenuto.
Limiti
- Dopo una distribuzione viene associata a un cluster di macchine virtuali con priorità bassa, tutti i processi prodotti da tale distribuzione useranno VM con priorità bassa. La configurazione per processo non è possibile.
- La riprogrammazione viene eseguita a livello di mini batch, indipendentemente dallo stato di avanzamento. Non viene fornita alcuna funzionalità di checkpoint.
Avviso
Nei casi in cui l'intero cluster viene interrotto o l'esecuzione avviene in un cluster a nodo singolo, il processo viene annullato perché non è disponibile capacità per l'esecuzione. In questo caso è necessario rinviarlo.
Creare distribuzioni batch che usano macchine virtuali con priorità bassa
I processi di distribuzione batch usano macchine virtuali con priorità bassa eseguendole in cluster di elaborazione di Azure Machine Learning creati con VM con priorità bassa.
Nota
Dopo una distribuzione viene associata a un cluster di macchine virtuali con priorità bassa, tutti i processi prodotti da tale distribuzione useranno VM con priorità bassa. La configurazione per processo non è possibile.
È possibile creare un cluster di elaborazione di Azure Machine Learning con priorità bassa come indicato di seguito:
Creare una definizione di calcolo YAML
come quella seguente, low-pri-cluster.yml:
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority
Creare il calcolo usando il comando seguente:
az ml compute create -f low-pri-cluster.yml
Dopo aver creato il nuovo ambiente di calcolo, è possibile creare o aggiornare la distribuzione per usare il nuovo cluster:
Per creare o aggiornare una distribuzione nel nuovo cluster di elaborazione, creare un file di configurazione YAML
, endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
instance_count: 2
settings:
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 300
Creare quindi la distribuzione con il comando seguente:
az ml batch-endpoint create -f endpoint.yml
Visualizzare e monitorare la deallocazione dei nodi
Nel portale di Azure sono disponibili nuove metriche per monitorare le VM con priorità bassa. Le metriche sono le seguenti:
- Nodi interrotti
- Core interrotti
Per visualizzare queste metriche nel portale di Azure:
- Nel portale di Azure accedere all'area di lavoro di Azure Machine Learning.
- Selezionare Metrica dalla sezione Monitoraggio.
- Selezionare le metriche da usare nell'elenco Metriche.