IBM testerà fino a che punto puoi spingere l’AI per scrivere software

Redazione
Matematica e intelligenza artificiale - machine learning - apprendimento automatico

I ricercatori di IBM hanno cercato di creare un set di dati multiuso che può essere utilizzato per addestrare modelli di apprendimento automatico per varie attività.


La divisione di ricerca di intelligenza artificiale di IBM ha rilasciato un set di dati di 14 milioni di campioni per sviluppare modelli di machine learning che possono aiutare nelle attività di programmazione. Chiamato Project CodeNet, il set di dati prende il nome da ImageNet, il famoso archivio di foto etichettate che ha innescato una rivoluzione nella visione artificiale e nel deep learning.

Sebbene ci siano poche possibilità che i modelli di apprendimento automatico basati sul set di dati CodeNet rendano ridondanti i programmatori umani, c’è motivo di sperare che renderanno gli sviluppatori più produttivi, come riporta VentureBeat.

Il set di dati CodeNet

Days Gone per PC è ora disponibile.

Sopra: Project CodeNet è un enorme set di dati di circa 14 milioni di campioni di codice distribuiti in dozzine di linguaggi di programmazione. Credits: Sony

Con Project CodeNet, i ricercatori di IBM hanno cercato di creare un set di dati multiuso che può essere utilizzato per addestrare modelli di apprendimento automatico per varie attività. I creatori di CodeNet lo descrivono come un “set di dati su larga scala, diversificato e di alta qualità per accelerare i progressi algoritmici in AI for Code”.

Il set di dati contiene 14 milioni di campioni di codice con 500 milioni di righe di codice scritte in 55 diversi linguaggi di programmazione. Gli esempi di codice sono stati ottenuti da invii a quasi 4.000 sfide pubblicate sulle piattaforme di codifica online AIZU e AtCoder. Gli esempi di codice includono risposte corrette e non corrette alle sfide.

Una delle caratteristiche chiave di CodeNet è la quantità di annotazioni che è stata aggiunta agli esempi. Ognuna delle sfide di codifica incluse nel set di dati ha una descrizione testuale insieme al tempo della CPU e ai limiti di memoria. Ogni invio di codice contiene una dozzina di informazioni, inclusa la lingua, la data di invio, le dimensioni, il tempo di esecuzione, l’accettazione e i tipi di errore.

I ricercatori IBM hanno anche compiuto grandi sforzi per assicurarsi che il set di dati fosse bilanciato lungo diverse dimensioni, inclusi il linguaggio di programmazione, l’accettazione e i tipi di errore.

IBM: attività di programmazione per l’apprendimento automatico

CodeNet non è l’unico set di dati per addestrare modelli di apprendimento automatico per attività di programmazione. Ma alcune caratteristiche che lo fanno risaltare. Il primo è l’enorme dimensione del set di dati, compreso il numero di campioni e la diversità delle lingue.

Ma forse più importante sono i metadati che accompagnano gli esempi di codifica. Le ricche annotazioni aggiunte a CodeNet lo rendono adatto per una serie diversificata di attività rispetto ad altri set di dati di codifica specializzati per attività di programmazione specifiche.

Esistono diversi modi in cui CodeNet può essere utilizzato per sviluppare modelli di apprendimento automatico per attività di programmazione. Uno è la traduzione in lingua. Poiché ogni sfida di codifica nel set di dati contiene invii di vari linguaggi di programmazione, i data scientist possono utilizzarli per creare modelli di apprendimento automatico che traducono il codice da un linguaggio a un altro. Questo può essere utile per le organizzazioni che desiderano portare il vecchio codice in nuovi linguaggi e renderli accessibili alle nuove generazioni di programmatori e manutenibili con nuovi strumenti di sviluppo.

CodeNet può anche aiutare a sviluppare modelli di machine learning per la raccomandazione del codice. Gli strumenti di raccomandazione potrebbero essere semplici come modelli in stile completamento automatico che completano l’attuale riga di codice su sistemi più complessi che scrivono funzioni complete o blocchi di codice.

Poiché CodeNet dispone di una vasta gamma di metadati sulla memoria e sui tempi di esecuzione, i data scientist possono utilizzarli anche per sviluppare sistemi di ottimizzazione del codice. Oppure possono utilizzare i metadati di tipo errore per addestrare sistemi di apprendimento automatico che segnalano potenziali difetti nel codice sorgente.

Un caso d’uso più avanzato che sarebbe interessante vedere sono le generazioni di codice. CodeNet è una ricca libreria di descrizioni testuali dei problemi e del relativo codice sorgente. Ci sono già stati diversi esempi di sviluppatori che utilizzano  modelli di linguaggio avanzati come GPT-3  per generare codice da descrizioni in linguaggio naturale. Sarà interessante vedere se CodeNet può aiutare a mettere a punto questi modelli di linguaggio per diventare più coerenti nella generazione del codice.