Share via


Uso di VM con priorità bassa nelle 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 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.

Il compromesso per l'uso di queste macchine virtuali è che possono non essere sempre disponibili per l'allocazione o possono essere interrotte in qualsiasi momento, a seconda della capacità disponibile. Per questo motivo, sono più indicate 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 VM.

Le macchine virtuali con priorità bassa sono caratterizzate da un prezzo notevolmente ridotto rispetto a quelle 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. Quando 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 a priorità bassa per area hanno un limite predefinito di 100-3.000, a seconda del tipo di offerta di 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. Sebbene questa scelta possa introdurre ulteriori ritardi di esecuzione quando si verifica la deallocazione delle macchine virtuali, è possibile tollerare potenziali cali di capacità a discapito dell'esecuzione con un costo inferiore se esiste flessibilità nel tempo in cui i processi devono essere completati.

Quando si distribuiscono modelli negli endpoint batch, la riprogrammazione può essere eseguita a livello di mini batch. Ciò offre il vantaggio aggiuntivo che la deallocazione influisce solo sui mini batch che sono attualmente in fase di elaborazione e non su quelli terminati nel nodo interessato. Ogni avanzamento completato viene mantenuto.

Creazione di distribuzioni batch con le 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.

Nota

Quando 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 simile alla 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 l'ambiente di 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 una nuova distribuzione nel nuovo cluster di elaborazione, creare una configurazione YAML simile alla seguente:

$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

  1. Nel portale di Azure passare all'area di lavoro di Azure Machine Learning.
  2. Selezionare Metrica dalla sezione Monitoraggio.
  3. Selezionare le metriche da usare nell'elenco Metriche.

Screenshot of the metrics section in the resource monitoring blade showing the relevant metrics for low priority VMs.

Limiti

  • Quando 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 verrà annullato perché non è disponibile capacità per l'esecuzione. In questo caso sarà necessario rinviarlo.