Scheda del modello CodeGemma

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

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)

Grafico a barre che mette a confronto Gemma, CodeGemma PT e CodeGemma IT in relazione a varie metriche di capacità linguistica. Tutti e tre i modelli sono più o meno paragonabili, con CodeGemma che mantiene una forte comprensione del linguaggio naturale.

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.