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 de code ouverts légers et conçus sur Gemma. Les modèles CodeGemma sont des modèles décodeur de texte-vers-texte et texte-vers-code uniquement. disponible sous la forme d'une variante pré-entraînée spécialisée dans la complétion de code de 7 milliards et de génération de code, une variante avec sept milliards d'instructions de réglage des paramètres chat de code, suivi des instructions et variante pré-entraînée de 2 milliards de paramètres pour une 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 suffixe facultatif pour les scénarios de complétion et de génération de code ou pour des textes/requêtes en langage naturel. Pour la variante de modèle avec réglage des instructions: texte ou requête en langage naturel.

  • Résultat : pour les variantes de modèle pré-entraînées, code à insérer dans le milieu la saisie semi-automatique, le code et le langage naturel. Pour une variante de modèle avec réglage des instructions: du code et du 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 un entraînement supplémentaire sur 500 à 1 000 milliards de jetons des données linguistiques issues d'ensembles de données mathématiques Open Source et générées de façon synthétique du code source.

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 de remplissage au milieu (FIM). Les modèles sont entraînés pour fonctionner avec les modes PSM et SPM. Nos paramètres FIM sont Taux FIM de 80 à 90 % avec un PSM/SPM de 50 à 50.
  • Techniques de packaging basées sur des graphiques de dépendances et de packaging lexical basées sur des tests unitaires: Pour améliorer l'alignement du modèle avec des applications réelles, nous avons structuré l'entraînement des exemples au niveau du projet/du dépôt afin de colocaliser la source la plus pertinente dans chaque dépôt. Plus précisément, nous avons utilisé deux méthodes heuristiques comme la compression basée sur des graphiques de dépendances et la compression lexicale basée sur des tests unitaires.
  • Nous avons développé une nouvelle technique pour diviser les documents en préfixe, milieu et suffixe pour que le suffixe commence de manière plus naturelle sur le plan syntaxique plutôt qu'une distribution purement aléatoire.
  • Sécurité : à l'instar de Gemma, nous avons déployé un filtrage de sécurité rigoureux incluant des éléments suivants : le filtrage des données à caractère personnel, le filtrage des contenus d'abus sexuels sur mineurs et d'autres filtres basés sur le contenu de qualité et de sécurité conformément nos Règles.

Informations sur l'implémentation

Matériel et frameworks utilisés pendant la formation

Comme Gemma, CodeGemma a été entraîné sur la dernière génération Tensor Processing Unit (TPU) (TPUv5e) avec JAX et ML Parcours.

Informations sur l'évaluation

Résultats du benchmark

Approche d'évaluation

Codage des résultats du benchmark

Benchmark 2 Mrds 2B (1.1) 7 Mrds 7 milliards 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
Ligne unique HumanEval 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 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
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 rust 45,3 47,4 52,9 53,5 52,3

Benchmarks du langage naturel (sur les modèles 7B)

Graphique à barres comparant Gemma, CodeGemma PT et CodeGemma IT pour différentes métriques de 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 éthiques et de sécurité

Approche des évaluations

Nos méthodes d'évaluation incluent les évaluations structurées et le Red-teaming interne en testant les règles relatives au contenu applicables. La Red Teaming a été menée par un certain nombre de différentes équipes, chacune avec des objectifs et des métriques d'évaluation humaine différents. Ces modèles ont été évalués par rapport à un certain nombre de catégories différentes pertinentes pour l'éthique et la sécurité, y compris:

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

  • Tests spécifiques des capacités de cybercriminalité, axés sur les tests autonomes les capacités de piratage et de s’assurer que les dommages potentiels sont limités.

Résultats d'évaluation

Les résultats des évaluations éthiques et de sécurité sont dans la limite des seuils acceptables pour la réunion Règles internes pour des catégories telles que la sécurité des enfants, la sécurité du contenu, les préjudices de représentation, la mémorisation, les préjudices à grande échelle. Consultez le Fiche de modèle Gemma pour en savoir plus.

Utilisation et limites du modèle

Limites connues

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

Considérations et risques éthiques

Le développement des grands modèles de langage (LLM) soulève plusieurs problèmes éthiques. Nous avons étudié de nombreux aspects du développement des modèles de ML.

Veuillez vous référer à la même discussion dans la fiche du modèle Gemma pour les détails du modèle.

Utilisation prévue

Application

Les modèles Code Gemma ont un large éventail d'applications, qui varient entre les services PT. La liste suivante d'utilisations potentielles n'est pas exhaustive. La l'objectif de cette liste est de fournir des informations contextuelles sur les des cas d'utilisation pris en compte par les créateurs lors de l'entraînement développement d'applications.

  • Complétion de code: les modèles PT peuvent être utilisés pour compléter du 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 IDE extension
  • Conversation de code: le modèle informatique peut alimenter des interfaces de conversation qui traitent coder
  • Formation au codage: le modèle informatique prend en charge des expériences d'apprentissage du code interactives, ainsi que des aides en correction de syntaxe ou permet de s'entraîner au codage

Avantages

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

À l'aide des métriques d'évaluation du benchmark de codage décrites dans ce document, ces ont démontré des performances supérieures à celles d'autres modèles de taille comparable des alternatives de modèles ouverts.