Scheda del modello CodeGemma

Pagina del modello: CodeGemma

Risorse e documentazione tecnica:

Termini e condizioni d'uso: Termini

Autori: Google

Informazioni sul modello

Riepilogo modello

Descrizione

CodeGemma è una famiglia di modelli open source leggeri basati su Gemma. I modelli CodeGemma sono modelli solo di decodifica da testo a testo e da testo a codice e sono disponibili come variante preaddestrata da 7 miliardi di parametri specializzata in attività di completamento e generazione di codice, una variante con 7 miliardi di parametri ottimizzata per le istruzioni per chat di codice e l'esecuzione di istruzioni e una variante preaddestrata con 2 miliardi di parametri per il completamento rapido del codice.

Input e output

  • Input: per le varianti del modello preaddestrato: prefisso e, facoltativamente, suffisso del codice per scenari di completamento e generazione di codice o testo/prompt in linguaggio naturale. Per la variante del modello ottimizzata in base alle istruzioni: testo in linguaggio naturale o prompt.

  • Output: per le varianti del modello preaddestrato: compilazione del codice con riempimento intermedio, codice e linguaggio naturale. Per la variante del modello ottimizzata per le istruzioni: codice e linguaggio naturale.

Citazione

@article{codegemma_2024,
    title={CodeGemma: Open Code Models Based on Gemma},
    url={https://goo.gle/codegemma},
    author={ {CodeGemma Team} and Hartman, Ale Jakse and Hu, Andrea and Choquette-Choo, Christopher A. and Zhao, Heri and Fine, Jane and Hui,
    Jeffrey and Shen, Jingyue and Kelley, Joe and Howland, Joshua and Bansal, Kshitij and Vilnis, Luke and Wirth, Mateo and Nguyen, Nam, and Michel, Paul and Choy, Peter and Joshi, Pratik and Kumar, Ravin and Hashmi, Sarmad and Agrawal, Shubham and Zuo, Siqi and Warkentin, Tris and Gong, Zhitao et al.},
    year={2024}
}

Dati del modello

Set di dati di addestramento

Utilizzando Gemma come modello di base, le varianti preaddestrate di CodeGemma 2B e 7B vengono ulteriormente addestrate su altri 500-1000 miliardi di token di dati linguistici principalmente in inglese provenienti da set di dati matematici open source e codice generato sinteticamente.

Elaborazione dei dati di addestramento

Per addestrare CodeGemma sono state applicate le seguenti tecniche di pre-elaborazione dei dati:

  • FIM: i modelli CodeGemma preaddestrati si concentrano sulle attività di completamento intermedio (FIM). I modelli vengono addestrati per funzionare sia con la modalità PSM sia con la modalità SPM. Le nostre impostazioni FIM sono in un intervallo compreso tra l'80% e il 90% con PSM/SPM 50-50.
  • Tecniche di organizzazione in pacchetti basate su grafo di dipendenze e tecniche di organizzazione in pacchetti lessicali basate su test di unità: per migliorare l'allineamento del modello con le applicazioni reali, abbiamo strutturato gli esempi di addestramento a livello di progetto/repository per collocare in modo co-localizzato i file di origine più pertinenti all'interno di ogni repository. In particolare, abbiamo utilizzato due tecniche basate su heuristics: il packing basato sul grafo delle dipendenze e il packing lessicale basato sui test di unità.
  • Abbiamo sviluppato una nuova tecnica per suddividere i documenti in prefisso, mediana e suffisso in modo che il suffisso inizi in un punto sintatticamente più naturale anziché in una distribuzione puramente casuale.
  • Sicurezza: come per Gemma, abbiamo implementato rigorosi filtri di sicurezza, tra cui il filtro dei dati personali, il filtro del materiale pedopornografico e altri filtri in base alla qualità e alla sicurezza dei contenuti, in linea con le nostre norme.

Informazioni sull'implementazione

Hardware e framework utilizzati durante l'addestramento

Come Gemma, CodeGemma è stato addestrato sull'hardware (TPUv5e) di ultima generazione Tensor Processing Unit (TPU), utilizzando JAX e ML Pathways.

Informazioni sulla valutazione

Risultati del benchmark

Approccio di valutazione

Risultati del benchmark di programmazione

Benchmark 2B 2 miliardi (1.1) 7 miliardi 7B-IT 7B-IT (1.1)
HumanEval 31.1 37,8 44,5 56,1 60,4
MBPP 43,6 49,2 56,2 54,2 55,6
HumanEval riga singola 78,4 79,3 76,1 68,3 77,4
HumanEval Multi Line 51,4 51,0 58,4 20,1 23,7
BC HE C++ 24,2 19,9 32,9 42,2 46,6
BC HE C# 10.6 26.1 22,4 26,7 54,7
BC HE Go 20,5 18.0 21,7 28,6 34,2
BC HE Java 29,2 29,8 41,0 48,4 50,3
JavaScript BC HE 21,7 28,0 39,8 46,0 48,4
BC HE Kotlin 28,0 32,3 39,8 51,6 47,8
BC HE Python 21,7 36,6 42,2 48,4 54,0
Ruggine BC HE 26,7 24,2 34,1 36,0 37,3
BC MBPP C++ 47,1 38,9 53,8 56,7 63,5
BC MBPP C# 28,7 45,3 32,5 41,2 62,0
BC MBPP Go 45,6 38,9 43,3 46,2 53,2
Java BC MBPP 41,8 49,7 50,3 57,3 62,9
JavaScript BC MBPP 45,3 45,0 58,2 61,4 61,4
BC MBPP Kotlin 46,8 49,7 54,7 59,9 62,6
BC MBPP Python 38,6 52,9 59,1 62,0 60,2
BC MBPP Rust 45,3 47,4 52,9 53,5 52,3

Benchmark sul linguaggio naturale (su modelli da 7 miliardi)

Grafico a barre che confronta Gemma, CodeGemma PT e CodeGemma IT in base a varie metriche relative alle funzionalità linguistiche. Tutti e tre i modelli sono approssimativamente paragonabili, con CodeGemma che conserva una solida comprensione del linguaggio naturale.

Etica e sicurezza

Valutazioni di etica e sicurezza

Approccio alle valutazioni

I nostri metodi di valutazione includono valutazioni strutturate e test di red team interni delle norme relative ai contenuti pertinenti. L'attività di red teaming è stata condotta da diversi team, ognuno con obiettivi e metriche di valutazione umana diversi. Questi modelli sono stati valutati in base a una serie di categorie diverse pertinenti a temi etici e di sicurezza, tra cui:

  • Valutazione umana dei prompt che riguardano la sicurezza dei contenuti e i danni rappresentati. Per ulteriori dettagli sull'approccio di valutazione, consulta la scheda del modello Gemma.

  • Test specifici delle funzionalità di cyber-offesa, incentrato sul test delle funzionalità di hacking autonome e sulla garanzia che i potenziali danni siano limitati.

Risultati valutazione

I risultati delle valutazioni relative a etica e sicurezza rientrano nelle soglie accettabili per rispettare le norme interne per categorie quali sicurezza dei bambini, sicurezza dei contenuti, danni causati dalla rappresentazione, memorizzazione, danni su larga scala. Per ulteriori dettagli, consulta la scheda del modello Gemma.

Utilizzo e limitazioni dei modelli

Limitazioni note

I modelli linguistici di grandi dimensioni (LLM) hanno limitazioni in base ai dati di addestramento e ai limiti insiti della tecnologia. Per ulteriori dettagli sulle limitazioni degli LLM, consulta la scheda del modello Gemma.

Considerazioni etiche e rischi

Lo sviluppo di modelli linguistici di grandi dimensioni (LLM) solleva diversi problemi etici. Abbiamo preso in considerazione attentamente diversi aspetti nello sviluppo di questi modelli.

Per informazioni dettagliate sul modello, consulta la stessa discussione nella scheda del modello Gemma.

Utilizzo previsto

Applicazione

I modelli Code Gemma hanno una vasta gamma di applicazioni, che variano in base ai modelli IT e PT. Il seguente elenco di potenziali utilizzi non è esaustivo. Lo scopo di questo elenco è fornire informazioni contestuali sui possibili casi d'uso che i creator dei modelli hanno preso in considerazione durante l'addestramento e lo sviluppo dei modelli.

  • Completamento del codice: i modelli PT possono essere utilizzati per completare il codice con un'estensione IDE
  • Generazione di codice: il modello IT può essere utilizzato per generare codice con o senza un'estensione IDE
  • Conversazione di codice: il modello IT può supportare interfacce di conversazione che discutono di codice
  • Istruzione di programmazione: il modello IT supporta esperienze di apprendimento interattive del codice, aiuta a correggere la sintassi o fornisce esercitazioni di programmazione

Vantaggi

Al momento del rilascio, questa famiglia di modelli fornisce implementazioni di modelli linguistici di grandi dimensioni aperte e incentrate sul codice ad alte prestazioni, progettate da zero per lo sviluppo di AI responsabile rispetto ai modelli di dimensioni simili.

Utilizzando le metriche di valutazione del benchmark di codifica descritte in questo documento, questi modelli hanno dimostrato di offrire un rendimento superiore rispetto ad altre alternative di modelli aperti di dimensioni simili.