Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Ottimizzare i costi ML con Azure Machine Learning

By Joshua FoxAug 22, 20259 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Scalare le iniziative di Machine Learning (ML) può diventare costoso. Questo articolo illustra le principali sfide finanziarie del ML e propone strategie concrete basate su Azure Machine Learning (AML) per ottimizzare la spesa. Il messaggio chiave è semplice: gli interventi puntuali non bastano, serve un approccio sistematico per gestire i costi in modo efficace.

L'MLOps è costoso

Il costo elevato del ML: capire l'impatto sul budget

Diverse caratteristiche intrinseche dello sviluppo e della messa in produzione dei modelli ML li rendono onerosi.

  • I modelli ML moderni, soprattutto nel deep learning, richiedono dataset enormi. Archiviare, spostare ed elaborare questi dati incide pesantemente sui costi.
  • Gli stessi algoritmi complessi, come le reti neurali profonde con numerosi layer o le tecniche di reinforcement learning particolarmente esigenti, richiedono una potenza di calcolo considerevole.
  • La dipendenza da hardware specializzato e poco disponibile, come le GPU, sia per il training sia per l'inferenza, fa lievitare i costi di compute.
  • Lo sviluppo ML è iterativo. Ripetere il training più volte con iperparametri, suddivisioni o dati diversi significa che ogni esecuzione sperimentale comporta ulteriori costi di compute. Un singolo sweep di hyperparameter tuning, ad esempio, può lanciare centinaia di job di training distinti.
  • Lo sviluppo ML è un processo complesso e a più fasi: ingestione dei dati, pulizia, trasformazione, training, hypertuning, predizione e altro ancora. Il processo Machine Learning Operations (MLOps) aumenta il rischio di ripetizioni e operazioni superflue che fanno crescere i costi.

Spesso i clienti mi chiedono: "Quanto costa addestrare un modello ML?". Rispondo che questi fattori possono spingere i costi a livelli arbitrariamente alti: singole sessioni di training di LLM hanno superato i 150 milioni di dollari, con un costo complessivo di addestramento dell'ordine dei miliardi. Lei non spenderà certo cifre simili, ma deve sapere che non esiste un tetto massimo.

AML per l'ottimizzazione dei costi

Anche se i punti trattati qui valgono per qualsiasi sistema MLOps, AML in sé aiuta a risparmiare. La piattaforma cloud-based di Microsoft per il ML è pensata per snellire l'intero ciclo di vita dei modelli, dalla costruzione e dal training fino al deployment e alla gestione continuativa. I servizi AML possono essere usati singolarmente tramite interfacce REST, ma si integrano in profondità tra loro e con l'ecosistema Azure più ampio. Grazie a design collaudati orientati all'efficienza, i servizi AML permettono di realizzare le sue soluzioni ML a costi inferiori rispetto a un approccio fai-da-te, anche tenendo conto del prezzo dei servizi stessi.

Lascio fuori da questa discussione i modelli pre-costruiti come i Large Language Model (LLM) e gli Azure Cognitive Services per Vision o Translation. Offrono meno "manopole" granulari per il tuning e richiedono quindi un approccio diverso all'ottimizzazione dei costi.

Le voci di costo dell'infrastruttura

Per gestire i costi in modo efficace è fondamentale capire dove finisce davvero il budget. Le principali voci, in ordine all'incirca decrescente, sono:

  1. Compute: di norma la voce più consistente, comprende il calcolo (CPU, GPU) e la memoria consumati durante il training dei modelli e per servire le predizioni.
  2. Storage: Azure Blob Storage è ampiamente utilizzato per dataset, artefatti dei modelli e immagini container in Azure Container Registry. Il tier di storage scelto, le opzioni di ridondanza e il volume complessivo dei dati incidono sui costi.
  3. Networking: sebbene i processi principali di training e prediction non dovrebbero generare costi di rete elevati, le spese possono accumularsi a causa di egress dei dati, VNet peering, connessioni ExpressRoute e utilizzo del NAT Gateway. Trasferire terabyte di immagini dallo storage on-premises ad Azure Blob Storage per il training, oppure scambi frequenti di dati tra microservizi in un workflow MLOps, può generare costi di networking significativi.
  4. Servizi: include i costi delle API SaaS di Azure come Azure AI Search, Document Intelligence o Bot Service:

Principi guida per l'ottimizzazione dei costi ML

Adottare una mentalità FinOps significa fare propri alcuni principi fondamentali.

Il primo, in assoluto, è evitare gli sprechi. Le scelte architetturali, ad esempio quale servizio utilizzare, sono importanti, ma i costi evitabili più rilevanti nascono dall'uso improprio: usare le GPU dove basterebbero le CPU per il training, o conservare grandi quantità di dati inutilizzati in tier costosi di Blob Storage.

In secondo luogo, standardizzi l'architettura. Significa utilizzare i servizi AML, come i Compute Targets nei Workspace AML per il training, anziché gestire flotte di Azure Virtual Machines. Il team Azure ha realizzato sistemi efficienti che fanno risparmiare: con il training AML, ad esempio, paga solo il compute effettivamente necessario all'addestramento, anziché VM in esecuzione continua (a meno di gestire da sé l'autoscaling). Significa anche adottare workflow standard, come il pattern di Continuous Training (CT), in cui nuovo codice o nuovi dati attivano automaticamente l'esecuzione di una AML Pipeline. In questo modo ingestione dati, training, verifica e deployment avvengono esattamente quando servono, senza esecuzioni superflue né attese tali da rendere i processi inefficienti.

In terzo luogo, non ecceda nell'ottimizzazione, cadendo nell'"illusione dell'efficienza". Comprimere in modo aggressivo i dati di training per risparmiare sullo storage, ad esempio, può paradossalmente far crescere i costi complessivi a causa del tempo di CPU molto maggiore speso per la decompressione a ogni epoca di training.

Non dimentichi che il tempo dei suoi engineer ha un costo: eviti di dedicare sforzi eccessivi a micro-ottimizzazioni. Ne valorizzi il tempo dando priorità ad architetture pulite e manutenibili rispetto a ottimizzazioni puntuali: oggi non può prevedere le esigenze future, ma quando arriverà il momento di tagliare i costi avrà bisogno di un'architettura che renda fattibile dedicare ore di lavoro al tema.

Infine, ricordi di iterare le ottimizzazioni, partendo dalle voci di costo maggiori. Non è possibile implementarle tutte in un solo ciclo, conviene quindi cogliere i frutti più a portata di mano e poi tornare a verificare dove si concentrano i costi più alti.

Sfruttare al meglio gli strumenti di Cost Analytics

Non si concentri sulla prima anomalia di costo che le salta all'occhio: il tempo speso a risolverla potrebbe essere meglio investito altrove.

DoiT Cloud Intelligence (console.doit.com) mette a disposizione degli utenti Azure strumenti potenti per comprendere e gestire la spesa cloud. Può creare report di billing e dashboard, impostare budget e alert, ricevere segnalazioni sulle anomalie di costo e raccomandazioni proattive di risparmio. Un uso costante di questi strumenti è la chiave per individuare i trend, far emergere gli outlier e concentrarsi sulle maggiori opportunità di saving.

Ottimizzare i costi di training

La fase di training è spesso quella che richiede più risorse e, di conseguenza, la più costosa del ciclo di vita ML. Consuma grandi quantità di dati e potenza di calcolo e richiede numerosi cicli iterativi.

Right-sizing delle macchine: monitorando l'utilizzo delle risorse (CPU, GPU, memoria) con Azure Monitor durante il training, può prendere decisioni informate. Se una GPU di fascia alta (come una serie ND H100 v5) è costantemente sottoutilizzata, ha senso passare a un'opzione più conveniente (ad esempio una VM serie NCasT4_v3).

Usi le GPU solo quando servono davvero. Se il modello non beneficia dell'accelerazione GPU, scegliere VM ottimizzate per CPU (come la serie F) è più economico. Quando usa le GPU, si assicuri che il codice sia pienamente ottimizzato per sfruttarne le capacità, ad esempio con batch size adeguati e pipeline di data loading efficienti.

Le Azure Spot Virtual Machines (Low Priority VM) garantiscono ottimi risparmi. Per i job di training fault-tolerant (e i suoi sistemi dovrebbero esserlo!), le Spot VM possono produrre risparmi fino al 90% rispetto al pay-as-you-go. Sono particolarmente adatte, ad esempio, ai task di hyperparameter tuning con molti trial indipendenti, dove la prelazione di un singolo trial non compromette l'intero processo.

Ambienti di sviluppo

Per la fase di sviluppo, i Jupyter Notebook o Visual Studio Code all'interno di un workspace AML offrono workstation gestite e cloud-based. Si paga solo il tempo di effettiva esecuzione grazie alle policy di auto-shutdown, a differenza di un laptop potente da ammortizzare 24x7 o di una VM sempre accesa fino a quando ci si ricorda di spegnerla. Per risparmiare ancora di più, sposti altrove i carichi pesanti: avere risorse potenti nell'ambiente di sviluppo significa pagare un set fisso di risorse per l'intera giornata lavorativa. Anziché eseguire il training nel notebook, ad esempio, sottoponga i job di training estesi e di lunga durata come job AML, che gireranno su Compute Cluster con autoscaling ed efficienti dal punto di vista dei costi.

Data Storage

Per l'MLOps su Azure, Azure Blob Storage è lo standard per l'object storage. Ho visto progetti partire da un semplice disco locale e passare ai Managed Disk, oppure nascere su una rete locale e migrare ad Azure Files, ma sono soluzioni costose: Blob Storage è lo standard per il ML ed è molto meno caro. Scegliere i giusti access tier (Hot, Cool, Archive) in base alla frequenza di accesso è essenziale. L'implementazione di policy di lifecycle management permette di automatizzare le transizioni. Implementare policy di lifecycle management consente di automatizzare le transizioni. Se si addestra solo su dati nuovi, ad esempio, archivi o elimini in automatico i dati più vecchi dopo un mese.

Prediction

Una volta addestrati, i modelli vengono distribuiti per servire le predizioni (inferenza). Gli AML Endpoint permettono di risparmiare grazie all'autoscaling basato su metriche integrate. Come per il training, scegliere l'istanza più piccola tra quelle efficaci consente ulteriori risparmi. Il co-hosting dei modelli, o multi-model deployment, permette a più modelli di piccole dimensioni di condividere lo stesso endpoint, riducendo l'overhead per modello quando vengono richiamati spesso in sequenza o dalla stessa applicazione. Tuttavia, se un endpoint resta inutilizzato, l'autoscaling non lo porterà a zero risorse: deve spegnerlo lei. Se ha un'app di inferenza con traffico molto basso, si occupi di scalare gli endpoint a zero o, in alternativa, esegua il deployment su Azure Container Apps o Azure Functions.

Per casi d'uso non in tempo reale, i Batch Endpoint sono molto più economici delle predizioni online e offrono un throughput migliore, anche se con latenza più elevata. Ottimizzare la batch size e la configurazione del compute cluster sottostante consente i maggiori risparmi.

Monitoraggio: tenere d'occhio costi e prestazioni

I servizi AML hanno il monitoraggio integrato — un altro vantaggio rispetto al fai-da-te. Il monitoraggio fa scendere i costi assicurandole il massimo dalle risorse nella produzione di modelli di alta qualità.

Esistono due tipi di monitoraggio: l'Infrastructure Monitoring, principalmente tramite Azure Monitor, che traccia l'utilizzo delle risorse (CPU, GPU, memoria) oltre alla durata dei job di training, alla latenza delle predizioni e ai QPS.

Il Model Monitoring, invece, traccia metriche specifiche del modello, come l'F1-score. Dopo il deployment, questo monitoraggio aiuta a rilevare data drift, feature skew e bias di previsione, in modo da decidere quando vale davvero la pena spendere per un retraining. Un modello di fraud detection, ad esempio, può andare in drift e richiedere il retraining proprio quando gli importi delle transazioni cambiano gradualmente o quando si evolve il tipo di frode, ma non in altri casi.

Mettere tutto insieme: le AML Pipeline

Le AML Pipeline riducono i costi del ML legando in modo efficiente i vari step e tengono sotto controllo i costi di engineering automatizzando le attività ripetitive. Step di esecuzione superflui o accumuli di dati vengono evitati grazie a una solida orchestrazione per definire e gestire workflow ML complessi. Tra le funzionalità: parallelizzazione (elaborazione fan-out/fan-in, utile per l'hyperparameter tuning), esecuzione condizionale (eseguire step solo al verificarsi di determinate condizioni, come distribuire un modello solo se l'accuratezza supera una certa soglia) e caching o riuso dei componenti (se input e codice di uno step della pipeline non sono cambiati, viene riutilizzato l'output in cache, risparmiando compute).

Passi all'azione oggi stesso

Ottimizzare i costi ML è un percorso continuo, fatto di scelte tecnologiche intelligenti e di un solido processo FinOps. Sfruttando appieno le capacità di AML, attenendosi a principi architetturali solidi e mantenendo una vigilanza costante sulla spesa, può garantire che le sue iniziative ML producano il massimo valore di business senza mettere sotto pressione il budget. Inizi individuando le voci di costo più rilevanti e si impegni a implementare una o due delle strategie viste in questo articolo nel prossimo trimestre. Il suo conto economico la ringrazierà.