Fiche de modèle CodeGemma

Page du modèle:CodeGemma

Ressources et documentation technique:

Conditions d'utilisation:Conditions

Auteurs:Google

Informations relatives au modèle

Récapitulatif du modèle

Description

CodeGemma est une famille de modèles Open Code légers construits à partir de Gemma. Les modèles CodeGemma sont des modèles texte-vers-texte et texte-vers-code uniquement basés sur un décodeur. Ils sont disponibles sous la forme d'une variante pré-entraînée de 7 milliards de code, spécialisée dans la saisie automatique de code et de tâches de génération de code, d'une variante ajustée par des instructions de 7 milliards de paramètres pour le chat de code et d'instructions de suivi, et d'une variante pré-entraînée de 2 milliards de paramètres pour la complétion rapide du code.

Entrées et sorties

  • Entrée:pour les variantes de modèle pré-entraînées: préfixe de code et éventuellement suffixe pour les scénarios de saisie et de génération de code, ou le texte/l'invite en langage naturel. Pour une variante de modèle réglé sur les instructions: texte en langage naturel ou requête.

  • Résultat:pour les variantes de modèle pré-entraînées: saisie semi-automatique du code, code et langage naturel. Pour une variante de modèle réglé sur les instructions : code et langage naturel.

Citation

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

Données du modèle

Ensemble de données d'entraînement

En utilisant Gemma comme modèle de base, les variantes pré-entraînées de CodeGemma 2B et 7B sont davantage entraînées sur 500 à 1 000 milliards de jetons supplémentaires de données en langue anglaise principalement à partir d'ensembles de données mathématiques Open Source et de code généré de façon synthétique.

Traitement des données d'entraînement

Les techniques de prétraitement des données suivantes ont été appliquées pour entraîner CodeGemma:

  • FIM : les modèles CodeGemma pré-entraînés se concentrent sur les tâches FIM (fill-in-the-middle). Les modèles sont entraînés pour fonctionner à la fois avec les modes PSM et SPM. Nos paramètres FIM sont un taux FIM de 80% à 90% avec un taux FIM de 50 à 50 PSM/SPM.
  • Techniques de packaging lexicales basées sur des graphiques de dépendance et de tests unitaires : pour améliorer l'alignement du modèle avec des applications réelles, nous avons structuré les exemples d'entraînement au niveau du projet/dépôt afin de colocaliser les fichiers sources les plus pertinents dans chaque dépôt. Plus précisément, nous avons utilisé deux techniques heuristiques: le empaquetage basé sur des graphiques de dépendances et le empaquetage lexical basé sur des tests unitaires.
  • Nous avons mis au point une nouvelle technique de division des documents en préfixe, milieu et suffixe, afin que le suffixe commence par un point plus naturel sur le plan syntaxique plutôt que par une distribution purement aléatoire.
  • Sécurité: comme pour Gemma, nous avons déployé un filtrage de sécurité rigoureux, y compris le filtrage des données à caractère personnel, le filtrage des contenus d'abus sexuels sur mineurs et d'autres options de filtrage en fonction de la qualité et de la sécurité du contenu, conformément à nos règles.

Informations sur l'implémentation

Matériel et frameworks utilisés pendant l'entraînement

Comme Gemma, CodeGemma a été entraîné sur la dernière génération de matériel Tensor Processing Unit (TPU) (TPUv5e) à l'aide de JAX et des parcours ML.

Informations sur l'évaluation

Résultats du benchmark

Approche d'évaluation

Résultats du benchmark de codage

Benchmark 2 milliards 2B (1.1) 7 Mrds 7 Mrds de Italie 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 – Une seule ligne 78,4 79,3 76,1 68,3 77,4
HumanEval Multi-Line 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 en 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 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
BC MBPP JavaScript 45,3 45,0 58.2 61,4 61,4
Kotlin BC MBPP 46,8 49,7 54,7 59,9 62,6
BC MBPP Python 38,6 52,9 59,1 62,0 60.2
Rust BC MBPP 45,3 47,4 52,9 53,5 52,3

Benchmarks de langage naturel (sur 7 milliards de modèles)

Graphique à barres comparant Gemma, CodeGemma PT et CodeGemma IT selon différentes métriques liées aux capacités linguistiques. Ces trois modèles sont à peu près comparables, et CodeGemma conserve une excellente compréhension du langage naturel.

Éthique et sécurité

Évaluations en matière d'éthique et de sécurité

Approche basée sur les évaluations

Nos méthodes d'évaluation incluent des évaluations structurées et des tests internes de simulation des règles relatives au contenu applicables. La Red Team a été menée par plusieurs équipes différentes, chacune ayant des objectifs et des métriques d'évaluation humaines différents. Ces modèles ont été évalués en fonction de différentes catégories en rapport avec l'éthique et la sécurité, parmi lesquelles:

  • Évaluation humaine sur les requêtes portant sur la sécurité des contenus et les atteintes à la représentation. Consultez la fiche du modèle Gemma pour en savoir plus sur l'approche d'évaluation.

  • Tests spécifiques des capacités de cyberattaque visant à tester les fonctionnalités de piratage autonomes et à s’assurer que les préjudices potentiels sont limités

Résultats de l'évaluation

Les résultats des évaluations éthiques et de sécurité atteignent des seuils acceptables pour respecter les règles internes dans des catégories telles que la sécurité des enfants, la sécurité des contenus, les préjudices de représentation, la mémorisation et les préjudices à grande échelle. Pour en savoir plus, consultez la fiche du modèle Gemma.

Utilisation et limites du modèle

Limitations connues

Les grands modèles de langage (LLM) ont des limites basées sur leurs données d'entraînement et sur les limites inhérentes à la technologie. Consultez la fiche du modèle Gemma pour en savoir plus sur les limites des LLM.

Considérations et risques éthiques

Le développement de grands modèles de langage (LLM) soulève plusieurs questions éthiques. Nous avons soigneusement examiné plusieurs aspects du développement de ces modèles.

Pour en savoir plus, consultez cette discussion sur la fiche du modèle Gemma.

Utilisation prévue

Application

Les modèles Code Gemma ont un large éventail d'applications, qui diffèrent entre les modèles IT et PT. La liste d'utilisations potentielles ci-dessous n'est pas exhaustive. L'objectif de cette liste est de fournir des informations contextuelles sur les cas d'utilisation possibles que les créateurs de modèles ont envisagés pour l'entraînement et le développement du modèle.

  • Complétion de code: les modèles PT peuvent être utilisés pour finaliser le code avec une extension IDE
  • Génération de code: le modèle informatique peut être utilisé pour générer du code avec ou sans extension IDE
  • Code Conversation: un modèle informatique peut alimenter des interfaces de conversation qui discutent du code
  • Enseignement du code: le modèle informatique prend en charge des expériences d'apprentissage interactif du code, aide à la correction de la syntaxe ou permet de s'exercer au codage.

Avantages

Au moment de sa sortie, cette famille de modèles fournit des implémentations de grands modèles de langage ouverts et hautes performances axés sur le code, conçues dès le départ pour le développement d'IA responsable, par rapport à des modèles de taille similaire.

D'après les métriques d'évaluation des benchmarks de codage décrites dans ce document, ces modèles offrent des performances supérieures à celles d'autres alternatives de modèles ouverts de taille comparable.