I Computer del Futuro non si programmano, si addestrano
Il CEO di NVidia, Jensen Huang, ha dichiarato recentemente “No Need For Coding” e che i ragazzi di oggi non hanno bisogno di imparare a programmare, perché i progressi della AI permetteranno a tutti di risolvere i problemi usando il linguaggio naturale.
Naturalmente Huang tira l’acqua al suo mulino, e probabilmente non sarà esattamente così ma questa riflessione mi riporta ad un articolo che scrissi diversi anni fa (2016) e che in fondo tratta lo stesso tema. Lo riporto di seguito leggermente aggiornato.
I computer del passato non si programmavano, si cablavano
La logica cablata di tanti anni fa era quella dei flipper e dei jukebox, quando in mezzo agli organi meccanici si alzavano i primi vagiti dell’elettronica. La logica era abbastanza semplice: premi un tasto si accende una lampada, arriva un suono si muove un braccio etc. I circuiti più complessi potevano realizzare funzionalità più interessanti, pensiamo agli ascensori, ai televisori, agli impianti stereo etc. Cablata perché a seconda della logica che volevamo realizzare dovevamo proprio attaccare i fili in modo diverso.
Poi però è arrivata l’elettronica digitale e i circuiti programmabili, in pratica invece di rimontare l’elettronica in modo diverso a secondo dell’applicazione siamo passati ad un solo tipo di circuito, il processore, capace di eseguire un programma. Il programma cambia, il processore è sempre lo stesso.
I computer del presente non si cablano, si programmano
Questa rivoluzione ha portato a tutto quello che conosciamo oggi, dal circuito di controllo degli ascensori, al laptop, al cellulare, ai mega server di amazon etc. Naturalmente abbiamo avuto molte generazioni di processori, ma di fatto qualche dozzina di prodotti sono il cuore di miliardi di installazioni.
Questa è stata una vera è propria rivoluzione, che di fatto ha reso l’elettronica irrilevante e ha incoronato l’informatica come tecnica assoluta per il dominio del mondo.La rete, poi, ha reso tutto questo liquido e globale e as a service. Eppure anche quest’era forse sta per giungere ad una fine.
I computer del futuro non si programmano, si addestrano
e forse siamo all’alba di una nuova rivoluzione, così come la CPU è divenuto il componente definitivo nel mondo dell’elettronica, forse dobbiamo ora salutare la nascita del componente definitivo nel mondo dell’informazione. Il classificatore/decisore/regressore, insomma un modello matematico/statistico capace di ingurgitare dati e fornire predizioni. Un componente in grado di fare qualcosa simile in fondo a quello che fa il cervello umano, no non dico pensare, ma riconoscere, giudicare, valutare. Parole come deep learning, reti neurali, machine intelligence, etc. sono tutte variazioni sul tema ma il concetto è sempre lo stesso. Macchine che apprendono.
Apprendono a riconoscere un tumore da una tac, o lo stile di Van Gogh da un’ immagine quello che conta è che queste macchine forse non pensano e non sono senzienti, ma riconoscono (riconoscenti però suona male)
La conseguenza diretta di tale trasformazione avviene prima di tutto sull’hardware stesso. Abbiamo assistito all’evoluzione dei processori dallo z80 all’I7 e come questi siano divenuti delle macchine elettroniche sempre più complesse e sempre più articolate con set di istruzioni in continua crescita proprio per la loro natura general purpose. Cioè le CPU devono accomodare le esigenze di tutti i possibili programmi che potrebbero in teoria essere scritti e poi girare su di loro.
Ma cosa succede quando ci si rende conto che dal brodo primordiale di tutti i programmi possibili e immaginabili comincia ad emergere una sola classe di questi, elitari e intelligenti, non nel senso che pensano, ma nel senso che rendono per sé stessi “intelligibile” e codificabile quello che per i normali programmi non lo sarebbe. Addestrabili a “giudicare” e separare vero da falso, tumore da rumore, Van Gogh da Gaguin. Tradurre il parlato, riconoscere un viso, guidare un’auto, riconoscere un pericolo, riconoscere un nemico, etc.
Invece di tanti software diversi programmati per fare cose diverse, pochi modelli addestrabili a risolvere infiniti problemi diversi.
Ma allora forse ci servono CPU diverse da quelle di oggi. In fondo una volta capito come deve essere fatto il software addestrabile, quello che ci serve è un circuito elettronico tutto sommato meno generalista e più specializzato. Se la mia elettronica deve far girare un solo programma non ci interessa più che sia programmabile in senso lato, torniamo a qualcosa di “cablato”.
Infatti questo succede in altri settori, non necessariamente legati alla AI. il Bitcoin mining è un caso emblematico, verificare le transazioni Bitcoin e generare nuovi coin è stata un’attività altamente proficua, tant’è che per ottenere il massimo di prestazioni con il minimo consumo energetico sono stati realizzati dei computer ASIC, non più CPU generaliste, ma elettronica specializzata e pre-programmata per fare una cosa sola, il mining dei Bitcoin.
I linguaggi di programmazione diventano irrilevanti?
Non vuol dire che non serviranno più, e quindi ci saranno sempre job opportunities per developer e architect. Ma se ritorniamo allo scenario dove invece di tanti software diversi programmati per fare cose diverse, abbiamo pochi software addestrabili a risolvere infiniti problemi diversi, non abbiamo più un programmatore che si scervella tra cicli for, chiamate a funzioni, e infiniti cicli di trial and error per vedere il suo programma eseguire tutte le linee di codice. Abbiamo invece un software scatola nera che ingurgita dati e sputa sentenze, una rete neurale capace di classificare ad esempio … e a questo punto non è tanto una questione tra Java, Python, C++, etc. le guerre di religione nei forum nerd saranno su Boltzmann machine Vs Convolutional network.
Dal general computing all’AI training: cosa cambia per l’hardware
Se prima l’hardware era la scatola e il software il contenuto, ora avremo che l’hardware diventa il banco di lavoro, il software è la scatola ed il modello AI diventa il contenuto. Cambi il modello AI senza cambiare la scatola.
Come diceva Bohr
è difficile fare previsioni, specialmente sul futuro
Assistiamo già alla tendenza già vista in altri settori, come appunto quello del mining delle criptovalute: perché utilizzare un processore complesso come una CPU per fare compiti elementari come operazioni aritmetiche. Meglio privilegiare il parallelismo alla ricchezza di operazioni disponibili, meglio quindi una GPU che una CPU, consuma meno ed più veloce nel fare poche cose, somme e moltiplicazioni molto banalmente.
Questo video mostra in modo impressionante come questo processo di innovazione sia ormai in corso da anni e come anche il mercato azionario ne abbia preso atto.
Ma non è detto che le GPU siano la soluzione definitiva, infatti Google da diversi anni ha messo in cantiere degli Asics (ovvero elettronica specializzata ad un solo scopo, un po’ come il flipper descritto all’inizio) chiamate Tensor Processing Units (TPU) per abbattere il costo in Joule per istruzione. Le Google TPU sono circuiti integrati per ad-hoc sviluppati appositamente per l’apprendimento automatico. Rispetto ai processori, sono progettati in modo esplicito per grossi volumi di dati, usano una minore precisione (8 bit) e non dispongono di hardware per rasterizzazione / texture mapping (non gli serve). Google ha dichiarato che le sue TPU sono state utilizzate nella sfida di Go: AlphaGo Vs Lee Sedol.
In figura una TPU di cui esistono già sei diverse generazioni