PolyCoder è un generatore di codice AI open source che i ricercatori affermano supera Codex
L’intelligenza artificiale per la generazione di codice (i sistemi di intelligenza artificiale che possono scrivere in diversi linguaggi di programmazione su richiesta) promettono di ridurre i costi di sviluppo consentendo ai programmatori di concentrarsi su attività creative e meno ripetitive. Ma mentre i laboratori di ricerca come OpenAI e DeepMind, supportati da Alphabet, hanno sviluppato una potente IA per la generazione di codice, molti dei sistemi più capaci non sono disponibili in open source. Ad esempio, i dati di addestramento per il Codex di OpenAI, che alimenta la funzione Copilot di GitHub, non sono stati resi pubblicamente disponibili, impedendo ai ricercatori di mettere a punto il modello di intelligenza artificiale o di studiarne aspetti come l’interpretabilità.
Per rimediare a questo, i ricercatori della Carnegie Mellon University – Frank Xu, Uri Alon, Graham Neubig e Vincent Hellendoorn – hanno sviluppato PolyCoder, un modello basato sul modello del linguaggio GPT-2 di OpenAI che è stato addestrato su un database di 249 GB di codice in 12 linguaggi di programmazione . Sebbene PolyCoder non corrisponda alle prestazioni dei principali generatori di codice in ogni attività, i ricercatori affermano che PolyCoder è in grado di scrivere in C con maggiore precisione rispetto a tutti i modelli conosciuti, incluso Codex.
“Quando l’estate scorsa è uscito Copilot di GitHub, è diventato chiaro che questi modelli di codice in linguaggio molto grandi possono essere molto utili per aiutare gli sviluppatori e aumentare la loro produttività. Ma nessun modello nemmeno vicino a quella scala era disponibile pubblicamente”, hanno detto i ricercatori a VentureBeat via e-mail. “Quindi [PolyCoder] ha iniziato con Vincent che cercava solo di vedere quale fosse il modello più grande che poteva essere addestrato sul nostro server di laboratorio, che ha finito per essere 2,7 miliardi di parametri … e quel modello era un campionato più avanti di altri modelli orientati al codice che erano pubblicamente disponibile in quel momento”.
Nell’apprendimento automatico, i parametri sono la parte del modello appresa dai dati di addestramento cronologici. La correlazione tra il numero di parametri e la sofisticatezza ha retto molto bene, in generale.
Indagine sulla generazione del codice
Un numero crescente di organizzazioni sta esplorando l’IA per la generazione di codice. Durante la conferenza degli sviluppatori Build del maggio 2021, Microsoft ha descritto in dettaglio una nuova funzionalità in Power Apps che sfrutta il modello linguistico GPT-3 di OpenAI per assistere le persone nella scelta delle formule. ControlFlag di Intel può rilevare autonomamente gli errori nel codice. E TransCoder di Facebook converte il codice da un linguaggio di programmazione in un altro.
DeepMind ha recentemente annunciato AlphaCode, che secondo il laboratorio è tra i primi sistemi di generazione di codice competitivi con i programmatori umani. Nelle competizioni di programmazione ospitate su Codeforces, una piattaforma per la programmazione di concorsi, DeepMind afferma che AlphaCode ha ottenuto una classifica media tra i primi 54,3% nei concorsi recenti con oltre 5.000 partecipanti.
Ma i ricercatori della Carnegie Mellon osservano che “quasi nessuno” al di fuori delle aziende con risorse adeguate può addestrare modelli di dimensioni simili a AlphaCode o Codex. Uno studio del 2020 della startup AI21 Labs ha fissato il costo dell’addestramento di un modello di generazione di testo con 1,5 miliardi di parametri, circa la metà delle dimensioni di PolyCode, tra $ 80.000 e $ 1,6 milioni. Copilot ha 12 miliardi di parametri.
“Le grandi aziende tecnologiche non stanno rilasciando pubblicamente i loro modelli, il che sta davvero frenando la ricerca scientifica e la democratizzazione di modelli linguistici di codice così grandi”, hanno affermato i ricercatori. “In una certa misura, speriamo che i nostri sforzi di open-sourcing convincano gli altri a fare lo stesso. Ma il quadro più ampio è che la comunità dovrebbe essere in grado di formare questi modelli da sola. Il nostro modello ha superato il limite di ciò che è possibile addestrare su un singolo server: qualsiasi cosa più grande richiede un cluster di server, il che aumenta notevolmente i costi”.
Battute d’arresto nella generazione del codice
Nello sviluppo di PolyCoder, i ricercatori hanno anche studiato e confrontato le prestazioni di diversi sistemi di intelligenza artificiale per la generazione di codice, incluso Codex (tramite un’API). È interessante notare che hanno scoperto che i modelli addestrati principalmente su testo inglese e solo su una piccola parte di codice sorgente si sono rivelati molto bravi a generare codice, forse perché hanno ottenuto approfondimenti relativi al codice da risorse come il sito Web di domande e risposte per sviluppatori Stack Overflow che erano inclusi in il database da 249 GB
“Un approccio promettente alla costruzione di modelli efficaci per la generazione di codice sembra essere quello di allenarsi su diverse fonti di conoscenza della programmazione, incluso il codice in un ampio mix di linguaggi di programmazione, ma anche il testo del web relativo al codice”, hanno affermato i ricercatori.
I ricercatori esprimono la preoccupazione che modelli come PolyCoder potrebbero essere indotti a generare programmi difettosi, compresi quelli con vulnerabilità di sicurezza difficili da rilevare. In futuro, temono che gli avversari possano “nascondere” comportamenti dannosi in modelli di generazione di codice che si manifestano solo con la richiesta giusta, come una parola chiave (ad esempio, un’azienda o il nome di un prodotto), o caricare codice vulnerabile che potrebbe essere raccolto da modelli legittimi di generazione di codice.
Suggeriscono modelli di dimensioni Codex open source come un modo per combattere questo, il che potrebbe consentire ai ricercatori di sicurezza di cercare modalità di errore in questi modelli. Come vantaggio collaterale, l’open-sourcing consentirebbe agli sviluppatori di personalizzare i modelli o “insegnare loro” nuovi linguaggi di programmazione attraverso un processo noto come fine-tuning, meno costoso rispetto all’addestramento dei modelli da zero.
“Sebbene l’industria abbia attualmente molte più risorse di calcolo, c’è ancora molto spazio per l’innovazione dal mondo accademico e dalla comunità di ricerca, inclusa la creazione di modelli personalizzati più piccoli e veloci che non si basano su una connessione Internet, applicazioni utili come il rilevamento e la riparazione bug, revisione automatica del codice e altro ancora. Questi sono compiti in cui la comunità di ricerca ha costruito prototipi promettenti che potrebbero davvero trarre vantaggio dalla potenza di questo tipo di modelli linguistici molto grandi”, hanno affermato i ricercatori. “La formazione decentralizzata, in cui più gruppi si uniscono per formare un modello di grandi dimensioni insieme, potrebbe fare una grande differenza qui. Anche le borse di ricerca e le collaborazioni tra aziende e mondo accademico potrebbero aiutare”.