Página de modelo:CodeGemma
Recursos e documentação técnica:
Termos de Uso: Termos
Autores: Google
Informações do modelo
Resumo do modelo
Descrição
O CodeGemma é uma família de modelos leves de código aberto criados com base no Gemma. Os modelos CodeGemma são modelos somente decodificadores de texto para texto e texto para código disponível como uma variante de 7 bilhões de variantes pré-treinadas, especializada em preenchimento de código e tarefas de geração de código, uma variante de 7 bilhões de parâmetros ajustada por instruções chat de código e instruções, além de uma variante pré-treinada com 2 bilhões de parâmetros para rápido preenchimento de código.
Entradas e saídas
Entrada:para variantes de modelo pré-treinadas: prefixo de código e sufixo opcional para cenários de geração e preenchimento de código ou texto/comando em linguagem natural. Para a variante de modelo ajustado por instruções: texto ou comando em linguagem natural.
Saída:para variantes de modelo pré-treinadas: código de preenchimento no meio preenchimento automático, código e linguagem natural. Para a variante de modelo ajustado por instruções: código e linguagem natural.
Citação
@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}
}
Dados do modelo
Conjunto de dados de treinamento
Usando o Gemma como modelo base, as variantes pré-treinadas do CodeGemma 2B e 7B são foi treinado com mais 500 a 1.000 bilhões de tokens, principalmente em inglês, dados de linguagem de conjuntos de dados matemáticos de código aberto e gerados sinteticamente o código-fonte.
Processamento de dados de treinamento
As seguintes técnicas de pré-processamento de dados foram aplicadas para treinar o CodeGemma:
- FIM: os modelos pré-treinados do CodeGemma se concentram nas tarefas de preenchimento no meio (FIM, na sigla em inglês). Os modelos são treinados para funcionar com os modos PSM e SPM. Nossas configurações da FIM são Taxa de FIM de 80% a 90% com 50-50 PSM/SPM.
- Técnicas de empacotamento baseado em gráficos de dependência e de empacotamento léxico baseado em teste de unidade: Para melhorar o alinhamento de modelos com aplicações reais, estruturamos o treinamento exemplos no nível do projeto/repositório para colocar a origem mais relevante em cada repositório. Usamos duas tabelas heurísticas : empacotamento baseado em gráficos de dependência e empacotamento lexical com base em testes de unidade.
- Desenvolvemos uma nova técnica para dividir os documentos em prefixos, do meio e o sufixo para fazer com que o sufixo comece de forma mais sintaticamente natural em um ponto de acesso, em vez de uma distribuição puramente aleatória.
- Segurança: assim como o Gemma, implementamos filtros de segurança rigorosos, incluindo filtragem de dados pessoais, filtragem de material de abuso sexual infantil e outras filtragens com base no conteúdo para manter a qualidade e a segurança alinhadas nossas políticas.
Informações de implementação
Hardware e frameworks usados durante o treinamento
Como a Gemma, O CodeGemma foi treinado na última geração de Unidade de Processamento de Tensor (TPU) (TPUv5e), usando JAX e ML Programas de treinamentos.
Informações da avaliação
Resultados da comparação
Abordagem de avaliação
- Comparativos de preenchimento de código: HumanEval (HE) (preenchimento de linha única e várias linhas)
- Comparativos de mercado de geração de código: HumanEval, MBPP, BabelCode (BC) [C++, C#, Go, Java, JavaScript, Kotlin, Python, Rust]
- Perguntas e respostas: BoolQ, PIQA, TriviaQA
- Linguagem natural: ARC-Challenge, HellaSwag, MMLU, WinoGrande
- Raciocínio matemático: GSM8K, MATH
Resultados do comparativo de mercado de programação
Benchmark | 2 bilhões | 2B (1,1) | 7 bi | 7 bi | 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 |
Linha única da HumanEval | 78,4 | 79,3 | 76,1 | 68,3 | 77,4 |
Multilinha HumanEval | 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 em Java | 29,2 | 29,8 | 41,0 | 48,4 | 50,3 |
JavaScript do 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 em 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 |
C# do MBPP da BC | 28,7 | 45,3 | 32,5 | 41,2 | 62,0 |
MBPP Go do BC | 45,6 | 38,9 | 43,3 | 46,2 | 53.2 |
Java do BC MBPP | 41,8 | 49,7 | 50,3 | 57,3 | 62,9 |
JavaScript do BC MBPP | 45,3 | 45,0 | 58.2 | 61,4 | 61,4 |
Kotlin do BC MBPP | 46,8 | 49,7 | 54,7 | 59,9 | 62,6 |
Python do BC MBPP | 38,6 | 52,9 | 59,1 | 62,0 | 60.2 |
Rust do BC MBPP | 45,3 | 47,4 | 52,9 | 53,5 | 52,3 |
Comparativos de mercado de linguagem natural (em 7 bilhões de modelos)
Ética e segurança
Avaliações de ética e segurança
Abordagem de avaliações
Nossos métodos de avaliação incluem avaliações estruturadas e equipe vermelha interna testes de políticas de conteúdo relevantes. A equipe vermelha foi conduzida por vários equipes diferentes, cada uma com metas e métricas de avaliação humana diferentes. Esses modelos foram avaliados em relação a várias categorias diferentes ética e segurança, incluindo:
Avaliação humana em tópicos sobre segurança e representatividade de conteúdo danos. Consulte a Card de modelo Gemma para mais detalhes sobre a abordagem de avaliação.
Testes específicos de recursos de crimes cibernéticos, com foco em testes de ameaças recursos de hackers e garantir que os danos em potencial sejam limitados.
Resultados da avaliação
Os resultados das avaliações de ética e segurança estão dentro dos limites aceitáveis para a reunião políticas internas para categorias como segurança infantil, segurança do conteúdo, danos à representação, memorização e danos em grande escala. Consulte a Card de modelo Gemma para mais detalhes.
Uso e limitações do modelo
Limitações conhecidas
Modelos de linguagem grandes (LLMs) têm limitações com base nos dados de treinamento as limitações inerentes da tecnologia. Consulte a Card de modelo Gemma para mais detalhes sobre as limitações dos LLMs.
Considerações éticas e riscos
O desenvolvimento de modelos de linguagem grandes (LLMs) desperta várias questões éticas. Consideramos cuidadosamente vários aspectos no desenvolvimento dessas de modelos de machine learning.
Consulte a mesma discussão no card de modelo do Gemma para mais detalhes.
Uso pretendido
Aplicativo
Os modelos do Code Gemma têm uma ampla gama de aplicações, que variam entre TI e modelos PT. A lista a seguir de possíveis usos não é abrangente. O objetivo desta lista é fornecer informações contextuais sobre os possíveis casos de uso que os criadores de modelos consideraram como parte do treinamento e no desenvolvimento de software.
- Preenchimento de código: modelos PT podem ser usados para concluir o código com uma extensão de ambiente de desenvolvimento integrado.
- Geração de código: o modelo de TI pode ser usado para gerar código com ou sem um IDE extensão
- Conversa de código: o modelo de TI pode potencializar interfaces de conversa que discutem código
- Educação em código: o modelo de TI oferece suporte a experiências de aprendizado com código interativo, ajuda na correção de sintaxe ou oferece prática de programação
Vantagens
No momento do lançamento, essa família de modelos oferece alto desempenho implementações de modelos de linguagem grandes focadas no código projetadas do zero para o desenvolvimento de IA responsável em comparação com modelos de tamanho semelhante.
Usando as métricas de avaliação do comparativo de mercado de programação descritas neste documento, mostraram oferecer desempenho superior a outros modelos de alternativas de modelos abertos.