Página del modelo: CodeGemma
Recursos y documentación técnica:
Condiciones de Uso: Condiciones
Autores: Google
Información del modelo
Resumen del modelo
Descripción
CodeGemma es una familia de modelos ligeros de código abierto construidos sobre Gemma. Los modelos de CodeGemma son modelos de texto a texto y de texto a código solo con decodificador, y son Está disponible como una variante previamente entrenada de 7,000 millones que se especializa en completar código. de generación de código y código, una variante de 7,000 millones de parámetros ajustada a instrucciones seguimiento de instrucciones y chat de código, y una variante previamente entrenada de 2,000 millones de parámetros para completar el código rápidamente.
Entradas y salidas
Entrada: Para variantes de modelos previamente entrenados, usa prefijo de código y, opcionalmente, sufijo para situaciones de finalización y generación de código, o texto/instrucciones en lenguaje natural. Para la variante de modelo ajustado para instrucciones: texto en lenguaje natural o instrucción.
Resultado: Para variantes de modelos previamente entrenados: código de relleno del medio la finalización, el código y el lenguaje natural. Para la variante de modelo ajustado para instrucciones: código y lenguaje natural.
Cita
@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}
}
Datos del modelo
Conjunto de datos de entrenamiento
Usando Gemma como modelo base, se usan las variantes previamente entrenadas de CodeGemma 2B y 7B más de 500,000 a 1,000,000 millones de tokens adicionales de tokens datos de lenguaje provenientes de conjuntos de datos matemáticos de código abierto y generados de forma sintética código.
Procesamiento de datos de entrenamiento
Para entrenar CodeGemma, se aplicaron las siguientes técnicas de procesamiento previo de datos:
- FIM: Los modelos de CodeGemma previamente entrenados se centran en las tareas de relleno del medio (FIM). Los modelos se entrenan para trabajar con los modos PSM y SPM. Nuestra configuración de FIM es Tasa de FIM del 80% al 90% con PSM/SPM de 50 a 50.
- Técnicas de empaquetado léxico de dependencias y empaquetado léxico basados en pruebas de dependencias: Para mejorar la alineación de los modelos con aplicaciones del mundo real, estructuramos el entrenamiento de ejemplo a nivel de proyecto o repositorio para colocar la fuente más relevante dentro de cada repositorio. Específicamente, empleamos dos heurísticas el empaquetado basado en grafos de dependencia y el empaquetado léxico basado en pruebas de unidades.
- Desarrollamos una técnica novedosa para dividir los documentos en prefijos, medio y el sufijo para que el sufijo comience en una forma más natural punto en lugar de una distribución puramente aleatoria.
- Seguridad: Al igual que Gemma, implementamos filtros de seguridad estrictos, que incluyen filtrado de datos personales, filtrado de CSAM y otros filtros basados en contenido calidad y seguridad en línea con nuestras políticas.
Información de implementación
Hardware y frameworks que se usan durante el entrenamiento
Como Gemma, CodeGemma se entrenó con la última generación de Unidad de procesamiento tensorial (TPU) hardware (TPUv5e), con JAX y AA Rutas de aprendizaje.
Información de la evaluación
Resultados de comparativas
Enfoque de evaluación
- Comparativas de finalización de código: HumanEval (HE) (completado de una línea y varias líneas)
- Comparativas de generación de código: HumanEval, MBPP, BabelCode (BC) [C++, C#, Go, Java, JavaScript, Kotlin, Python y Rust]
- Preguntas y respuestas: BoolQ, PIQA, TriviaQA
- Lenguaje natural: ARC-Challenge, HellaSwag, MMLU y WinoGrande
- Motivo matemático: GSM8K, MATH
Resultados de comparativas de programación
Comparativa | 2,000 MILLONES | 2,000 M (1.1) | 7,000 millones | 7B-TI | 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 |
Línea única de HumanEval | 78.4 | 79.3 | 76,1 | 68,3 | 77,4 |
HumanEval, varias líneas | 51.4 | 51,0 | 58.4 | 20.1 | 23,7 |
C++ de BC HE | 24.2 | 19.9 | 32,9 | 42.2 | 46,6 |
C#, educación superior | 10.6 | 26.1 | 22,4 | 26,7 | 54.7 |
BC HE Go | 20,5 | 18.0 | 21,7 | 28.6 | 34.2 |
Bachillerato Java | 29.2 | 29,8 | 41,0 | 48,4 | 50,3 |
JavaScript de educación superior | 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 |
Java de BC MBPP | 41.8 | 49,7 | 50,3 | 57,3 | 62.9 |
JavaScript de BC MBPP | 45,3 | 45.0 | 58.2 | 61.4 | 61.4 |
Kotlin de BC MBPP | 46.8 | 49,7 | 54.7 | 59.9 | 62.6 |
BC MBPP de Python | 38,6 | 52.9 | 59.1 | 62.0 | 60.2 |
Rust de MBPP de BC | 45,3 | 47,4 | 52.9 | 53,5 | 52,3 |
Comparativas de lenguaje natural (en modelos 7,000 millones)
Ética y seguridad
Evaluaciones de ética y seguridad
Enfoque de las evaluaciones
Nuestros métodos de evaluación incluyen evaluaciones estructuradas y formación interna del equipo de emergencias pruebas de políticas de contenido relevantes. La formación de equipos rojos fue llevada a cabo por varias equipos diferentes, cada uno con objetivos y métricas de evaluación humanas diferentes. Estos modelos se evaluaron frente a una serie de diferentes categorías relevantes para de ética y seguridad, lo que incluye:
Evaluación humana de las indicaciones sobre la seguridad y representación del contenido y los daños causados. Consulta la Tarjeta de modelo Gemma para obtener más detalles sobre el enfoque de evaluación.
Pruebas específicas de las capacidades de ciberdelincuencia, enfocada en las pruebas autónomas de hackear y garantizar que los daños potenciales sean limitados.
Resultados de la evaluación
Los resultados de las evaluaciones de ética y seguridad se encuentran dentro de los umbrales aceptables. para la reunión políticas internas para categorías como seguridad infantil, seguridad del contenido, daños a la representación memorización, perjuicios a gran escala. Consulta la Tarjeta de modelo Gemma para obtener más información.
Uso del modelo y limitaciones
Limitaciones conocidas
Los modelos grandes de lenguaje (LLM) tienen limitaciones según sus datos de entrenamiento y las limitaciones inherentes de la tecnología. Consulta la Tarjeta de modelo Gemma para obtener más información sobre las limitaciones de los LLM.
Consideraciones y riesgos éticos
El desarrollo de modelos grandes de lenguaje (LLM) plantea varios problemas éticos. Hemos considerado cuidadosamente varios aspectos en el desarrollo de estas e implementar modelos automáticamente.
Consulta la misma discusión en la tarjeta de modelo Gemma para obtener detalles del modelo.
Uso previsto
Aplicación
Los modelos de Code Gemma tienen una amplia gama de aplicaciones, que varían entre TI y PT. La siguiente lista de posibles usos no es exhaustiva. El de esta lista es proporcionar información contextual sobre los posibles casos de uso que los creadores de modelos consideraron como parte del entrenamiento de modelos y en el desarrollo de software.
- Finalización de código: Los modelos PT se pueden usar para completar el código con una extensión de IDE
- Generación de código: El modelo de TI se puede usar para generar código con o sin un IDE. extensión
- Code Conversation: un modelo de TI puede impulsar interfaces de conversación para debatir código
- Educación de código: El modelo de TI admite experiencias interactivas de aprendizaje de código y ayuda para corregir sintaxis o ofrece práctica de codificación
Beneficios
En el momento del lanzamiento, esta familia de modelos brindaba Implementaciones de modelos grandes de lenguaje centradas en el código diseñadas desde cero para el desarrollo de una IA responsable en comparación con modelos de tamaño similar.
Con las métricas de evaluación comparativas de programación descritas en este documento, estas han demostrado ofrecer un rendimiento superior a otros modelos de tamaño comparable alternativas de modelo abierto.