Gestire e ottimizzare i costi in Azure Machine Learning

Questo articolo illustra come gestire e ottimizzare i costi durante il training e la distribuzione di modelli di apprendimento automatico in Azure Machine Learning.

Usare i suggerimenti seguenti per gestire e ottimizzare i costi delle risorse di calcolo.

  • Usare il cluster di elaborazione di Azure Machine Learning
  • 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
  • Parallelizzare il training
  • Impostare criteri di conservazione ed eliminazione dei dati
  • Distribuire le risorse nella stessa area
  • Eliminare distribuzioni non riuscite

Per informazioni sulla pianificazione e sul monitoraggio dei costi, vedere 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 in anteprima viene fornita senza un contratto di servizio. Non è consigliabile usare versioni in anteprima per 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.

Usare il cluster di elaborazione di Azure Machine Learning

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. Per altre informazioni, vedere Pianificazione della gestione dei costi per 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.

È possibile configurare i cluster AmlCompute per requisiti del carico di lavoro mutevoli usando:

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. Per altre informazioni, vedere Endpoint e distribuzioni online per l'inferenza in tempo reale.

La scalabilità automatica di Monitoraggio di Azure supporta un set completo di regole:

  • Scalabilità basata sulle metriche, ad esempio utilizzo CPU >70%
  • Scalabilità basata sulla pianificazione, ad esempio regole di ridimensionamento per le ore lavorative di punta
  • Combinazione dei due

Per altre informazioni, vedere Ridimensionamento automatico degli endpoint online.

Impostare le quote per le risorse

AmlCompute è fornito con una configurazione delle quote (o limite). Questa quota è per famiglia di VM, ad esempio serie Dv2 o serie NCv3. La quota varia in base all'area per ogni sottoscrizione. Le sottoscrizioni iniziano con impostazioni predefinite ridotte. Usare questa impostazione per controllare la quantità di risorse di AmlCompute disponibili per l’attivazione nella propria sottoscrizione. Per altre informazioni, vedere Ambiente di calcolo di Azure Machine Learning.

È possibile configurare anche la quota a livello di area di lavoro per famiglia di VM per ogni area di lavoro all'interno di una sottoscrizione. Questo approccio offre un controllo più granulare dei costi in cui ogni area di lavoro potrebbe incorrere e limita determinate famiglie di VM. Per altre informazioni, vedere Quote a livello di area di lavoro.

Per impostare quote a livello di area di lavoro:

  1. Aprire il portale di Azure e selezionare qualsiasi area di lavoro nella sottoscrizione.

  2. Selezionare Supporto + Risoluzione dei problemi>Utilizzo + Quote nel menu dell'area di lavoro.

  3. Selezionare Visualizza quota per visualizzare le quote in Azure Machine Learning Studio.

  4. Da questa pagina è possibile trovare la sottoscrizione e l'area per impostare le quote.

    Siccome questa impostazione influisce su più aree di lavoro, sono necessari privilegi nell'ambito della sottoscrizione per impostare la quota.

Impostare criteri di terminazione del processo

In alcuni casi è necessario configurare le esecuzioni di training per limitarne la durata o terminarle in anticipo, Ad esempio, quando si usa l'apprendimento automatico 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, locale o su cloud 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 altre informazioni, vedere Specificare criteri di terminazione anticipata.
  • Per l'apprendimento automatico automatizzato, impostare criteri di terminazione simili usando il flag enable_early_stopping. È anche possibile usare proprietà come iteration_timeout_minutes e experiment_timeout_minutes per controllare la durata massima di un processo o per l'intero esperimento. Per altre informazioni, vedere Criteri di uscita.

Usare macchine virtuali a bassa priorità

Azure consente di usare la capacità inutilizzata in eccesso come VM a bassa priorità 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 VM virtuali dedicate. In generale, è consigliabile usare VM a bassa priorità per carichi di lavoro batch. È consigliabile usarle anche nei casi in cui le interruzioni sono recuperabili tramite nuovi invii per 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. Per altre informazioni sulle quote AmlCompute, vedere Gestire e aumentare le quote.

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.

  • Abilitare l’arresto per inattività (anteprima) per risparmiare sui costi quando la VM rimane inattiva per un periodo di tempo specificato. Vedere Configurare l'arresto per inattività.
  • Configurare una pianificazione per avviare e arrestare automaticamente l'istanza di ambiente di calcolo (anteprima) per risparmiare sui costi quando non si usa. Vedere Pianificare l'avvio e l'arresto automatici.

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 dell'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, questo approccio potrebbe essere adeguato. Per altre informazioni, vedere Classe ParallelComponent.

Impostare criteri di conservazione ed eliminazione dei dati

Ogni volta che viene eseguita una pipeline, in ogni passaggio vengono generati set di dati intermedi. 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 informazioni sulla procedura, vedere Ottimizzare i costi gestendo automaticamente il ciclo di vita dei dati.

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 Azure 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

Gli endpoint online gestiti usano VM per le distribuzioni. Se è stata inviata una richiesta di creazione di una distribuzione online e l'esito di tale richiesta è negativo, potrebbe essere stata superata la fase di creazione dell'ambiente di calcolo. In tal caso, la distribuzione non riuscita comporterà degli addebiti. Quando si termina il debug o l'indagine per tale errore, eliminare le distribuzioni non riuscite per risparmiare sui costi.