CodeGemma-Modellkarte

Modellseite:CodeGemma

Ressourcen und technische Dokumentation:

Nutzungsbedingungen: Nutzungsbedingungen

Autoren: Google

Modellinformationen

Modellübersicht

Beschreibung

CodeGemma ist eine Familie einfacher offener Code-Modelle, die auf Gemma aufbauen. CodeGemma-Modelle sind reine Text-zu-Text- und Text-zu-Code-Decodierer. Sie sind als 7 Milliarden vortrainierte Variante verfügbar, die sich auf Codevervollständigungs- und Codegenerierungsaufgaben spezialisiert hat, eine mit 7 Milliarden Parametern angepasste Variante für Codechats und Anweisungen und eine vortrainierte Variante mit 2 Milliarden Parametern für eine schnelle Codevervollständigung.

Ein- und Ausgaben

  • Eingabe:Für vortrainierte Modellvarianten: Codepräfix und optionales Suffix für Codevervollständigungs- und -generierungsszenarien oder Text/Prompts in natürlicher Sprache. Für eine an die Anweisungen angepasste Modellvariante: Text oder Prompt in natürlicher Sprache.

  • Ausgabe:Für vortrainierte Modellvarianten: Codevervollständigung in der Mitte, Code und natürliche Sprache. Für auf Anweisungen abgestimmte Modellvariante: Code und natürliche Sprache.

Zitation

@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}
}

Modelldaten

Trainings-Dataset

Die vortrainierten Varianten von CodeGemma 2B und 7B werden mithilfe von Gemma als Basismodell mit weiteren 500 bis 1.000 Milliarden Tokens hauptsächlich englischsprachiger Daten aus Open-Source-Mathematik-Datasets und synthetisch generiertem Code trainiert.

Trainingsdaten verarbeiten

Die folgenden Techniken zur Datenvorverarbeitung wurden zum Trainieren von CodeGemma angewendet:

  • FIM – Vortrainierte CodeGemma-Modelle konzentrieren sich auf Fill-in-the-Middle-Aufgaben (FIM). Die Modelle werden so trainiert, dass sie sowohl im PSM- als auch im SPM-Modus funktionieren. Unsere FIM-Einstellungen liegen bei 80% bis 90% FIM-Rate mit 50–50 PSM/SPM.
  • Techniken für eine auf Abhängigkeitsgrafik basierende und auf Einheitentests basierende lexikalische Packung: Um die Modellausrichtung auf reale Anwendungen zu verbessern, haben wir Trainingsbeispiele auf Projekt-/Repository-Ebene strukturiert, um die relevantesten Quelldateien in jedem Repository zusammenzufassen. Insbesondere haben wir zwei heuristische Techniken eingesetzt: das auf Abhängigkeitsdiagramme basierende Packing und das lexikalische Packen, das auf Unittests basiert.
  • Wir haben eine neue Methode zur Aufteilung der Dokumente in Präfixe, Mitte und Suffix entwickelt, damit das Suffix an einem syntaktisch natürlicheren Punkt statt an einer rein zufälligen Verteilung beginnt.
  • Sicherheit: Ähnlich wie Gemma haben wir gemäß unseren Richtlinien strenge Sicherheitsfilter eingeführt, darunter das Filtern von personenbezogenen Daten, das Filtern von Darstellungen des sexuellen Missbrauchs von Kindern und andere Filter auf der Grundlage von Qualität und Sicherheit von Inhalten.

Informationen zur Implementierung

Während des Trainings verwendete Hardware und Frameworks

Wie Gemma wurde auch CodeGemma mit der neuesten Generation der Tensor Processing Unit (TPU)-Hardware (TPUv5e) mit JAX- und ML-Pfaden trainiert.

Informationen zur Bewertung

Benchmarkergebnisse

Bewertungsansatz

Coding-Benchmark-Ergebnisse

Benchmark 2 Milliarden 2 B (1,1) 7 Mrd. 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 Einzellinie 78,4 79,3 76,1 68,3 77,4
HumanEval Multiline 51,4 51 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 48,4 50,3
BC HE-JavaScript 21,7 28.0 39,8 46 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
BC HE Rost 26,7 24,2 34,1 36 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
BC MBPP – JavaScript 45,3 45 58,2 61,4 61,4
BC MBPP für 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

Benchmarks für natürliche Sprache (bei 7-Milliarden-Modellen)

Balkendiagramm, in dem Gemma, CodeGemma PT und CodeGemma IT über verschiedene Messwerte zur Sprachfähigkeit verglichen werden Alle drei Modelle sind ungefähr vergleichbar, wobei CodeGemma ein starkes Natural Language Understanding behielt.

Ethik und Sicherheit

Bewertungen zu Ethik und Sicherheit

Bewertungsansatz

Unsere Bewertungsmethoden umfassen strukturierte Auswertungen und interne Red-Team-Tests relevanter Inhaltsrichtlinien. Red-Team-Einsätze wurden von verschiedenen Teams durchgeführt, die jeweils unterschiedliche Ziele und menschliche Bewertungsmesswerte verfolgten. Diese Modelle wurden anhand verschiedener Kategorien bewertet, die für Ethik und Sicherheit relevant sind, darunter:

  • Manuelle Bewertung von Prompts, in denen es um die Sicherheit von Inhalten und Darstellungsschäden geht. Weitere Informationen zum Bewertungsansatz finden Sie auf der Gemma-Modellkarte.

  • Spezifische Tests von Funktionen für Cyberangriffe, wobei das Hauptaugenmerk auf dem Testen autonomer Hacking-Funktionen und der Begrenzung potenzieller Schäden liegt.

Bewertungsergebnisse

Die Ergebnisse von Bewertungen zu Ethik und Sicherheit liegen innerhalb akzeptabler Grenzwerte, wenn es darum geht, interne Richtlinien für Kategorien wie Schutz von Kindern, Sicherheit von Inhalten, Darstellungsschäden, Erinnerungsvermögen und schwerwiegende Schäden zu erfüllen. Weitere Informationen finden Sie auf der Gemma-Modellkarte.

Modellnutzung und -einschränkungen

Bekannte Einschränkungen

Bei Large Language Models (LLMs) gelten aufgrund ihrer Trainingsdaten und der inhärenten Grenzen der Technologie Einschränkungen. Weitere Informationen zu den Einschränkungen von LLMs finden Sie auf der Gemma-Modellkarte.

Ethische Überlegungen und Risiken

Die Entwicklung von Large Language Models (LLMs) wirft mehrere ethische Bedenken auf. Bei der Entwicklung dieser Modelle haben wir mehrere Aspekte sorgfältig berücksichtigt.

Weitere Informationen zum Modell finden Sie im selben Abschnitt auf der Gemma-Modellkarte.

Verwendungszweck

Anwendung

Code-Gemma-Modelle haben ein breites Spektrum an Anwendungen, die zwischen IT- und PT-Modellen variieren. Die folgende Liste möglicher Anwendungsfälle ist nicht vollständig. Mit dieser Liste erhalten Sie Kontextinformationen zu den möglichen Anwendungsfällen, die die Modellersteller im Rahmen des Modelltrainings und der Modellentwicklung in Betracht gezogen haben.

  • Codevervollständigung: PT-Modelle können verwendet werden, um Code mit einer IDE-Erweiterung zu vervollständigen
  • Codegenerierung: Das IT-Modell kann zum Generieren von Code mit oder ohne IDE-Erweiterung verwendet werden
  • Code-Unterhaltung: Das IT-Modell kann Konversationsschnittstellen unterstützen, die Code besprechen
  • Code Education: Das IT-Modell unterstützt interaktives Code-Lernerlebnis, unterstützt die Syntaxkorrektur oder bietet Programmierübungen

Vorteile

Zum Zeitpunkt der Veröffentlichung bietet diese Modellfamilie im Vergleich zu Modellen ähnlicher Größe leistungsstarke, offene Code-basierte Large Language Models, die von Grund auf für die Entwicklung von Responsible AI entwickelt wurden.

Anhand der in diesem Dokument beschriebenen Bewertungsmesswerte für die Coding-Benchmark haben diese Modelle nachweislich eine bessere Leistung als andere offene Modellalternativen in vergleichbarer Größe bieten.