Rilasciato a maggio del 2023, StarCoder è un sistema AI di generazione di codice gratuito e si propone come alternativa ai più noti Copilot di GitHub, CodeWhisperer di Amazon o AlphaCode di DeepMind.
Questo nuovo modello la dice lunga su quanto il settore del supporto ai programmatori sia sotto la lente di chi sviluppa Intelligenze artificiali (AI) e, più in generale, di come i Large Language Model (LLM) diventino sempre più strumenti a servizio delle AI stesse.
StarCoder fa parte di BigCode, progetto che punta alla creazione di una comunità incentrata sugli strumenti per la generazione di codice per le AI e al quale prendono parte oltre 600 partner provenienti da laboratori universitari e industriali. Siamo seduti su un grande cambiamento – quello degli autocodificatori Open – i cui effetti sono persino inimmaginabili.
Introduzione a StarCoder, il nuovo LLM
StarCoder si situa nella sfera di BigCode, progetto collaborativo tra ServiceNow e Hugging Face, startup newyorkese che sta modificando lo sviluppo e l’uso dei modelli di linguaggio, rendendoli meno complessi da impiegare e meno costosi, partecipando in modo attivo alla loro democratizzazione. Infatti, StarCoder è Open source e può essere prelevato qui.
La natura Open sposa anche le necessità di rispondere a esigenze di responsabilità: un codice a licenza aperta è patrimonio a cui tutti possono partecipare.
Addestrato mediante codice sorgente libero, il modello StarCoder ha 15,5 miliardi di parametri e supporta oltre 80 linguaggi di programmazione, si presta a essere un assistente alla codifica trasversale benché Python sia il linguaggio che maggiormente ne beneficia.
In parole più immediate, StarCoder è un modello di linguaggio raffinato e capace di codificare in modo autorevole. Un supporto valido (e vieppiù essenziale) per i programmatori.
Come funziona StarCoder
Fa ricorso a una tecnica di Attenzione multy-query (MQA) già in dote a GPT-4. L’Attenzione multy-query – nella sua spiegazione più semplificata – è costituita da più livelli di attenzione che agiscono in parallelo con diverse trasformazioni lineari su query, valori, chiavi e output. Qui una spiegazione più dettagliata.
Il punto cruciale è che consente a StarCoder di comprendere il codice già scritto e di restituire suggerimenti puntali e precisi, proprio perché vengono esaminate in modo simultaneo più query.
Sfruttando questa tecnica, StarCoder raccoglie e compila un grande quantità di dati da più linguaggi di programmazione e provenienti dai repository GitHub. Un enorme set di dati diversificati che aumentano l’efficienza con cui si presta ai propri compiti.
L’Attenzione multy-query ha un altro pregio: dimostra che i LLM non sono complicati come sembrano di primo acchito. Fanno leva sul Deep learning per analizzare i dati e acquisire la comprensione della grammatica, della sintassi e – in misura diversa da quanto fa un uomo – del contesto.
Da questo punto di vista, StarCoder è uno dei tanti LLM che contribuiscono a cambiare l’approccio ai processi.
Applicazioni di StarCoder
Gli usi più immediati portano al completamento, alla verifica e alla generazione di codice. Nel primo caso può esaminare porzioni di codice per completarle – anche rilevandone le parti mancanti – fornendo così un valido aiuto a chi sta sviluppando.
Discorso un po’ diverso quella della generazione di codice usando prompt in linguaggio naturale, cosa che StarCoder in sé non è in grado di fare, se non mediante l’uso di tool appositi. Tool che, peraltro, consentono anche di trovare bug nel codice che vengono identificati eseguendolo.
I vantaggi di utilizzare StarCoder
Parlando di vantaggi, quelli più immediati vanno oltre la generazione automatica di codice, oltre i suggerimenti e oltre le capacità di controllo e verifica. Vantaggi, certo, ma di superficie. Ce ne sono di meno evidenti:
- apprendimento: un vantaggio non soltanto per i principianti. La capacità di StarCoder di fornire esempi di codice aiuta a capire come superare problemi o come scrivere meglio porzioni complesse e poco intuitive
- addestramento: StarCoder è un modello pre-addestrato e questo vuol dire che è praticamente pronto all’uso senza dover prevedere un addestramento partendo da zero
- interoperabilità: può essere integrato in molte applicazioni, per esempio negli IDE oppure nei Chatbot.
Ci sono degli strumenti che insegnano a prendere dimestichezza con StarCoder.
Risorse disponibili per imparare e utilizzare StarCoder
Il consiglio migliore è partire dalle basi. Su YouTube ci sono alcuni video fondamentali. Oltre a quello prodotto da AssemblyAI c’è un tutorial altrettanto valido pubblicato da Sam Witteveen. Su GitHub ci sono esempi d’uso e specifiche per i rispettivi impieghi.
C’è poi l’interfaccia grafica appositamente creata per dare possibilità a tutti di comprendere meglio l’uso di StarCode e una knowledge base corposa, sempre curata da BigCode.
Hugging Face ha creato delle pagine web dedicate all’uso di StarCoder, con spiegazioni dettagliate circa l’istallazione e i limiti del LLM.
Limitazioni e sfide con l’utilizzo di StarCoder
Come qualsiasi modello di intelligenza artificiale, StarCoder ha i suoi limiti e potrebbe non essere sempre in grado di generare il codice più efficiente. Pertanto, il codice va sempre verificato e, se del caso, ottimizzato.
La lingua principale usata per l’addestramento è l’inglese, questo può contribuire a far scemare la precisione di StarCoder, così come può contribuirvi l’addestramento e – anche questo – è un male comune a tutti i modelli. La quantità e la qualità dei dati usati sono fondamentali nell’ottica dell’accuratezza dei risultati e, più in generale, nelle prestazioni di StarCoder.
In attesa di miglioramenti da parte di BigCode, va considerato che StarCoder si presta male all’elaborazione di grandi moli di dati, anche se forniti tramite strumenti nativi quali Playground o il Chatbot. StarCoder è un valido aiuto ma non è in grado di sostituire l’uomo.
StarCoder: il futuro del coding automatizzato
Inutile negare che il dado non sia già stato tratto. Il coding automatizzato ha un futuro sempre più brillante, fatto di strumenti vieppiù affidabili, performanti e precisi. Le sfide, però, sono tante e – anche in questo ambito – BigCode ha lanciato i dadi. La scelta di proporre un codice aperto e di lavorare su dati Open consente una maggiore assunzione di responsabilità da parte di tutta la comunità coinvolta.
Per continuare in questa direzione, tuttavia, è necessario un processo di feedback puntuale, opportunamente critico e la volontà di correggere errori e superare i problemi che inevitabilmente sorgeranno.
Se la paura principale è la sostituzione dell’uomo da parte dei LLM non si va da nessuna parte e, in ogni caso, non c’è una sola prova di un’eventuale sostituzione a danno di sviluppatori. Il momento in cui un modello riuscirà a scrivere codice meglio dell’uomo è lontano.