Meta ha appena rilasciato Code Llama, un ampio modello di linguaggio (LLM) che può utilizzare prompt di testo per generare codice. Code Llama, secondo l’azienda statunitense, ha il potenziale per rendere i flussi di lavoro più veloci ed efficienti per gli sviluppatori già esperti e abbassare la soglia di accesso per coloro che stanno imparando a programmare.
Infatti il nuovo tool sembra essere stato pensato come strumento di produttività ed educazione per aiutare i dev a scrivere software più robusti e ben documentati.
Lo spazio dell’IA generativa sta evolvendo rapidamente e la società di Menlo Park ritiene che un approccio aperto all’IA odierna sia il migliore per lo sviluppo di nuovi strumenti AI innovativi, sicuri e responsabili. Per questo Code Llama è stato rilasciato con la stessa licenza comunitaria di Llama 2.
Ma come funziona il nuovo tool e che potenzialità ha realmente? Proviamo a scoprirlo.
Come funziona Code Llama
Code Llama è una versione specializzata in codice di Llama 2 che è stata creata ulteriormente addestrando proprio quest’ultimo sui suoi set di dati specifici per il codice, campionando più dati dallo stesso set per periodi più lunghi. In sostanza, Code Llama offre capacità di codifica migliorate, basate su Llama 2.
Per questo è in grado di generare codice e linguaggio naturale sul codice sia da prompt di codice che da linguaggio naturale (ad esempio, “Scrivimi una funzione che restituisce la sequenza di Fibonacci”). Può anche essere utilizzato per completare e risolvere errori nel codice. Inoltre, supporta molti dei linguaggi più popolari utilizzati oggi, inclusi Python, C++, Java, PHP, Typescript (Javascript), C# e Bash.
E’ poi interessante notare come Meta stia in realtà rilasciando tre dimensioni di Code Llama con rispettivamente 7 miliardi, 13 miliardi e 34 miliardi di parametri. Ciascuno di questi modelli è stato addestrato con 500 miliardi di token di codice e dati correlati al codice. I modelli di base e di istruzioni da 7 miliardi e 13 miliardi hanno anche una capacità di riempimento nel mezzo (FIM), che consente loro di inserire codice in codice esistente, il che significa che possono supportare attività come il completamento del codice direttamente dalla confezione.
I tre modelli sono volti a soddisfare diverse esigenze di servizio e latenza. Ad esempio, il modello da 7 miliardi può essere gestito su una singola GPU. Il modello da 34 miliardi restituisce i migliori risultati e consente un miglior aiuto nella scrittura del codice, ma i modelli più piccoli da 7 miliardi e 13 miliardi sono più veloci e adatti a compiti che richiedono una bassa latenza, come il completamento del codice in tempo reale.
I modelli Code Llama forniscono generazioni stabili con un contesto fino a 100.000 token. Tutti i modelli sono addestrati su sequenze di 16.000 token e mostrano miglioramenti su input con un massimo di 100.000 token.
Oltre a essere un prerequisito per generare programmi più lunghi, avere sequenze di input più lunghe sblocca nuovi e interessanti casi d’uso per un LLM di codice. Ad esempio, gli utenti possono fornire al modello più contesto dalla propria base di codice per rendere le generazioni più rilevanti. Aiuta anche in scenari di debug in basi di codice più grandi, dove tenere traccia di tutto il codice correlato a un problema concreto può essere una sfida per gli sviluppatori. Quando gli sviluppatori si trovano di fronte al debug di un ampio blocco di codice, possono passare l’intera lunghezza del codice al modello.
Oltre al modello di base di Code Llama, Meta ha rilasciato una versione specializzata in Python chiamata Code Llama-Python e un’altra versione chiamata Code Llama-Instrct, che può comprendere istruzioni in linguaggio naturale. Secondo Meta, ciascuna versione specifica di Code Llama non è intercambiabile, e l’azienda non raccomanda il modello di base di Code Llama o Code Llama-Python per istruzioni in linguaggio naturale.
“I programmatori stanno già utilizzando i LLM per assistere in una varietà di compiti, che vanno dalla scrittura di nuovo software alla risoluzione di errori nel codice esistente”, ha detto Meta in un post sul blog. “L’obiettivo è rendere i flussi di lavoro degli sviluppatori più efficienti in modo che possano concentrarsi sugli aspetti più centrati sull’essere umano del loro lavoro.”
Lettura consigliata: Come mettere in piedi un progetto Cypress in TypeScript
Meta afferma che Code Llama ha ottenuto migliori prestazioni rispetto ai LLM (Large Language Models) disponibili pubblicamente in base ai test di benchmark. Infatti, anche il blog phind ha detto di essere riuscito a ottimizzare ulteriormente CodeLlama-34B e CodeLlama-34B-Python su un dataset interno al sito, raggiungendo rispettivamente il 67,6% e il 69,5% di pass@1 su HumanEval. Il diretto competitor, invece, GPT-4 ha raggiunto il 67% secondo il rapporto tecnico interno ufficiale di marzo. Inoltre, il blog assicura, per garantire la validità dei risultati, ha applicato la metodologia di decontaminazione di OpenAI al dataset.
Dunque, Code Llama potrebbe essere a tutti gli effetti un valido alleato sia per dev più esperti, sia per chi è invece alle prime esperienze.