- Com a crescente demanda por assistência em programação, a Meta apresentou o Code Llama, ampliando as opções de geração, conclusão e depuração de código com base em modelos abertos
- O modelo é uma versão do Llama 2 treinada adicionalmente com dados de código, capaz de lidar com tarefas de programação tanto a partir de prompts em código quanto em linguagem natural
- Está disponível nos tamanhos 7B, 13B, 34B e 70B, e o modelo 70B foi adicionado em 29 de janeiro de 2024 como o maior e mais poderoso da família Code Llama
- Divide-se em modelo básico, modelo especializado em Python e variante Instruct para instruções em linguagem natural, e deve ser escolhido conforme latência, desempenho e objetivo de uso
- O uso em pesquisa e comercial é gratuito, mas é preciso seguir a licença e a política de uso aceitável, além de realizar avaliações de segurança da geração de código
Tarefas de código que o Code Llama pretende atender
- Code Llama é um grande modelo de linguagem para programação capaz de gerar código a partir de prompts em texto
- Busca desempenho de ponta em tarefas de código entre os LLMs abertos e tem potencial para tornar o fluxo de trabalho dos desenvolvedores mais rápido e eficiente
- Pode ser usado como ferramenta de produtividade e educação, reduzindo a barreira de entrada para quem está aprendendo a programar e ajudando programadores a escrever software mais robusto e bem documentado
- A Meta lançou o Code Llama sob a mesma licença comunitária do Llama 2
Llama 2 treinado adicionalmente com dados de código
- O Code Llama é uma versão especializada em código criada ao treinar ainda mais o Llama 2 com um conjunto de dados dedicado a código
- Pode receber como entrada tanto código quanto prompts em linguagem natural e gerar código e linguagem natural relacionada a código
- Exemplo de prompt: “escreva uma função que imprima a sequência de Fibonacci”
- Também pode ser usado para conclusão e depuração de código
- As linguagens suportadas incluem Python, C++, Java, PHP, Typescript(JavaScript), C#, Bash
Critérios de escolha por tamanho e contexto
- O Code Llama está disponível com 7B, 13B, 34B e 70B parâmetros
- Os modelos 7B, 13B e 34B foram treinados com 500B tokens de código e dados relacionados a código, e o modelo 70B foi treinado com 1T tokens
- Os modelos básicos e Instruct de 7B e 13B também foram treinados com o recurso fill-in-the-middle(FIM), que permite inserir código no meio de código existente
- Isso possibilita oferecer suporte direto a tarefas como conclusão de código
- O tamanho do modelo varia conforme a forma de disponibilização e os requisitos de latência
- O modelo 7B pode ser disponibilizado em uma única GPU
- Os modelos 34B e 70B oferecem os melhores resultados e melhor suporte à programação
- Os modelos 7B e 13B são mais rápidos, portanto mais adequados para tarefas que exigem baixa latência, como conclusão de código em tempo real
- Os modelos Code Llama oferecem geração estável com contexto de até 100.000 tokens
- Todos os modelos foram treinados com sequências de 16.000 tokens
- Houve melhora observada com entradas de até 100.000 tokens
Três variantes: básica, Python e Instruct
- A família Code Llama se divide em três variantes
- Code Llama: modelo básico de código
- Code Llama - Python: modelo especializado em Python
- Code Llama - Instruct: modelo ajustado para entender instruções em linguagem natural
- O Code Llama - Python recebeu ajuste fino adicional com 100B tokens de código Python
- Python é a linguagem mais usada em benchmarks de geração de código
- Python e PyTorch têm papel importante na comunidade de IA
- O Code Llama - Instruct é uma variante cujo treinamento continuou com entradas de instruções em linguagem natural e saídas esperadas
- Foi projetado para entender melhor o que as pessoas esperam de um prompt
- Foi ajustado para gerar respostas úteis e seguras em linguagem natural
- Ao usar o Code Llama para geração de código, recomenda-se a variante Code Llama - Instruct
- Code Llama e Code Llama - Python não foram projetados para seguir instruções em linguagem natural, por isso não são recomendados para tarefas gerais em linguagem natural
- O Code Llama é voltado a tarefas especializadas em código e não é adequado como modelo base para outros tipos de tarefa
Lançamento adicional do Code Llama 70B
- Na atualização de 29 de janeiro de 2024, o Code Llama 70B foi lançado
- O 70B é o maior e mais poderoso modelo da família Code Llama
- Ele é oferecido nas mesmas três versões do Code Llama existente, todas gratuitas para uso em pesquisa e comercial
- CodeLlama - 70B: modelo básico de código
- CodeLlama - 70B - Python: modelo 70B especializado em Python
- Code Llama - 70B - Instruct 70B: modelo ajustado para entender instruções em linguagem natural
Benchmarks e avaliação de segurança
- A avaliação de desempenho foi realizada com dois benchmarks de programação
- Nos benchmarks, o Code Llama mostrou desempenho melhor que LLMs abertos especializados em código e que o Llama 2
- O Code Llama 34B registrou 53,7% no HumanEval e 56,2% no MBPP
- Foi um dos níveis mais altos em comparação com soluções abertas de ponta disponíveis publicamente e ficou em nível semelhante ao ChatGPT
- Antes do lançamento, a Meta realizou várias medidas de segurança e quantificou, em processo de red team, o risco de geração de código malicioso
- Foram criados prompts solicitando código malicioso com intenção explícita
- As respostas do Code Llama foram comparadas e pontuadas em relação às respostas do GPT-3.5 Turbo do ChatGPT
- Nos resultados, o Code Llama apresentou respostas mais seguras
- Detalhes do red team com especialistas em IA responsável, engenharia de segurança ofensiva, desenvolvimento de malware e engenharia de software estão incluídos no artigo de pesquisa
Materiais públicos e uso responsável
- A receita de treinamento do Code Llama foi publicada no repositório do GitHub
- Os pesos do modelo também são fornecidos
- O artigo de pesquisa inclui o desenvolvimento do Code Llama, a forma de teste em benchmarks, limitações, desafios conhecidos, medidas de mitigação e temas para investigação futura
- O Responsible Use Guide também foi atualizado
- Definição de políticas de conteúdo e medidas de mitigação
- Preparação de dados
- Ajuste fino do modelo
- Avaliação e melhoria de desempenho
- Resposta a riscos no nível de entrada e saída
- Construção de transparência e mecanismos de relato nas interações com usuários
- Desenvolvedores devem avaliar o modelo com benchmarks especializados em código
- Recomenda-se pesquisa de segurança para casos de uso especializados em código, como geração de malware, vírus de computador e código malicioso
- Também se recomenda o uso de conjuntos de dados de segurança para avaliação automática e humana, além de red team com base em prompts adversariais
Papel no ecossistema de modelos abertos para programação
- O Code Llama foi projetado para apoiar engenheiros de software em vários campos, como pesquisa, indústria, projetos open source, ONGs e empresas
- Ainda restam muitos casos de uso além do escopo que os modelos básicos e Instruct conseguem atender
- A Meta espera que o Code Llama incentive outras pessoas a usar o Llama 2 para criar novas ferramentas para pesquisa e produtos comerciais
- Materiais relacionados:
1 comentários
Opiniões no Hacker News