Página do 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 apenas decodificadores de texto para texto e de texto para código e estão disponíveis como uma variante pré-treinada de sete bilhões especializada em tarefas de preenchimento e geração de código, uma variante ajustada por instrução de 7 bilhões para chat e instrução de código e uma variante pré-treinada de dois bilhões de parâmetros para preenchimento rápido de código.
Entradas e saídas
Entrada:para variantes de modelo pré-treinadas: prefixo de código e, opcionalmente, sufixo para cenários de preenchimento e geração de código ou texto/comando de linguagem natural. Para a variante do modelo ajustado por instruções: texto ou comando em linguagem natural.
Saída:para variantes de modelo pré-treinadas: preenchimento de código intermediário, código e linguagem natural. Para 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 treinadas com mais 500 a 1.000 bilhões de tokens de dados principalmente em inglês provenientes de conjuntos de dados matemáticos de código aberto e códigos gerados de maneira sintética.
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 concentram-se em 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 de FIM são de 80% a 90% de taxa FIM com 50-50 PSM/SPM.
- Técnicas de empacotamento lexico baseado em gráfico de dependência e teste de unidade: para melhorar o alinhamento do modelo com aplicativos reais, estruturamos exemplos de treinamento no nível do projeto/repositório para colocar os arquivos de origem mais relevantes em cada repositório. Especificamente, empregamos duas técnicas heurísticas: empacotamento baseado em gráfico de dependências e pacote lexical baseado em teste de unidade.
- Desenvolvemos uma nova técnica para dividir os documentos em prefixo, meio e sufixo para fazer com que o sufixo comece em um ponto sintaticamente natural em vez de uma distribuição puramente aleatória.
- Segurança: assim como a Gemma, também implantamos filtros de segurança rigorosos, incluindo a filtragem de dados pessoais, de material de abuso sexual infantil e outros filtros com base na segurança e na qualidade do conteúdo, de acordo com nossas políticas.
Informações de implementação
Hardware e frameworks usados durante o treinamento
Assim como o Gemma, o CodeGemma foi treinado na geração mais recente do hardware da Unidade de Processamento de Tensor (TPUv5e) usando JAX e Caminhos de ML.
Informações da avaliação
Resultados da comparação
Abordagem de avaliação
- Comparativos de mercado de preenchimento de código: HumanEval (HE) (preenchimento de uma linha e de várias linhas)
- Comparativos de geração de código: HumanEval, MBPP, BabelCode (BC) [C++, C#, Go, Java, JavaScript, Kotlin, Python, Rust]
- Perguntas e respostas: BoolQ, PIQA, TriviaQA
- Natural Language: 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 | 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 |
Linha única da HumanEval | 78,4 | 79,3 | 76,1 | 68,3 | 77,4 |
Várias linhas 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 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 |
C++ do BC MBPP | 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 |
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 |
Ferrugem do BC MBPP | 45,3 | 47,4 | 52,9 | 53,5 | 52,3 |
Comparativos de mercado de linguagem natural (em modelos de 7 bilhões)
Ética e segurança
Avaliações de ética e segurança
Abordagem de avaliações
Nossos métodos incluem avaliações estruturadas e testes internos em equipe vermelha de políticas de conteúdo relevantes. A equipe vermelha foi conduzida por várias equipes diferentes, cada uma com metas e métricas de avaliação humana distintas. Esses modelos foram avaliados em relação a várias categorias diferentes relevantes para ética e segurança, incluindo:
Avaliação humana em comandos que abordam a segurança de conteúdo e danos representativos. Consulte o card de modelo Gemma para mais detalhes sobre a abordagem de avaliação.
Teste específico de recursos de crimes cibernéticos, com foco no teste de recursos autônomos de invasão e na garantia de que os possíveis danos sejam limitados.
Resultados da avaliação
Os resultados das avaliações de ética e segurança estão dentro de limites aceitáveis para atender a políticas internas de categorias como segurança infantil, segurança do conteúdo, danos às representações, memorização e danos em grande escala. Consulte o card de modelo Gemma para mais detalhes.
Uso e limitações do modelo
Limitações conhecidas
Os modelos de linguagem grandes (LLMs) têm limitações baseadas nos dados de treinamento e nas limitações inerentes da tecnologia. Consulte o card de modelo Gemma para saber mais sobre as limitações dos LLMs.
Considerações éticas e riscos
O desenvolvimento de modelos de linguagem grandes (LLMs) gera várias preocupações éticas. Consideramos cuidadosamente vários aspectos no desenvolvimento desses modelos.
Consulte a mesma discussão (em inglês) no cartão do modelo do Gemma para mais detalhes.
Uso pretendido
Aplicativo
Os modelos Code Gemma têm uma ampla variedade de aplicações, que variam entre modelos de TI e de PT. A lista de possíveis usos a seguir não está completa. O objetivo dessa lista é fornecer informações contextuais sobre os possíveis casos de uso que os criadores do modelo consideraram como parte do treinamento e do desenvolvimento de modelos.
- Preenchimento de código: os modelos PT podem ser usados para concluir o código com uma extensão do ambiente de desenvolvimento integrado.
- Geração de código: o modelo de TI pode ser usado para gerar código com ou sem uma extensão do ambiente de desenvolvimento integrado.
- Conversa sobre código: o modelo de TI pode potencializar interfaces de conversa que discutem código
- Formação de códigos: o modelo de TI oferece suporte a experiências interativas de aprendizado de código, ajuda na correção de sintaxe ou oferece prática de programação
Vantagens
No momento do lançamento, essa família de modelos fornece implementações de modelos de linguagem grandes e focadas em código aberto de alto desempenho e projetadas do zero para o desenvolvimento de IA responsável, em comparação com modelos de tamanhos semelhantes.
Usando as métricas de avaliação do comparativo de mercado de programação descritas neste documento, esses modelos mostraram oferecer um desempenho superior a outras alternativas de modelos abertos de tamanho comparável.