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 di codice aperto leggeri basati su Gemma. I modelli CodeGemma sono solo decoder da testo a testo e da testo a codice e sono disponibili come varianti preaddestrate con 7 miliardi di varianti specifiche per attività di completamento del codice e generazione di codice, una variante ottimizzata con 7 miliardi di parametri per le istruzioni per il seguito di chat e istruzioni di codice e una variante preaddestrata con 2 miliardi di parametri per il completamento rapido del codice.

Ingressi e uscite

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

  • Output: per le varianti dei modelli pre-addestrate, completamento del codice fill-in-the-middle, codice e linguaggio naturale. Per una 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 addestrati con altri 500-1000 miliardi di token di dati principalmente in lingua inglese, tratti da set di dati matematici open source e codice generato sinteticamente.

Trattamento dati di addestramento

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

  • FIM (i modelli preaddestrati CodeGemma) si concentrano sulle attività di riempimento (FIM). I modelli sono addestrati per funzionare con le modalità PSM e SPM. Le nostre impostazioni FIM sono una tariffa FIM compresa tra 80% e 90% con 50-50 PSM/SPM.
  • Tecniche di addestramento Lexical Packing basato su grafici delle dipendenze e test delle unità: per migliorare l'allineamento dei modelli con applicazioni reali, abbiamo strutturato esempi di addestramento a livello di progetto/repository per collocare i file di origine più pertinenti all'interno di ciascun repository. Nello specifico, abbiamo utilizzato due tecniche euristiche: la pacchettizzazione basato su grafici delle dipendenze e sulla pacchettizzazione lessicale basato su test delle unità.
  • Abbiamo sviluppato una nuova tecnica per la suddivisione dei documenti in prefisso, centrale e suffisso per fare in modo che il suffisso inizi in un punto più sintatticamente naturale anziché in una distribuzione puramente casuale.
  • Sicurezza: come in Gemma, abbiamo implementato rigorosi filtri di sicurezza, tra cui filtrando i dati personali e il materiale pedopornografico e altri filtri in base alla sicurezza e alla qualità 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 di ultima generazione Tensor Processing Unit (TPU) (TPUv5e) utilizzando JAX e ML Pathways.

Informazioni sulla valutazione

Risultati benchmark

Approccio alla valutazione

Risultati di benchmark di codifica

Benchmark B2 2B (1,1) 7 MLD 7BIT 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
Linea singola HumanEval 78,4 79,3 76,1 68,3 77,4
Multilinea HumanEval 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
BC HE JavaScript 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
BC HE Rust - Ruggine 26,7 24,2 34,1 36,0 37,3
BC MBPP C++ 47,1 38,9 53,8 56,7 63,5
C# BC MBPP 28,7 45,3 32,5 41,2 62,0
BC MBPP Go 45,6 38,9 43,3 46,2 53,2
BC MBPP Java 41,8 49,7 50,3 57,3 62,9
BC MBPP JavaScript 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 Ruggine 45,3 47,4 52,9 53,5 52,3

Benchmark del linguaggio naturale (su modelli da 7 miliardi)

Grafico a barre che mette a confronto Gemma, CodeGemma PT e CodeGemma IT in varie metriche delle funzionalità linguistiche. Tutti e tre i modelli sono approssimativamente comparabili, con CodeGemma che mantiene una forte comprensione del linguaggio naturale.

Etica e sicurezza

Valutazioni etiche e della sicurezza

Approccio alla valutazione

I nostri metodi di valutazione includono valutazioni strutturate e test interni di red team delle norme relative ai contenuti pertinenti. Il red team è stato condotto da una serie di team diversi, ciascuno con obiettivi e metriche di valutazione diverse da parte di persone fisiche. Questi modelli sono stati valutati in base a una serie di categorie diverse relative a etica e sicurezza, tra cui:

  • Valutazione umana sui prompt riguardanti la sicurezza dei contenuti e i danni rappresentativi. Consulta la scheda del modello Gemma per ulteriori dettagli sull'approccio alla valutazione.

  • Test specifici delle capacità di reato informatico, con particolare attenzione ai test delle capacità di pirateria informatica autonome e alla garanzia di limitazione dei potenziali danni.

Risultati della valutazione

I risultati delle valutazioni etiche e di sicurezza rientrano in soglie accettabili per il rispetto delle norme interne per categorie quali sicurezza dei minori, sicurezza dei contenuti, danni rappresentativi, memorizzazione e danni su vasta scala. Per ulteriori dettagli, consulta la scheda del modello Gemma.

Utilizzo del modello e limitazioni

Limitazioni note

I modelli linguistici di grandi dimensioni (LLM) presentano limitazioni basate sui dati di addestramento e sui limiti intrinseci della tecnologia. Consulta la scheda del modello Gemma per ulteriori dettagli sui limiti degli LLM.

Considerazioni e rischi etici

Lo sviluppo di modelli linguistici di grandi dimensioni (LLM) solleva diverse preoccupazioni etiche. Abbiamo considerato attentamente diversi aspetti nello sviluppo di questi modelli.

Fai riferimento alla stessa discussione nella scheda del modello Gemma per i dettagli del modello.

Utilizzo previsto

Applicazione

I modelli di Code Gemma hanno un'ampia gamma di applicazioni, che variano tra i 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 gli autori dei modelli hanno considerato nell'ambito dell'addestramento e dello sviluppo del modello.

  • Completamento del codice: i modelli PT possono essere utilizzati per completare il codice con un'estensione IDE
  • Generazione del codice: il modello IT può essere utilizzato per generare codice con o senza estensione IDE
  • Conversazione in corso. Il modello IT può supportare le interfacce di conversazione che discutono del codice
  • Educazione alla programmazione: il modello IT supporta esperienze interattive di apprendimento del codice, aiuta la correzione della sintassi

Vantaggi

Al momento del rilascio, questa famiglia di modelli fornisce implementazioni di modelli linguistici di grandi dimensioni incentrate su codice aperto ad alte prestazioni, progettate da zero per lo sviluppo di un'IA responsabile rispetto a modelli di dimensioni simili.

Utilizzando le metriche di valutazione dei benchmark di codifica descritte in questo documento, questi modelli hanno dimostrato di offrire prestazioni migliori rispetto ad altre alternative di modelli aperti di dimensioni comparabili.