Pensateci un attimo: i modelli di intelligenza artificiale più recenti stanno raggiungendo livelli di prestazioni quasi… inquietanti. Strumenti come GitHub Co-Pilot, GPT-3 o DALL-E 2 riescono a produrre risultati che a volte sono sbalorditivi. Fantastico, no? Ma qui sorge una domanda spontanea: a cosa serve un modello così potente se non possiamo usarlo proprio dove è più necessario? Penso al campo, vicino al cliente, lì dove l’azione si svolge. Ecco, è qui che entra in gioco l’Intelligenza Artificiale Edge, e le sfide che porta con sé sono tutt’altro che banali.
I modelli AI moderni sono estremamente potenti ma richiedono risorse computazionali elevate, rendendo difficile la loro esecuzione su dispositivi edge con vincoli di potenza, memoria e velocità di elaborazione.
Quando parliamo di “edge”, ci riferiamo a dispositivi che, pur essendo connessi a internet, sono molto più vicini all’utente finale rispetto ai grandi server dei data center. È un termine ampio, che copre un mondo: dalla robotica ai droni, dai satelliti per il telerilevamento ai dispositivi di intrattenimento domestico come il vostro Amazon Echo, fino agli indossabili. Anche uno smartphone può rientrarci, ma non un laptop. La peculiarità è che ognuno di questi dispositivi ha vincoli specifici, legati alla gestione dell’energia, alla velocità di elaborazione e alla memoria.
Prendiamo un chip AI in un’auto a guida autonoma: la sua priorità è la bassa latenza, ovvero quanto velocemente il modello AI può produrre un risultato. Un piccolo drone commerciale, invece, ha un’autonomia di volo limitata a 20-30 minuti e può dedicare meno del 5% della sua energia all’elaborazione dati. E che tipo di lavori svolgono di solito questi dispositivi AI edge? Spesso si tratta di computer vision o elaborazione audio: riconoscimento facciale, previsione del traffico, o processamento del linguaggio naturale.
Il problema è che questi modelli sono diventati giganteschi. Nel 2012, AlexNet, un modello di computer vision all’avanguardia, aveva 61 milioni di pesi. Nel 2021, CoCa, il modello vincente di ImageNet, ne aveva ben 2,1 miliardi. Le reti neurali, per loro natura, consumano molta più energia rispetto alle alternative non-deep learning. Un modello di rilevamento di oggetti, ad esempio, può richiedere fino a 13.500 volte più energia di un semplice istogramma di gradienti orientati. Tanti pesi e strati non fanno che aumentare questo carico. C’è poi la memoria: per eseguire un’inferenza in tempi ragionevoli, dobbiamo recuperare e memorizzare molti valori nella memoria del dispositivo, un’azione incredibilmente energivora, fino a 200 volte più di una normale operazione di moltiplicazione-accumulo. Insomma, far entrare un modello in un contesto di Intelligenza Artificiale Edge richiede compromessi: il modello deve essere più piccolo e meno computazionalmente esigente, il che spesso si traduce in prestazioni inferiori.
Le soluzioni tradizionali basate sull’offload al cloud presentano problemi di latenza, stabilità della connessione e privacy, mentre l’approccio ibrido condivide le criticità di entrambi i modelli.
Molte delle prime aziende tecnologiche hanno provato a aggirare queste sfide formidabili scaricando tutto sul cloud, un po’ come fanno Siri o Amazon Echo. Il dispositivo diventa un “thin client”, un semplice ponte tra l’utente e il server. Questo approccio ha i suoi vantaggi, certo, ma introduce anche nuovi problemi: parliamo di latenza nella trasmissione dei dati, di stabilità della connessione e, naturalmente, di privacy.
Esiste anche un approccio intermedio, ibrido, in cui sia il dispositivo edge che il server condividono il carico computazionale. Immaginate l’hardware AI edge che fa una prima elaborazione dei dati grezzi e poi carica i risultati nel cloud per una conferma finale. Anche questo può funzionare, ma si percepisce che un approccio ibrido porta con sé gli svantaggi di entrambi i mondi: si devono mantenere modelli sia sull’edge che nell’ambiente server.
Le ottimizzazioni software per l’AI edge includono la creazione di modelli compatti da zero (es. SqueezeNet, MobileNet) e tecniche di post-processing come la quantizzazione dei pesi e il pruning per ridurre la complessità e l’ingombro di memoria.
Se non possiamo eseguire un modello AI moderno così com’è sull’hardware edge, possiamo fare qualcosa a livello software? Assolutamente sì! Questo campo è conosciuto come ottimizzazione dei modelli di reti neurali ed è diventato estremamente dinamico.
Il primo insieme di approcci si concentra sulla creazione di modelli compatti fin dalle fondamenta. Esempi specifici includono reti come SqueezeNet e MobileNet. Spesso sostituiscono le strutture tradizionali delle reti neurali con nuove, più efficienti, per ridurre il numero di pesi. Meno pesi significa un modello più piccolo e un minore ingombro di memoria. Gli autori di SqueezeNet, ad esempio, hanno affermato di raggiungere un’accuratezza paragonabile ad AlexNet con 50 volte meno pesi e un modello compresso a mezzo megabyte.
Il secondo approccio riguarda la post-elaborazione di un modello già addestrato. Le reti neurali, in fondo, sono esercizi di moltiplicazione di matrici. Se riusciamo a rimpicciolire queste matrici in un modello addestrato, occuperanno meno memoria. Questa è l’idea alla base della quantizzazione dei pesi: si modifica il modo in cui i pesi del modello vengono memorizzati, magari passando da un formato a virgola mobile a 32 bit a uno a punto fisso a 8 bit. Un’altra tecnica è il pruning, ovvero la riduzione della complessità del modello eliminando pesi ridondanti. C’è chi sostiene che il 95% dei pesi di una rete neurale sia altamente correlato a pochi pesi chiave, e che rimuovendoli si possa mantenere gran parte dell’accuratezza.
Attenzione, però: non esiste il “pranzo gratis”. Ci sono sempre dei compromessi tra accuratezza, memoria e consumo energetico. La quantizzazione da 32 a 8 bit, ad esempio, può portare a una perdita di accuratezza superiore al 12%. Ed è difficile prevedere l’effetto di un’ottimizzazione sulle prestazioni e l’utilizzo delle risorse del modello.
Esistono quattro tipologie principali di hardware per l’AI edge: CPU (versatili ma poco parallele), GPU (massivamente parallele ma energivore), FPGA (flessibili, efficienti in potenza) e ASIC (su misura per massime prestazioni ma costose da sviluppare).
I fornitori di soluzioni AI edge devono trovare l’hardware per AI edge più adatto. Esistono quattro tipi ampiamente disponibili: CPU, GPU, FPGA e ASIC. Ognuno con i suoi pregi e difetti.
Le CPU (che includono i microcontrollori o MCU) sono familiari a tutti. Sono facili da programmare, versatili, a basso consumo e soprattutto economiche (pensate a un Raspberry Pi). Il rovescio della medaglia è che non sono molto parallele, e i moderni modelli di reti neurali richiedono un’enorme quantità di operazioni parallele. Detto questo, per modelli sufficientemente piccoli, anche una minuscola MCU con 100 kilobyte di RAM può eseguirli, come dimostrano progetti come TensorFlow Lite per microcontrollori.
Le GPU, nate per il gaming, sono massicciamente parallele e facilmente programmabili grazie a piattaforme come CUDA di NVIDIA. Questo le rende fantastiche per addestrare nuovi modelli AI. Tuttavia, la loro estrema parallelizzazione le rende anche molto energivore, il che le rende meno adatte per le operazioni di inferenza AI edge. L’NVIDIA Jetson è un esempio di GPU edge. Generalmente, però, CPU e GPU non sono considerate le scelte ideali per soluzioni AI edge.
Questo ci lascia con le due opzioni più intriganti: FPGA (Field Programmable Gate Arrays) e ASIC.
Le FPGA hanno un enorme potenziale. Questi circuiti integrati sono costituiti da blocchi logici programmabili e interconnessioni di routing. Come le GPU, sono intrinsecamente parallele e possono essere configurate e riconfigurate per simulare specifiche operazioni logiche. La loro flessibilità è preziosa in settori come l’automotive, dove algoritmi e regole possono cambiare rapidamente. Un altro vantaggio è l’efficienza energetica: le FPGA moderne spesso includono Block RAM, blocchi di memoria incorporati che riducono latenza e consumo energetico. Lo svantaggio? Meno larghezza di banda di memoria e risorse computazionali rispetto a una GPU, e richiedono competenze specifiche (VHDL o Verilog).
Infine, gli ASIC (Application-Specific Integrated Circuits). Questi sono processori personalizzati, progettati per un compito molto specifico. I chip AI o acceleratori AI rientrano in questa categoria. Il loro più grande svantaggio è evidente: richiedono un investimento finanziario e umano sostanziale per la progettazione e produzione (milioni di dollari per i nodi di processo più avanzati). Una volta fabbricati, non possono essere modificati come le FPGA. Fortunatamente, ci sono molti acceleratori AI edge interessanti disponibili da vari fornitori: Intel con il suo Movidius Myriad X VPU, Google con l’Edge TPU (attraverso l’iniziativa Coral), e NVIDIA con la serie Tegra. A questi si aggiungono numerose aziende più piccole, come Rockchip, Not Goyer Falcon Technology e Nehron, che offrono soluzioni specializzate.
Il futuro dell’AI edge punta all’ottimizzazione attraverso la ‘hardware-aware Neural Architecture Search’ (NAS) e la co-progettazione di hardware e algoritmi per superare i limiti attuali e massimizzare l’efficienza.
Una delle maggiori sfide nell’offrire soluzioni AI edge è il delicato equilibrio tra hardware e software: sono estremamente interconnessi, e modificare uno spesso influisce sull’altro, rallentando enormemente i progressi. Dobbiamo accelerare questo processo.
Perché non usare le reti neurali stesse per aiutarci? Si stanno facendo ricerche interessanti sulla Hardware-Aware Neural Architecture Search (NAS). Qui, si includono variabili hardware nel modello di rete neurale stesso, in modo che possa essere ottimizzato per funzionare al meglio su un hardware specifico, di solito una GPU o una FPGA. Con gli ASIC, questa ricerca non funziona altrettanto bene, perché l’hardware è altamente personalizzabile. Tuttavia, gli ASIC aprono l’intrigante possibilità di co-progettare contemporaneamente hardware e algoritmi. È un po’ come la “design technology co-optimization”, dove si lavora sulla progettazione del chip e sul processo di fabbricazione pensando al successo comune. Questo approccio ha un enorme potenziale per il settore dell’hardware AI edge.
I modelli giganteschi sono più potenti che mai, e possiamo solo immaginare di cosa siano capaci. Ma i produttori di hardware per AI edge si trovano di fronte a limiti economici e, forse, fisici, nel supportare questi modelli. Nella seconda metà del XX secolo, i computer hanno sbloccato benefici senza precedenti nell’industria e nel commercio. L’AI ha il potenziale per fare lo stesso. Ma se l’hardware edge non raggiungerà mai un punto soddisfacente, temiamo che il pieno potenziale dell’AI rimarrà bloccato nella “nuvola effimera”. Speriamo che l’industria continui a evolversi e a spingersi avanti.
—
Domande Frequenti
Cos’è l’Intelligenza Artificiale Edge?
L’Intelligenza Artificiale Edge si riferisce all’esecuzione di modelli AI direttamente su dispositivi fisici vicini all’utente, piuttosto che su server cloud remoti. Questi dispositivi, come robot, droni o smart device, elaborano i dati localmente, superando i problemi di latenza e privacy ma affrontando severe limitazioni di potenza, memoria e capacità di elaborazione.
Quali sono le principali sfide nell’implementazione dell’AI Edge?
Le sfide principali includono l’elevato consumo energetico e la grande dimensione dei moderni modelli AI, che cozzano con le risorse limitate dei dispositivi edge. La memoria insufficiente e la necessità di un’elaborazione veloce sono cruciali. Le soluzioni basate sul cloud, pur semplici, introducono problemi di latenza, stabilità della connessione e privacy, mentre gli approcci ibridi spesso sommano gli svantaggi di entrambi i mondi.
Come si ottimizzano i modelli AI per l’edge?
L’ottimizzazione avviene su due fronti: software e hardware. A livello software, si creano modelli AI su dispositivi edge compatti da zero (es. SqueezeNet) o si applicano tecniche di post-elaborazione come la quantizzazione dei pesi (riduzione dei bit di precisione) e il pruning (eliminazione di pesi ridondanti) per ridurre dimensioni e complessità. Lato hardware, si ricerca l’hardware per AI edge più efficiente, tra CPU, GPU, FPGA e ASIC, e si esplorano nuove metodologie come la co-progettazione hardware-algoritmo per massimizzare l’efficienza.