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
- Benchmark di completamento del codice: HumanEval (HE) (infill a riga singola e più righe)
- Benchmark di generazione di codice: HumanEval, MBPP, BabelCode (BC) [C++, C#, Go, Java, JavaScript, Kotlin, Python, Rust]
- Domande e risposte: BoolQ, PIQA, TriviaQA
- Linguaggio naturale: ARC-Challenge, HellaSwag, MMLU, WinoGrande
- Ragionamento matematico: GSM8K, MATH
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)
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.