Pagina 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 in codice aperto leggeri basati su Gemma. I modelli CodeGemma sono modelli decoder da testo a testo e da testo a codice solo disponibile come variante preaddestrata di 7 miliardi, specializzata nel completamento del codice di addestramento e generazione di codice, una variante ottimizzata per l'istruzione dei parametri da 7 miliardi di la chat di codice e le istruzioni che seguono e una variante preaddestrata con 2 miliardi di parametri per completare rapidamente il codice.
Input e output
Input: per le varianti di modelli preaddestrati: prefisso del codice e suffisso facoltativo per scenari di completamento e generazione del codice o testo/prompt in linguaggio naturale. Per la variante di modello ottimizzata per l'istruzione: testo o prompt in linguaggio naturale.
Output:per le varianti di modelli preaddestrati: codice full-in-the- middle completamento, codice e linguaggio naturale. Per la variante di modello ottimizzata per le istruzioni: un codice e un 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 addestrato ulteriormente su altri 500-1000 miliardi di token di linguistici di grandi dimensioni da set di dati matematici open source e generati sinteticamente le API nel tuo codice.
Elaborazione dei dati di addestramento
Per addestrare CodeGemma sono state applicate le seguenti tecniche di pre-elaborazione dei dati:
- FIM: i modelli CodeGemma preaddestrati sono incentrati sulle attività FIM (fill-in-the- middle). I modelli sono addestrati per funzionare con le modalità PSM e SPM. Le nostre impostazioni FIM Tasso FIM dall'80% al 90% con 50-50 PSM/SPM.
- Tecniche di pacchettizzazione basata su grafico delle dipendenze e tecniche di imballaggio Lexical Packing basate su test delle unità: Per migliorare l'allineamento del modello con applicazioni del mondo reale, abbiamo strutturato l'addestramento esempi a livello di progetto/repository per collocare l'origine più pertinente all'interno di ogni repository. Nello specifico, abbiamo utilizzato due metodi tecniche: pacchettizzazione basata su grafici delle dipendenze e pacchettizzazione lessicale basata su test delle unità.
- Abbiamo sviluppato una nuova tecnica per suddividere i documenti in prefisso, centrale e il suffisso per far iniziare il suffisso in modo più sintatticamente naturale piuttosto che una distribuzione puramente casuale.
- Sicurezza: analogamente a Gemma, abbiamo implementato rigorosi filtri di sicurezza, tra cui il filtro dei dati personali, il filtro del materiale pedopornografico e altri filtri in base ai contenuti. di qualità e sicurezza in linea con nostre norme.
Informazioni sull'implementazione
Hardware e framework utilizzati durante l'addestramento
Come Gemma, CodeGemma è stato addestrato sull'ultima generazione Tensor Processing Unit (TPU) hardware (TPUv5e), utilizzando JAX e ML Percorsi.
Informazioni sulla valutazione
Risultati dei benchmark
Approccio di valutazione
- Benchmark per il completamento del codice: HumanEval (HE) (Single Line Infilling e multiple Line Infill)
- Benchmark per la 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 benchmark di programmazione
Benchmark | 2B | 2B (1,1) | 7 MLD | 7-BIT | 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 - Linea singola | 78,4 | 79,3 | 76,1 | 68,3 | 77,4 |
HumanEval Multilinea | 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 |
Python BC HE | 21,7 | 36,6 | 42,2 | 48,4 | 54,0 |
BC HE Ruggine | 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 |
BC MBPP Java | 41,8 | 49,7 | 50,3 | 57,3 | 62,9 |
JavaScript MBPP BC | 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 di sicurezza
Approccio alla valutazione
I nostri metodi di valutazione includono valutazioni strutturate e il red teaming interno il test delle norme relative ai contenuti pertinenti. Il red teaming è stato condotto da team diversi, ciascuno con obiettivi e metriche di valutazione umana diversi. Questi modelli sono stati valutati rispetto a una serie di diverse categorie pertinenti sicurezza e etica, tra cui:
Valutazione da parte di persone fisiche dei prompt relativi a sicurezza e rappresentatività dei contenuti danni. Consulta le Scheda del modello Gemma per ulteriori dettagli sull'approccio alla valutazione.
Test specifici delle capacità di attacco informatico, con particolare attenzione alla verifica delle funzionalità autonome le capacità di pirateria informatica e la limitazione di potenziali danni.
Risultati valutazione
I risultati delle valutazioni etiche e di sicurezza rientrano in soglie accettabili per le riunioni norme interne per categorie come sicurezza dei minori, sicurezza dei contenuti, danni rappresentativi, la memorizzazione, danni su larga scala. Consulta le Scheda del modello Gemma per ulteriori dettagli.
Utilizzo e limitazioni del modello
Limitazioni note
I modelli linguistici di grandi dimensioni (LLM) hanno limitazioni basate sui dati di addestramento e i limiti intrinseci della tecnologia. Consulta le Scheda del modello Gemma per ulteriori dettagli sui limiti degli LLM.
Considerazioni etiche e rischi
Lo sviluppo di modelli linguistici di grandi dimensioni (LLM) solleva diverse preoccupazioni etiche. Abbiamo esaminato attentamente diversi aspetti dello sviluppo di questi di machine learning.
Consulta la stessa discussione nella scheda del modello Gemma per i dettagli del modello.
Uso previsto
Applicazione
I modelli Code Gemma hanno una vasta gamma di applicazioni, che variano tra IT e Modelli PT. Il seguente elenco di potenziali utilizzi non è esaustivo. La lo scopo di questo elenco è fornire informazioni contestuali sui possibili casi d'uso che i creatori del modello hanno preso in considerazione nell'ambito dell'addestramento e sviluppo del prodotto.
- 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 un IDE estensione
- Code Conversation: il modello IT può alimentare le interfacce di conversazione che discutono codice
- Istruzione del codice: il modello IT supporta esperienze interattive di apprendimento del codice, ausili nella correzione della sintassi o fornisce esercitazioni di programmazione
Vantaggi
Al momento del rilascio, questa famiglia di modelli offre prestazioni implementazioni di modelli linguistici di grandi dimensioni incentrate sul codice, progettate da zero per uno sviluppo di un'IA responsabile rispetto a modelli di dimensioni simili.
Utilizzando le metriche di valutazione dei benchmark di programmazione descritte in questo documento, hanno dimostrato di offrire prestazioni superiori rispetto ad altri modelli di dimensioni comparabili, modelli aperti.