Tarjeta de modelo de CodeGemma

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 solo decodificadores de texto a texto y de texto a código, y están disponibles como una variante previamente entrenada de 7,000 millones que se especializa en tareas de finalización y generación de código, una variante ajustada con instrucciones de 7,000 millones de parámetros para el seguimiento de instrucciones y el chat de código, y otra de 2,000 millones de parámetros previamente entrenados para completar el código rápidamente.

Entradas y salidas

  • Entrada: Para las variantes de un modelo previamente entrenado, usa el prefijo de código y, de forma opcional, el sufijo para situaciones de finalización y generación de código, o texto o instrucción en lenguaje natural. Para la variante de modelo ajustado para instrucciones: texto o instrucción en lenguaje natural.

  • Resultado: Para variantes de modelos previamente entrenados: finalización de código en el medio, código y lenguaje natural. Para la variante de modelo ajustado a 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

Con Gemma como modelo base, las variantes previamente entrenadas de CodeGemma 2B y 7B se entrenan aún más con entre 500 y 1,000 mil millones de tokens adicionales de datos principalmente en inglés provenientes de conjuntos de datos de matemáticas de código abierto y código generado de forma sintética.

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 enfocan en tareas de relleno de datos intermedios (FIM). Los modelos están entrenados para funcionar con los modos PSM y SPM. Nuestra configuración de FIM es de un 80% a un 90% con una tasa de FIM de 50 a 50 PSM/SPM.
  • Técnicas de empaquetado basado en gráficos de dependencia y empaquetado léxico basado en pruebas de unidades: para mejorar la alineación del modelo con aplicaciones del mundo real, estructuramos ejemplos de entrenamiento a nivel del proyecto o repositorio para colocar los archivos fuente más relevantes dentro de cada repositorio. En particular, empleamos dos técnicas heurísticas: el empaquetado basado en gráficos de dependencia y el empaquetado léxico basado en pruebas de unidades.
  • Desarrollamos una técnica novedosa para dividir los documentos en prefijo, medio y sufijo a fin de hacer que el sufijo comience en un punto más natural desde el punto de vista sintáctico, en lugar de una distribución puramente aleatoria.
  • Seguridad: Al igual que Gemma, implementamos filtros de seguridad rigurosos, que incluían filtros de datos personales, de CSAM y otros tipos de filtrado basados en la calidad y seguridad del contenido de acuerdo con nuestras políticas.

Información de implementación

Hardware y frameworks usados durante el entrenamiento

Al igual que Gemma, CodeGemma se entrenó con la última generación de hardware de unidad de procesamiento tensorial (TPU) (TPUv5e) mediante JAX y ML Pathways.

Información de la evaluación

Resultados de comparativas

Enfoque de la evaluación

Resultados de comparativas de programación

Benchmark 2,000 MILLONES 2,000 millones (1.1) 7,000 millones 7,000 M 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
Múltiples líneas de HumanEval 51.4 51,0 58.4 20.1 23,7
C++ de BC HE 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
Kotlin BC HE 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 para Java 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 en Python 38,6 52,9 59,1 62.0 60.2
BC MBPP Rust 45,3 47,4 52,9 53,5 52,3

Comparativas de lenguaje natural (en modelos 7B)

Gráfico de barras que compara Gemma, CodeGemma PT y CodeGemma IT en varias métricas de capacidad de lenguaje. Los tres modelos son más o menos comparables, y CodeGemma mantiene una sólida comprensión del lenguaje natural.

Ética y seguridad

Evaluaciones de ética y seguridad

Enfoque de las evaluaciones

Nuestros métodos de evaluación incluyen evaluaciones estructuradas y pruebas internas del equipo de simulación de ataque de las políticas de contenido relevantes. Varios equipos diferentes llevaron a cabo la formación de equipos de simulación de ataque, cada uno con diferentes objetivos y métricas de evaluación humana. Estos modelos se evaluaron con respecto a una serie de categorías diferentes relevantes para la ética y la seguridad, incluidas las siguientes:

  • Evaluación humana en instrucciones que abarcan la seguridad del contenido y los daños en la representación. Consulta la tarjeta de modelo de Gemma para obtener más detalles sobre el enfoque de evaluación.

  • Pruebas específicas de las capacidades de ciberdelincuencia, enfocadas en probar las capacidades de hackeo autónomo y garantizar que los posibles daños sean limitados.

Resultados de la evaluación

Los resultados de las evaluaciones de ética y seguridad se encuentran dentro de umbrales aceptables para cumplir con las políticas internas en categorías como seguridad infantil, seguridad del contenido, daño de representación, memorización y daños a gran escala. Consulta la tarjeta de modelo de Gemma para obtener más detalles.

Uso y limitaciones del modelo

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 de Gemma para obtener más detalles sobre las limitaciones de los LLM.

Consideraciones y riesgos éticos

El desarrollo de modelos grandes de lenguaje (LLM) genera varios problemas éticos. Analizamos con cuidado varios aspectos en el desarrollo de estos modelos.

Consulta el mismo debate en la tarjeta de modelo de Gemma para obtener detalles sobre el modelo.

Uso previsto

Application

Los modelos de Code Gemma tienen una amplia gama de aplicaciones, que varían entre los modelos de TI y PT. La siguiente lista de posibles usos no es exhaustiva. El propósito de esta lista es proporcionar información contextual sobre los posibles casos de uso que los creadores de modelos consideraron como parte del entrenamiento y desarrollo de modelos.

  • Compleción de código: los modelos PT se pueden usar para completar código con una extensión IDE
  • Generación de código: El modelo de TI se puede usar para generar código con o sin una extensión de IDE.
  • Conversación de código: el modelo de TI puede potenciar las interfaces de conversación en las que se analiza el código
  • Educación en código: El modelo de TI admite experiencias interactivas de aprendizaje de código, ayuda en la corrección de sintaxis o proporciona práctica de codificación

Beneficios

En el momento del lanzamiento, esta familia de modelos proporciona implementaciones de modelos grandes de lenguaje abierta de alto rendimiento centradas en código abierto diseñadas desde cero para el desarrollo de IA responsable en comparación con modelos de tamaño similar.

Con las métricas de evaluación de comparativas de programación descritas en este documento, se demostró que estos modelos proporcionan un rendimiento superior al de otras alternativas de modelos abiertos de tamaño comparable.