News

Google DeepMind: con AlphaDev il coding è molto più veloce

Si tratta di una nuova versione di AlphaZero in grado di ordinare gli elementi di un elenco fino al 70% più velocemente del miglior metodo esistente. Gli algoritmi generati dall’AI sono già utilizzati da milioni di sviluppatori

Pubblicato il 08 Giu 2023

DeepMind Alphadev

DeepMind, dopo aver  utilizzato una versione della sua AI AlphaZero per trovare nuovi modi per accelerare il calcolo di una parte cruciale della matematica alla base di molti tipi di codice – battendo un record di 50 anni fa – ora propone una nuova versione di AlphaZero chiamata AlphaDev. L’azienda britannica (recentemente ribattezzata Google DeepMind dopo la fusione con il laboratorio di intelligenza artificiale della società sorella avvenuta in aprile) ha scoperto un modo per ordinare gli elementi di un elenco fino al 70% più velocemente del miglior metodo esistente. E ha anche trovato un modo per velocizzare del 30% un algoritmo chiave utilizzato nella crittografia. Questi algoritmi sono tra gli elementi costitutivi più comuni del software. Piccole accelerazioni possono fare un’enorme differenza, riducendo i costi e risparmiando energia.

Le tecniche di AlphaDev sono già utilizzate dagli sviluppatori

“La Legge di Moore sta giungendo al termine: i chip si stanno avvicinando ai loro limiti fisici fondamentali”, afferma Daniel Mankowitz, ricercatore presso Google DeepMind. “Dobbiamo trovare modi nuovi e innovativi per ottimizzare l’elaborazione”.

“È un nuovo approccio interessante”, afferma Peter Sanders, che studia la progettazione e l’implementazione di algoritmi efficienti presso il Karlsruhe Institute of Technology in Germania e che non è stato coinvolto nel lavoro. “L’ordinamento è ancora una delle subroutine più utilizzate nell’informatica”, afferma.

DeepMind ha pubblicato i suoi risultati su Nature. Ma le tecniche messe a punto da AlphaDev sono già utilizzate da milioni di sviluppatori di software. Nel gennaio 2022, DeepMind ha sottoposto i suoi nuovi algoritmi di ordinamento all’organizzazione che gestisce il C++, uno dei linguaggi di programmazione più diffusi al mondo, e dopo due mesi di rigorosa verifica indipendente, gli algoritmi di AlphaDev sono stati aggiunti al linguaggio. Si tratta della prima modifica agli algoritmi di ordinamento del C++ in oltre un decennio e del primo aggiornamento che coinvolge un algoritmo scoperto grazie all’intelligenza artificiale.

DeepMind ha aggiunto gli altri nuovi algoritmi ad Abseil, una raccolta open-source di algoritmi C++ pre-scritti che possono essere utilizzati da tutti coloro che codificano con C++. Questi algoritmi di crittografia calcolano numeri chiamati hash che possono essere utilizzati come ID univoci per qualsiasi tipo di dati. Secondo le stime di DeepMind, i suoi nuovi algoritmi vengono utilizzati trilioni di volte al giorno.

Come è stato realizzato AlphaDev

AlphaDev è costruito sulla base di AlphaZero, il modello di apprendimento per rinforzo che DeepMind ha addestrato per padroneggiare giochi come il Go e gli scacchi. La scoperta dell’azienda è stata quella di trattare il problema di trovare un algoritmo più veloce come un gioco e di addestrare l’intelligenza artificiale a vincerlo: lo stesso approccio utilizzato l’anno scorso per accelerare le moltiplicazioni matriciali.

Nel caso di AlphaDev, il gioco consiste nello scegliere le istruzioni del computer e metterle in ordine in modo che le linee di codice risultanti costituiscano un algoritmo. AlphaDev vince la partita se l’algoritmo è corretto e più veloce di quelli esistenti. Sembra semplice, ma per giocare bene AlphaDev deve cercare tra un numero astronomico di mosse possibili.

DeepMind ha scelto di lavorare con l’assembly, un linguaggio di programmazione che può essere usato per dare istruzioni specifiche su come spostare i numeri su un chip di computer. Pochi esseri umani scrivono in assembly; è il linguaggio in cui viene tradotto il codice scritto in linguaggi come il C++ prima di essere eseguito. Il vantaggio dell’assemblaggio è che permette di scomporre gli algoritmi in passi precisi: un buon punto di partenza se si cercano scorciatoie.

I chip dei computer hanno diversi slot in cui i numeri vengono inseriti ed elaborati. L’assemblaggio comprende istruzioni di base per la manipolazione di questi slot, come mov(A,B), che indica al computer di spostare il numero nello slot A nello slot B, e cmp(A,B), che indica al computer di verificare se il numero nello slot A è minore, uguale o maggiore di quello nello slot B. Lunghe sequenze di istruzioni di questo tipo possono eseguire tutto ciò che i computer fanno.

DeepMind paragona la scoperta di AlphaDev a una delle mosse strane ma vincenti di AlphaGo nella sua partita di Go contro il gran maestro Lee Sedol nel 2016. “Tutti gli esperti hanno guardato questa mossa e hanno detto: ‘Non è la cosa giusta da fare. Questa è una mossa sbagliata'”, dice Mankowitz. “Ma in realtà era la mossa giusta e AlphaGo ha finito non solo per vincere la partita, ma anche per influenzare le strategie che i giocatori professionisti di Go hanno iniziato a usare”.

DeepMind AlphaDev

Sanders è impressionato, ma non pensa che i risultati debbano essere sopravvalutati. “Sono d’accordo sul fatto che le tecniche di apprendimento automatico siano sempre più una svolta nella programmazione e tutti si aspettano che le AI siano presto in grado di inventare algoritmi nuovi e migliori”, afferma. “Ma non ci siamo ancora arrivati”.

Sanders sottolinea che AlphaDev utilizza solo un sottoinsieme delle istruzioni disponibili in assembly. Molti algoritmi di ordinamento esistenti utilizzano istruzioni che AlphaDev non ha provato. Questo rende più difficile confrontare AlphaDev con i migliori approcci concorrenti.

I limiti di AlphaDev

È vero che AlphaDev ha i suoi limiti. L’algoritmo più lungo che ha prodotto era lungo 130 istruzioni, per ordinare un elenco di un massimo di cinque elementi. A ogni passo, AlphaDev sceglieva tra 297 possibili istruzioni di assemblaggio (tra molte altre). “Oltre le 297 istruzioni e i giochi di assemblaggio lunghi più di 130 istruzioni, l’apprendimento diventava lento”, spiega Mankowitz.

Questo perché anche con 297 istruzioni (o mosse di gioco), il numero di possibili algoritmi che AlphaDev potrebbe costruire è superiore al numero possibile di partite di scacchi (10120 ) e al numero di atomi dell’universo (che si ritiene sia di circa 10 ).80

Per gli algoritmi più lunghi, il team prevede di adattare AlphaDev per lavorare con le istruzioni C++ invece che con l’assembly. Con un controllo meno preciso, AlphaDev potrebbe perdere alcune scorciatoie, ma l’approccio sarebbe applicabile a una gamma più ampia di algoritmi.

Sanders vorrebbe anche vedere un confronto più esaustivo con i migliori approcci sviluppati dall’uomo, soprattutto per gli algoritmi più lunghi. DeepMind afferma che questo fa parte del suo piano. Mankowitz vuole combinare AlphaDev con i migliori metodi sviluppati dall’uomo, facendo sì che l’intelligenza artificiale si basi sull’intuizione umana anziché partire da zero.

Dopotutto, potrebbero esserci altri miglioramenti di velocità da trovare. “Per fare questo, un essere umano richiede una notevole competenza e un’enorme quantità di ore – forse giorni, forse settimane – per esaminare questi programmi e identificare i miglioramenti”, dice Mankowitz. “Di conseguenza, non è mai stato tentato prima”.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3