A META AI lança, agora no final de janeiro de 2024, o Code Llama, um modelo de linguagem avançado (LLM) que pode usar prompts de texto para gerar código de programação.
O Code Llama é líder de mercado entre os LLMs disponíveis publicamente para tarefas de programação e tem o potencial de tornar os fluxos de trabalho mais rápidos e eficientes para desenvolvedores atuais, além de reduzir as barreiras de entrada para pessoas que estão aprendendo a programar.
O Code Llama está disponível em três versões:
- CodeLlama, o modelo de código fundamental;
- CodeLlama – Python, especializado para Python;
- Code Llama – Instruct, afinado para compreender instruções em linguagem natural.
O Code Llama é um modelo de linguagem avançado (LLM) de última geração capaz de gerar código e linguagem natural sobre código a partir de prompts tanto de código(de programação) quanto de linguagem natural.
O Code Llama é gratuito para pesquisa e uso comercial.
Em nossos próprios testes de referência, o Code Llama superou os modelos de linguagem disponíveis publicamente em tarefas de código.
Como o Code Llama Funciona?
O Code Llama é uma versão especializada em código do Llama 2, que foi criada através de treinamento adicional do Llama 2 em seus conjuntos de dados específicos de código, amostrando mais dados desse mesmo conjunto por um período mais longo.
Essencialmente, o Code Llama apresenta capacidades de codificação aprimoradas, construídas sobre o Llama 2.
Ele pode gerar código e linguagem natural sobre código a partir de prompts tanto de código quanto de linguagem natural (por exemplo, “Escreva uma função que gere a sequência de Fibonacci”). Também pode ser usado para conclusão de código e debugging.
Linguagens Suportadas
Suporta muitas das linguagens mais populares usadas hoje, incluindo Python, C++, Java, PHP, Typescript (Javascript), C# e Bash.
Tamanho do Code Llama
Estamos lançando quatro tamanhos do Code Llama com parâmetros de 7B, 13B, 34B e 70B.
Treinamento
Cada um desses modelos é treinado com 500B de tokens de código e dados relacionados a código, exceto o 70B, que é treinado com 1TB de tokens.
Os modelos base e instruct de 7B e 13B também foram treinados com a capacidade de preenchimento no meio (Fill-in-the-middle) permitindo que eles insiram código em código existente, o que significa que podem oferecer suporte a tarefas como conclusão de código imediatamente.
Os três modelos atendem a diferentes requisitos de serviço e latência. O modelo de 7B, por exemplo, pode ser utilizado em uma única GPU.
Os modelos de 34B e 70B apresentam os melhores resultados e permitem uma assistência de codificação mais eficaz, mas os modelos menores de 7B e 13B são mais rápidos e mais adequados para tarefas que exigem baixa latência, como a conclusão de código em tempo real.
Janela de Contexto
Os modelos do Code Llama proporcionam gerações estáveis com até 100.000 tokens de contexto.
Todos os modelos são treinados em sequências de 16.000 tokens e mostram melhorias em entradas com até 100.000 tokens.
Além de ser um requisito para gerar programas mais extensos, ter sequências de entrada mais longas desbloqueia novos casos de uso empolgantes para um LLM de código.
Por exemplo, os usuários podem fornecer mais contexto do seu código-fonte para tornar as gerações mais relevantes.
Isso também auxilia em cenários de debugging em bases de código maiores, onde acompanhar todo o código relacionado a um problema específico pode ser desafiador para os desenvolvedores.
Quando os desenvolvedores se deparam com a debugging de um grande trecho de código, eles podem passar todo o comprimento do código para o modelo.
Adicionalmente, aprimoramos ainda mais duas variações adicionais do Code Llama:
- Code Llama – Python e
- Code Llama – Instruct.
Code Llama – Python
É uma variação especializada em linguagem do Code Llama, refinada ainda mais com 100 bilhões de tokens de código Python.
Como o Python é a linguagem mais avaliada para geração de código – e porque Python e PyTorch desempenham um papel importante na comunidade de IA – acreditamos que um modelo especializado oferece utilidade adicional.
Code Llama – Instruct
É uma variação ajustada e alinhada com instruções do Code Llama. A afinação de instruções continua o processo de treinamento, mas com um objetivo diferente.
O modelo recebe uma entrada de “instrução em linguagem natural” e a saída esperada. Isso o torna melhor em compreender o que os humanos esperam de seus prompts.
Recomendamos o uso das variantes Code Llama – Instruct sempre que estiver usando o Code Llama para geração de código, já que o Code Llama – Instruct foi ajustado para gerar respostas úteis e seguras em linguagem natural.
Não recomendamos o uso do Code Llama ou Code Llama – Python para realizar tarefas gerais em linguagem natural, pois nenhum desses modelos foi projetado para seguir instruções em linguagem natural. O Code Llama é especializado em tarefas específicas de programação e não é adequado como modelo fundamental para outras tarefas.
Performance
Para testar o desempenho do Code Llama em relação às soluções existentes, utilizamos dois benchmarks populares de programação: HumanEval e Mostly Basic Python Programming (MBPP).
O HumanEval avalia a capacidade do modelo de completar código com base em docstrings, enquanto o MBPP avalia a capacidade do modelo de escrever código com base em uma descrição.
Nossos testes de referência mostraram que o Code Llama teve um desempenho superior a LLMs de código aberto específicos para código e superou o Llama 2.
O Code Llama 34B, por exemplo, obteve uma pontuação de 53,7% no HumanEval e 56,2% no MBPP, a mais alta em comparação com outras soluções de código aberto de ponta, e em pé de igualdade com o ChatGPT.
ATENÇÃO: Riscos Existem
Como acontece com toda tecnologia de ponta, o Code Llama traz consigo riscos. Construir modelos de IA de maneira responsável é crucial, e tomamos inúmeras medidas de segurança antes de lançar o Code Llama.
Como parte de nossos esforços de equipe de teste de segurança (red teaming), realizamos uma avaliação quantitativa do risco do Code Llama em gerar código malicioso.
Criamos prompts que tentavam solicitar código malicioso com uma intenção clara e avaliamos as respostas do Code Llama em relação ao ChatGPT (GPT3.5 Turbo). Nossos resultados mostraram que o Code Llama respondeu com respostas mais seguras.
Programadores já estão utilizando LLMs para auxiliar em uma variedade de tarefas, desde a escrita de novos softwares até a debugging de códigos existentes.
O objetivo é tornar os fluxos de trabalho dos desenvolvedores mais eficientes, para que possam se concentrar nos aspectos mais centrados no ser humano de seu trabalho, em vez de tarefas repetitivas.
Abordagem Open Source
Na Meta, acreditamos que os modelos de IA, especialmente os LLMs para codificação, se beneficiam mais de uma abordagem aberta, tanto em termos de inovação quanto de segurança.
Modelos específicos para código, disponíveis publicamente, podem facilitar o desenvolvimento de novas tecnologias que melhoram a vida das pessoas.
Ao lançar modelos de código, como o Code Llama, toda a comunidade pode avaliar suas capacidades, identificar problemas e corrigir vulnerabilidades.
O futuro da IA generativa para codificação
O Code Llama é projetado para apoiar engenheiros de software em todos os setores – incluindo pesquisa, indústria, projetos de código aberto, ONGs e empresas. No entanto, há muitos mais casos de uso para apoiar do que nossos modelos base e instruct podem atender.
Esperamos que o Code Llama inspire outros a aproveitar o Llama 2 para criar novas ferramentas inovadoras para pesquisa e produtos comerciais.
_______________
Fonte: https://ai.meta.com/blog/code-llama-large-language-model-coding/
Tradução: ChatGPT3.5; Edição: Admin