Condividi tramite


Gestire e ottimizzare i costi in Azure Machine Learning

Informazioni su come gestire e ottimizzare i costi durante il training e la distribuzione di modelli di Machine Learning in Azure Machine Learning.

Usare i suggerimenti seguenti per semplificare la gestione e l’ottimizzazione dei costi delle risorse di calcolo.

  • Configurare i cluster di training per la scalabilità automatica
  • Configurare gli endpoint online gestiti per la scalabilità automatica
  • Impostare quote per la propria sottoscrizione e le proprie aree di lavoro
  • Impostare i criteri di terminazione per il processo di training
  • Usare macchine virtuali con priorità bassa
  • Pianificare l'arresto e l'avvio automatico delle istanze di ambiente di calcolo
  • Usare un'istanza di macchina virtuale riservata di Azure
  • Eseguire il training in locale
  • Parallelizzare il training
  • Impostare criteri di conservazione ed eliminazione dei dati
  • Distribuire le risorse nella stessa area
  • Eliminare distribuzioni non riuscite se vengono create le risorse di calcolo

Per informazioni sulla pianificazione e il monitoraggio dei costi, vedere la guida alla pianificazione per la gestione dei costi per Azure Machine Learning.

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Creare un cluster di elaborazione di Azure Machine Learning (AmlCompute)

Con i dati in continua evoluzione, è necessario eseguire il training di modelli veloci e semplificati, e ripetere il training per mantenere accurati i modelli. Il training continuo, tuttavia, comporta un costo, soprattutto per i modelli di Deep Learning su GPU.

Gli utenti di Azure Machine Learning possono usare il cluster di elaborazione di Azure Machine Learning gestito, denominato anche AmlCompute. AmlCompute supporta varie opzioni di GPU e CPU. AmlCompute è ospitato internamente per la propria sottoscrizione da Azure Machine Learning. Offre la stessa sicurezza, conformità e governance di livello aziendale su scala cloud IaaS di Azure.

Poiché questi pool di calcolo si trovano all'interno dell'infrastruttura IaaS di Azure, è possibile distribuire, ridimensionare e gestire il training con gli stessi requisiti di sicurezza e conformità del resto dell'infrastruttura. Queste distribuzioni avvengono nella sottoscrizione dell’utente e rispettano le sue regole di governance. Altre informazioni sull’ambiente di calcolo di Azure Machine Learning.

Configurare cluster di training per la scalabilità automatica

La scalabilità automatica dei cluster in base ai requisiti del carico di lavoro contribuisce a ridurre i costi in modo da usare solo le funzionalità necessarie.

I cluster AmlCompute sono progettati per il ridimensionamento dinamico in base al carico di lavoro. Il cluster può essere ridimensionato fino al numero massimo di nodi configurati. Al termine di ogni processo, i nodi del cluster vengono rilasciati e ridimensionati al numero minimo di nodi configurati.

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. Un valore maggiore di 0 manterrà in esecuzione tale numero di nodi anche se non sono in uso.

È anche possibile configurare il tempo di inattività del nodo prima della riduzione. Per impostazione predefinita, il tempo di inattività prima della riduzione è impostato su 120 secondi.

  • Se viene eseguita una sperimentazione meno iterativa, ridurre questo tempo per risparmiare sui costi.
  • Se viene eseguita una sperimentazione di sviluppo/test altamente iterativa, potrebbe essere necessario aumentare il tempo in modo da non pagare per l’aumento e la riduzione costanti dopo ogni modifica apportata allo script di training o all'ambiente.

I cluster AmlCompute possono essere configurati per requisiti mutevoli del carico di lavoro nel portale di Azure usando la classe dell’SDK AmlCompute, l’interfaccia della riga di comando di AmlCompute, con le API REST.

Configurare gli endpoint online gestiti per la scalabilità automatica

La scalabilità automatica usa automaticamente la quantità corretta di risorse per gestire il carico dell'applicazione. Gli endpoint online gestiti supportano la scalabilità automatica tramite l'integrazione con la funzionalità di scalabilità automatica di Monitoraggio di Azure.

La scalabilità automatica di Monitoraggio di Azure supporta un set completo di regole. È possibile configurare il ridimensionamento in base alle metriche (ad esempio impostando l'utilizzo della CPU >70%), in base alla pianificazione (ad esempio le definendo regole di ridimensionamento per le ore lavorative di punta) o a una combinazione di tali opzioni. Per altre informazioni, vedere Ridimensionare automaticamente gli endpoint online.

Impostare le quote per le risorse

AmlCompute è fornito con una configurazione delle quote (o limite). Questa quota si intende per famiglia di macchine virtuali (ad esempio serie Dv2, serie NCv3) e varia in base all'area per ogni sottoscrizione. Le sottoscrizioni iniziano con impostazioni predefinite ridotte per cominciare, ma è possibile usare questa impostazione per controllare la quantità di risorse di Amlcompute disponibili per l’attivazione nella propria sottoscrizione.

Configurare anche la quota a livello di area di lavoro per famiglia di macchine virtuali per ogni area di lavoro all'interno di una sottoscrizione. In questo modo è possibile avere un controllo più granulare dei costi in cui ogni area di lavoro potrebbe incorrere e limitare determinate famiglie di macchine virtuali.

Per impostare le quote a livello di area di lavoro, iniziare nel portale di Azure. Selezionare un'area di lavoro nella propria sottoscrizione, quindi selezionare Utilizzi + quote nel riquadro a sinistra. Selezionare, quindi, la scheda Configura quote per visualizzare le quote. Per impostare la quota occorrono privilegi nell'ambito della sottoscrizione, in quanto è un'impostazione che influisce su più aree di lavoro.

Impostare i criteri di terminazione automatica dei processi

In alcuni casi è necessario configurare le esecuzioni di training per limitarne la durata o terminarle in anticipo, ad esempio quando si usa il Machine Learning automatizzato o l'ottimizzazione degli iperparametri predefinita di Azure Machine Learning.

Esistono alcune opzioni tra cui scegliere:

  • Definire un parametro denominato max_run_duration_seconds in RunConfiguration per controllare la durata massima di un'esecuzione nell'ambiente di calcolo scelto (ambiente di calcolo su cloud locale o remoto).
  • Per l’ottimizzazione degli iperparametri, definire criteri di terminazione anticipata da criteri Bandit, criteri di arresto Median o criteri di selezione Truncation. Per controllare ulteriormente gli sweep degli iperparametri, usare parametri come max_total_runs o max_duration_minutes.
  • Per il Machine Learning automatizzato, impostare criteri di terminazione simili usando il flag enable_early_stopping. Usare anche proprietà come iteration_timeout_minutes e experiment_timeout_minutes per controllare la durata massima di un processo o per l'intero esperimento.

Usare macchine virtuali con priorità bassa

Azure consente di usare la capacità inutilizzata in eccesso come macchine virtuali con priorità bassa tra set di scalabilità di macchine virtuali, Batch e il servizio Machine Learning. Queste allocazioni sono pre-svuotabili ma hanno un prezzo ridotto rispetto alle macchine virtuali dedicate. In generale, è consigliabile usare macchine virtuali con priorità bassa per carichi di lavoro Batch. È consigliabile usarle anche nei casi in cui le interruzioni sono recuperabili tramite nuovi invii (per l'inferenza batch) o tramite riavvii (per il training di Deep Learning con checkpoint).

Le macchine virtuali con priorità bassa hanno una singola quota separata dal valore della quota dedicata, ossia per famiglia di macchine virtuali. Altre informazioni sulle quote di AmlCompute.

Le macchine virtuali con priorità bassa non funzionano per istanze di ambiente di calcolo, perché devono supportare esperienze di notebook interattive.

Pianificare istanze di ambiente di calcolo

Quando si crea un'istanza di ambiente di calcolo, la macchina virtuale rimane attiva in modo che sia disponibile per il lavoro.

Usare le istanze riservate

Un altro modo per risparmiare sulle risorse di calcolo consiste nell'istanza di macchina virtuale riservata di Azure. Con questa offerta l’impegno può durare un anno o tre anni. Questi sconti variano fino al 72% dei prezzi con pagamento in base al consumo e vengono applicati direttamente nella fattura mensile di Azure.

L’ambiente di calcolo di Azure Machine Learning supporta istanze riservate intrinsecamente. Se si acquista un'istanza riservata di un anno o tre anni, verrà applicato automaticamente lo sconto per l’ambiente di calcolo gestito di Azure Machine Learning.

Parallelizzare il training

Uno dei modi principali per ottimizzare i costi e le prestazioni consiste nella parallelizzazione del carico di lavoro con l’ausilio di un componente parallelo in Azure Machine Learning. Un componente parallelo consente di usare molti nodi più piccoli per l’esecuzione di attività in parallelo, in modo da consentire il ridimensionamento orizzontale. Per la parallelizzazione esiste un sovraccarico. A seconda del carico di lavoro e del grado di parallelismo che è possibile ottenere, questa opzione potrebbe anche non essere conveniente. Per altri dettagli, seguire questo collegamento per la documentazione di ParallelComponent.

Impostare criteri di conservazione ed eliminazione dei dati

Ogni volta che viene eseguita una pipeline, i set di dati intermedi vengono generati in ogni passaggio. Col tempo, questi set di dati intermedi occupano spazio nel proprio account di archiviazione. Valutare la possibilità di configurare i criteri per gestire i dati durante tutto il ciclo di vita per l’archiviazione e l’eliminazione dei set di dati. Per altre informazioni, vedere Ottimizzare i costi automatizzando i livelli di accesso di Archiviazione BLOB di Azure.

Distribuire le risorse nella stessa area

Gli ambienti di calcolo collocati in aree diverse possono riscontrare latenza di rete e aumentare i costi di trasferimento dei dati. Sui costi di rete di Azure incide la larghezza di banda in uscita dai data center di Azure. Per ridurre i costi di rete, distribuire tutte le proprie risorse nell'area. Il provisioning dell'area di lavoro di Azure Machine Learning e delle risorse dipendenti nella stessa area dei dati può contribuire a ridurre i costi e migliorare le prestazioni.

Per scenari cloud ibridi come quelli che usano ExpressRoute, a volte può essere più conveniente spostare tutte le risorse in Azure per ottimizzare i costi e la latenza di rete.

Eliminare distribuzioni non riuscite se vengono create le risorse di calcolo

L'endpoint online gestito usa macchine virtuali per le distribuzioni. Se è stata inviata una richiesta per creare una distribuzione online e non è riuscita, è possibile che abbia superato la fase durante la creazione del calcolo. In tal caso, la distribuzione non riuscita comporta addebiti. Se è stato completato il debug o l'analisi per l'errore, è possibile eliminare le distribuzioni non riuscite per risparmiare sui costi.

Passaggi successivi