Condividi tramite


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:

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

Screenshot della sezione delle metriche nel riquadro di monitoraggio delle risorse che mostra le metriche pertinenti per le macchine virtuali con priorità bassa.