Le ultime tendenze in materia di AI, proposte da esperti
Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.
Nel machine learning, l'inferenza AI è l'atto di utilizzare un modello AI addestrato per fare previsioni su nuovi dati. In sostanza, qualsiasi istanza di un modello di intelligenza artificiale che effettivamente genera output o prende decisioni in un'applicazione AI reale costituisce inferenza AI. In parole povere, l'inferenza AI consiste in un modello addestrato che applica i pattern appresi dai suoi dati di addestramento per dedurre l'output corretto per un dato input.
Tutto il machine learning, dai modelli di rilevamento e-mail ai sistemi di navigazione che sono alla base delle auto a guida autonoma fino all'AI generativa, si riduce al riconoscimento di pattern. I modelli vengono "addestrati" per funzionare correttamente su un set di dati di compiti campione o punti dati. Durante l'addestramento del modello, i parametri (e gli iperparametri) del modello vengono regolati finché il processo decisionale del modello non si adatta ai pattern dei dati di addestramento. Il presupposto fondamentale del machine learning è che se i dati di addestramento sono sufficientemente pertinenti a ciò che il modello vedrà negli scenari del mondo reale, farà previsioni accurate in quei casi d'uso reali.
Mentre gran parte del gergo dell'AI è altamente tecnico, "inferenza AI" è in realtà un termine letterale e intuitivo.
Un modello di previsione del mercato azionario non sa come cambierà il prezzo di una determinata azione, ma deduce, in base al confronto tra la storia di quell'azione e le tendenze passate dei movimenti dei prezzi azionari, cosa accadrà in futuro.
Un modello di rilevamento dello spam non sa se una determinata e-mail è spam, ma deduce, in base a quanto quell'e-mail assomiglia agli esempi di spam che ha visto durante l'addestramento, se si tratta di spam o meno.
Un modello linguistico di grandi dimensioni (LLM) deduce iterativamente quale sarà la prossima parola (o meglio, il token) basandosi sui modelli linguistici dei milioni di campioni di testo su cui è stato addestrato.
I social network deducono con quali contenuti hai maggiori probabilità di interagire in base ai contenuti con cui tu e le persone simili a te avete interagito in precedenza.
Mentre l'obiettivo dell'addestramento dell'AI è il raggiungimento dell'accuratezza e dell'allineamento del modello, l'obiettivo dell'inferenza AI è l'impiego del modello addestrato nel modo più efficiente e conveniente possibile. Lo stesso modello AI potrebbe funzionare in modo diverso in diversi framework.
Non esiste un'unica configurazione di inferenza AI "ottimale". Esistono molti modi diversi per suddividere i workload, diversi tipi di hardware (e algoritmi computazionali con cui utilizzarli) e diversi ambienti in cui accedere a tale hardware. La configurazione ideale per un determinato scenario dipenderà dalla natura del caso d'uso e del workload. Per le aziende, la sfida è di solito quella di identificare un approccio di inferenza che bilanci il desiderio di bassa latenza con la necessità di essere scalabile ed efficiente dal punto di vista dei costi.
Sia l'inferenza AI che l'addestramento AI prevedono che un modello faccia previsioni sui dati di input. La differenza risiede nei rispettivi scopi e, nel caso dell'addestramento dell'AI, nei passi aggiuntivi intrapresi per raggiungere tale scopo.
L'addestramento è la fase di "apprendimento" del machine learning. Nell'addestramento dei modelli, un modello di machine learning fa previsioni su una serie di esempi di dati di addestramento. Nell'apprendimento supervisionato, una funzione di perdita calcola l'errore medio (o "perdita") di ogni previsione, e viene utilizzato un algoritmo di ottimizzazione per aggiornare i parametri del modello in modo da ridurre la perdita. Questo processo viene ripetuto iterativamente finché la perdita non è stata minimizzata a un livello accettabile. L'apprendimento per rinforzo funziona in modo simile, anche se con l'obiettivo di massimizzare una funzione di ricompensa invece di ridurre al minimo una funzione di perdita.
In breve, l'addestramento dell'AI in genere comporta sia un passaggio in avanti in cui il modello genera un output in risposta a ciascun input sia un passaggio all'indietro in cui vengono calcolati i potenziali miglioramenti dei parametri del modello. Questi aggiornamenti dei parametri comprendono la "conoscenza" di un modello di machine learning.
Nell'inferenza AI, il modello addestrato effettua poi previsioni su dati di input reali. L'inferenza AI funziona utilizzando ciò che ha "imparato" (cioè gli aggiornamenti dei parametri del modello effettuati per migliorare le prestazioni sui dati di addestramento) per dedurre l'output corretto per i nuovi dati di input. A differenza dell'addestramento dei modelli, l'inferenza comporta solo un passaggio in avanti.
Sebbene formazione e inferenza siano solitamente fasi separate e distinte, vale la pena notare che non sono del tutto mutuamente esclusive. Ad esempio, l'algoritmo di raccomandazione di una piattaforma social è già stato addestrato su grandi set di dati sul comportamento degli utenti prima che tu entri nella piattaforma, ed esegue un'inferenza ogni volta che ti fornisce suggerimenti di contenuti. Ma quel modello addestrato viene anche continuamente perfezionato sui tuoi comportamenti individuali, affinando i suoi suggerimenti in base a come interagisci personalmente con i contenuti.
Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.
"Tipo" è una parola ambigua: ci sono molti modi per eseguire l'inferenza AI e quindi molti modi per delinearne le varianti. Ma le due categorie fondamentali di strategie di inferenza dell'AI sono l'inferenza in batch e l'inferenza online.
Nell'inferenza online, un modello addestrato elabora immediatamente i dati di input, un input alla volta. L'inferenza online è appropriata per qualsiasi sistema di AI i cui output sono sensibili al tempo (come veicoli autonomi, offerte digitali o prezzi dinamici) o che richiedono interazioni in tempo reale con gli utenti (come chatbot o traduzione automatica).
L'inferenza online generalmente comporta costi e complessità maggiori (soprattutto per carichi di lavoro pesanti e le grandi reti neurali su cui si basano i modelli di deep learning) ma spesso è necessaria per qualsiasi caso d'uso reale che richiede decisioni in tempo reale. Un chatbot o un'auto a guida autonoma deve elaborare i dati in tempo reale per evitare di danneggiare l'esperienza dell'utente. L'utilità di un sistema AI che prevede se un determinato richiedente debba ricevere un prestito non è realmente influenzata da un leggero ritardo tra input e output, ma in un veicolo autonomo qualche millisecondo in più di ritardo potrebbe mettere in pericolo i passeggeri.
Nell'inferenza in batch, un modello addestrato elabora un grande volume di input in modo asincrono in gruppi (o appunto "batch"). Ogni batch è in genere pianificata per un determinato orario: ad esempio, un'azienda potrebbe utilizzare l'inferenza in batch per eseguire report notturni su tutte le attività di quel giorno. Ciò consente una maggiore flessibilità ed efficienza, rendendo l'inferenza in batch l'opzione più conveniente. Tuttavia, è pratica solo in situazioni in cui la tempestività non è importante.
L'inferenza in batch consente anche un uso più efficiente dell'hardware. Ad esempio, le GPU contengono migliaia di unità di elaborazione (o "core"), ognuna delle quali può eseguire calcoli simultaneamente in parallelo. Eseguire un'inferenza per un singolo input che non coinvolge tutti quei core è come lasciare posti vuoti su un autobus: potrebbe essere necessario in situazioni urgenti, ma non è un uso ottimale delle risorse. L'inferenza in batch ti permette di eseguire l'inferenza solo quando l'hardware è "sfruttato appieno", per così dire.
Inoltre, i parametri del modello, che per i modelli di deep learning spesso comprendono letteralmente miliardi di pesi del modello, devono essere caricati nella memoria di sistema ogni volta che viene eseguita un'inferenza. Ciò comporta consumo energetico e costi. L'inferenza in batch riduce il numero di volte in cui i pesi devono essere caricati nella RAM, distribuendo il costo sull'intera batch.
Il micro-batching è un approccio intermedio tra l'inferenza online e quella in batch: come suggerisce il nome, consiste nell'esecuzione dell'inferenza in piccole batch.
Non esiste una dimensione della batch chiara e quantificabile che differenzia il "micro-batching" dal "batching". Al contrario, i due approcci si differenziano principalmente per i loro obiettivi: il micro-batching mira ad aumentare la velocità del modello preservando (per lo più) la velocità del modello, mentre l'inferenza in batch convenzionale mira a massimizzare l'efficienza e generalmente non tiene conto della latenza. Nell'inferenza in batch, un input può essere elaborato minuti o addirittura ore dopo averlo ricevuto, ma il micro-batching di solito punta a un ritardo di pochi millisecondi.
Forse l'applicazione più importante del micro-batching è nell'inferenza LLM basata su cloud tramite importanti piattaforme come Claude di Anthropic o ChatGPT di OpenAI. Quando migliaia di utenti inviano un chatbot contemporaneamente, questi servizi di solito elaborano più prompt in parallelo, aumentando l'efficienza senza un ritardo percepibile per i singoli utenti finali.
Una delle considerazioni più importanti nella progettazione di un ecosistema AI è decidere dove verrà effettivamente eseguito il workload di inferenza. In altre parole, dove si trova l'hardware e come potrai accedervi.
Gli ambienti di distribuzione generalmente rientrano in una di quattro categorie, ognuna delle quali ha i propri punti di forza e svantaggi.
On-premise
Cloud
Implementazione periferica
Sul dispositivo
Nella distribuzione on-premise (o "on-prem"), i modelli AI vengono eseguiti su hardware fisico di proprietà dell'utente (o della sua organizzazione), che ne cura la manutenzione.
La distribuzione on-premise offre il massimo controllo possibile sui workload dell'AI, poiché tu stesso hai autonomia su come e quando i dati vengono elaborati e le risorse computazionali allocate. Ciò risulta particolarmente vantaggioso in settori altamente regolamentati come la sanità, la finanza, il governo e il diritto, dove il rispetto dei requisiti in materia di privacy dei dati e sicurezza dei dati è obbligatorio.
Questo controllo comporta un compromesso in termini di costi e manodopera. La distribuzione on-premise, in particolare con l'hardware necessario per workload a livello aziendale e modelli di grandi dimensioni tipicamente associati all'IA generativa, comporta un importante investimento iniziale. E comporta anche la necessità di professionisti IT dedicati per gestire tali server.
Nella distribuzione cloud, i modelli vengono eseguiti su server remoti gestiti da fornitori terzi (come IBM) in un data center di grandi dimensioni. Ciò consente a un'organizzazione di utilizzare un hardware AI ad alta potenza senza l'ingente investimento iniziale richiesto per l'acquisto o il lavoro continuo per la manutenzione. Per questo motivo, l'implementazione nel cloud rappresenta in genere il percorso più rapido verso la scalabilità, soprattutto nelle circostanze in cui è necessario scalare rapidamente le risorse computazionali per soddisfare un picco di domanda.
Questa flessibilità e scalabilità comporta un compromesso in termini di sovranità dei dati e, in alcuni casi, di latenza e costi a lungo termine. I dati potrebbero viaggiare avanti e indietro dai server cloud, il che potrebbe avere un effetto negativo sulla velocità di inferenza (anche se spesso questo viene annullato dall'hardware più potente di cui dispongono solitamente i provider di cloud ). Questo introduce anche complicazioni teoriche riguardo alla provenienza dei dati, poiché i dati sono esposti a più entità di quante ne avrebbero in scenari on-premise.
L'implementazione edge si riferisce all'utilizzo di risorse computazionali fisicamente vicine alla fonte dati, come tramite dispositivi Internet of Things (IoT) e reti locali.
In linea generale, la'implementazione edge può essere intesa come qualcosa di simile a un "cloud on-premise". È particolarmente utile quando i dati devono essere aggregati o distribuiti su diversi dispositivi, come sensori su una catena di assemblaggio in fabbrica o dispositivi di monitoraggio in ospedale, e processati quasi in tempo reale. In tali scenari, l'esecuzione di inferenze tramite dispositivi all'edge di una rete locale consente un'elaborazione più rapida e una maggiore privacy rispetto a quanto sarebbe possibile con la distribuzione del cloud.
Questi vantaggi sono, in parte, mitigati dal fatto che l'edge computing di solito utilizza hardware relativamente limitato rispetto a quello disponibile dai provider di cloud. E man mano che le reti locali diventano più grandi, la gestione degli aggiornamenti su centinaia o migliaia di "nodi edge" diventa sempre più complessa.
La distribuzione su dispositivo è la più semplice: l'inferenza AI viene eseguita direttamente sul dispositivo dell'utente finale, come un laptop o uno smartphone.
La distribuzione su dispositivo è semplice e sicura, e teoricamente garantisce la massima privacy possibile per l'utente. Naturalmente, è limitata dalla capacità di calcolo del dispositivo stesso: la potenza di calcolo disponibile in uno smartphone, o anche in un computer di fascia consumer ad alte prestazioni, è generalmente ben inferiore a quella dell'hardware specializzato. In particolare sugli smartphone, l'inferenza on-device è tipicamente limitata a compiti specifici, come i filtri della fotocamera, il riconoscimento facciale o lo speech to text.
L'inferenza AI è un processo complesso che prevede l'addestramento di un modello AI su set di dati appropriati fino a quando non è in grado di dedurre risposte accurate.
Si tratta di un processo ad alta intensità di calcolo, che richiede hardware e software specializzati. Prima di esaminare il processo di addestramento dei modelli AI per l'inferenza AI, esploriamo alcuni degli hardware specializzati che lo consentono:
Le GPU, come suggerisce il nome, sono state originariamente progettate per il rendering della grafica (ad esempio nei videogiochi). Renderizzare grafica 3D, come eseguire inferenze per reti neurali profonde, richiede moltiplicazioni di matrici di grandi dimensioni, ad esempio per calcolare simultaneamente gli effetti di luce e texture su migliaia di pixel.
La capacità di utilizzare quel parallelismo per la matematica (anziché per la grafica) ha fatto un enorme passo avanti quando NVIDIA ha introdotto Compute Unified Device Architecture (CUDA), una piattaforma software, API e modello di programmazione che consente agli sviluppatori di scrivere codice che viene eseguito direttamente su migliaia di core della GPU. Oggi, le GPU rimangono l'hardware standard del settore per l'addestramento e l'esecuzione di modelli di deep learning.
Le TPU sono chip personalizzati proprietari di Google, costruiti specificamente per le reti neurali. Mentre le GPU sono processori paralleli flessibili e generici, le TPU sono progettate esclusivamente per la matematica matriciale ad alta velocità. Sebbene siano meno versatili delle GPU, le TPU offrono maggiore velocità ed efficienza energetica quando si elaborano enormi quantità di dati di reti neurali.
Le unità di elaborazione neurale (NPU), come le TPU, sono state progettate specificamente per elaborare i calcoli delle reti neurali. Vengono tipicamente utilizzate su smartphone e altri dispositivi mobili, poiché le loro funzionalità più specifiche riducono il consumo energetico rispetto a quello delle GPU.
Gli array di gate programmabili sul campo (FPGA) sono un tipo di circuito integrato configurabile che può essere programmato (e riprogrammato) per soddisfare le esigenze di applicazioni specifiche, comprese le operazioni di intelligenza artificiale. Sebbene generalmente offrano meno potenza di calcolo rispetto alle GPU di alto livello, gli FPGA sono vantaggiosi quando è necessaria una personalizzazione estrema.
Gli ASICS, a differenza degli FPGA, non possono essere personalizzati o riconfigurati. Sono esplicitamente progettati per svolgere un singolo compito con la massima efficienza. I TPU di Google, ad esempio, sono ASIC progettati esclusivamente per eseguire operazioni di rete neurale tramite TensorFlow, PyTorch e JAX.
I workload di addestramento o inferenza di un modello AI generativa di grandi dimensioni spesso superano la capacità anche dei più potenti acceleratori hardware. Quando il tuo workload è troppo grande per una singola GPU, può essere distribuito su più processori utilizzando una o più tecniche di parallelismo per dividere e distribuire il lavoro. Esistono molti paradigmi di parallelismo, ma i più importanti sono il parallelismo dei dati, il parallelismo tensoriale e il parallelismo a pipeline.
Gli sviluppatori possono spesso utilizzare framework open source come vLLM per ottimizzare e semplificare il processo di distribuzione dell'inferenza su più dispositivi.
Nel parallelismo dei dati, una replica del modello completo viene copiata su ciascun processore. Il set di dati di input viene quindi suddiviso in più batch (o "shard") e ogni copia del modello, ovvero ogni processore, gestisce una singola batch. Sebbene questo sia forse il mezzo più semplice di parallelismo, richiede che ogni processore sia abbastanza grande da adattare tutti i parametri del modello in memoria. Quando si tratta di LLM più grandi e modelli linguistici visivi (VLM) con decine o centinaia di miliardi di parametri, ciò è raramente possibile. In questi casi, è necessario utilizzare altri paradigmi di parallelismo.
Nel parallelismo delle pipeline, diversi strati di una rete neurale sono assegnati a diverse GPU. Ad esempio, una rete neurale a 12 livelli potrebbe essere suddivisa in 3 GPU, con la prima GPU a cui vengono assegnati i primi 4 livelli, la seconda GPU che gestisce i 4 livelli intermedi e la terza GPU che gestisce gli ultimi 4 livelli GPU. I dati vengono poi elaborati in sequenza: l'output della prima GPU viene passato alla seconda GPU, l'output della seconda GPU alla terza e la terza GPU calcola l'output finale del modello.
Un parallelismo efficiente della pipeline richiede in genere un mini-batching, in modo che ogni GPU elabori sempre i dati simultaneamente, anziché rimanere inattiva fino a quando non riceve i dati dalla GPU precedente nella sequenza. Nel nostro esempio base del paragrafo precedente, la prima GPU potrebbe iniziare a elaborare una nuova mini-batch di dati di input immediatamente dopo aver passato l'output dalla prima mini-batch alla seconda GPU.
Naturalmente, un sistema che utilizza il parallelismo delle pipeline richiede un certo tempo di "avvio" per raggiungere il pieno utilizzo dei dispositivi. Nel nostro esempio, la seconda GPU non può iniziare a lavorare finché non riceve i dati dalla prima; la terza GPU non può iniziare a lavorare finché le prime due GPU non hanno elaborato l'intera mini-batch; la quarta GPU non può iniziare finché la terza non ha finito.
Per i modelli molto grandi, anche un singolo livello potrebbe essere troppo grande per essere montato su un solo processore. Nel parallelismo tensoriale, gli stessi livelli sono suddivisi, con ogni processore che riceve una porzione del tensore dei pesi del modello. Gli embedding vettoriali, cioè la rappresentazione tensoriale, dei dati di input viene anch'essa suddiviso, con ogni processore che riceve un sottoinsieme corrispondente dei dati di input.
Il parallelismo tensoriale riduce significativamente le richieste di memoria su ciascun dispositivo, poiché ogni processore deve caricare tensori più piccoli in memoria rispetto ad altri paradigmi di parallelismo. Questo comporta un certo compromesso in termini di complessità, in quanto è necessaria una maggiore quantità di comunicazione all'interno del dispositivo e di passaggi matematici per intrecciare gli output di ciascuna GPU.
Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.
1 "Why Companies Are Vastly Underprepared For The Risks Posed By AI", Forbes, 15 giugno 2023
2 “Onshoring Semiconductor Production: National Security Versus Economic Efficiency”, Council on Foreign Relations, aprile 2024