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.

1200px-visible_pinball_iii_-_pacific_pinball_museum

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.

cpu

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.

machine_learning

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 software 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 programmazioni diventano irrilevanti

 

uaqxgo5

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.

Google ha creato la Tensor Processing Unit

Tensorflow è il nuovo framework Google per il deep learning (link) che si aggiunge a varie altre soluzioni nel settore. La caratteristica di TensorFlow è che gira allo stesso modo su una macchina o su un cluster e prevede il deployment su GPU. Ma per aumentare le prestazioni perché non costruire un hardware dedicato allo scopo? Ecco che nasce TPU

tpu-2-100661805-large

Le Google TPU sono circuiti integrati per ad-hoc (ASICs) 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.

Attendiamo presto ASIC per deep learning da altri costruttori.

Annunci