Apresentando o Code Llama: Um modelo de linguagem grande de última geração para geração de código.

Apresentando o Code Llama: Um modelo de linguagem grande de última geração para geração de código.

Introdução

A IA Generativa está prestes a automatizar completamente a geração de código, embora ainda não tenha atingido esse marco. No entanto, a próxima melhor ferramenta é o Code Llama! Lançado em 2023, o mais recente gerador de código da Meta, Code Llama, é projetado para auxiliar programadores em diversas tarefas de programação. O Code Llama foca em melhorar os fluxos de trabalho dos desenvolvedores, gerar e completar código, e auxiliar em testes. Vamos explorar o Code Llama como um recurso independente e depois compará-lo a outras ferramentas de IA generativa especializadas em codificação.

Como o Code Llama funciona

O Code Llama é uma variante especializada em código do Llama 2, desenvolvida ao treinar adicionalmente o Llama 2 em conjuntos de dados específicos de código e amostrar mais dados desses conjuntos por períodos prolongados. Esse processo conferiu ao Code Llama capacidades de codificação aprimoradas, baseando-se na fundação do Llama 2. Ele pode gerar código e descrições em linguagem natural do código a partir de prompts de código e linguagem natural (por exemplo, “Escreva uma função que produza a sequência de Fibonacci.”). Além disso, pode ser usado para completar código e depuração. O Code Llama suporta muitas linguagens de programação populares, incluindo Python, C++, Java, PHP, TypeScript (JavaScript), C# e Bash.

Fonte: Meta AI

A Meta está lançando quatro tamanhos do Code Llama, com modelos de 7B, 13B, 34B e 70B parâmetros, respectivamente. Cada um desses modelos, exceto a versão de 70B, é treinado em 500B tokens de código e dados relacionados a código, enquanto o modelo de 70B é treinado em 1T tokens. Os modelos base e instruct de 7B e 13B também incluem capacidade de preenchimento no meio (FIM), permitindo inserir código em código existente e suportar tarefas como completar código imediatamente.

Esses modelos atendem a diferentes requisitos de serviço e latência. O modelo de 7B, por exemplo, pode ser servido em uma única GPU. Enquanto os modelos de 34B e 70B oferecem os melhores resultados e fornecem assistência de codificação superior, os modelos menores de 7B e 13B são mais rápidos e mais adequados para tarefas que exigem baixa latência, como completar código em tempo real.

Capacidades do Code Llama

Os modelos Code Llama fornecem 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 demonstram melhorias com entradas de até 100.000 tokens.

Essa capacidade de lidar com sequências de entrada mais longas não apenas facilita a geração de programas mais longos, mas também desbloqueia novos casos de uso para um modelo de linguagem de código (LLM). Por exemplo, os usuários podem fornecer ao modelo mais contexto de sua base de código, tornando o código gerado mais relevante. Além disso, é benéfico em cenários de depuração em bases de código maiores, onde acompanhar todo o código relacionado a um problema específico pode ser desafiador para os desenvolvedores. Ao permitir que os desenvolvedores insiram um trecho inteiro de código, o modelo pode auxiliar na depuração de seções extensas de código.

Além disso, a Meta ajustou ainda mais duas variações adicionais do Code Llama: Code Llama — Python e Code Llama — Instruct.

Code Llama — Python é uma versão especializada em linguagem, ajustada em 100B tokens de código Python. Dado que Python é a linguagem mais referenciada para geração de código e desempenha um papel significativo na comunidade de IA junto com PyTorch, este modelo especializado oferece utilidade adicional.

Code Llama — Instruct é uma variação ajustada por instrução e alinhada. O ajuste por instrução continua o processo de treinamento com um objetivo diferente, onde o modelo recebe uma entrada de “instrução em linguagem natural” e a saída esperada. Isso melhora sua capacidade de entender as expectativas humanas a partir de prompts. Recomenda-se usar as variantes Code Llama — Instruct para geração de código, pois elas são ajustadas para produzir respostas úteis e seguras em linguagem natural.

Não é recomendado usar Code Llama ou Code Llama — Python para tarefas gerais de linguagem natural, pois esses modelos não são projetados para seguir instruções em linguagem natural. Se você deseja realizar tarefas de PLN, pode escolher os modelos Llama2 ou Llama3, que podem ser acessados integrando-se à API LLM do novita.ai:

Com preços acessíveis e modelos escaláveis, a API de Inferência LLM da Novita AI oferece ao seu LLM estabilidade incrível e latência bastante baixa em menos de 2 segundos. O desempenho do LLM pode ser altamente aprimorado com a API de Inferência LLM da Novita AI.

O Code Llama é especializado para tarefas específicas de código e não é adequado como modelo base para outras aplicações.

Os usuários dos modelos Code Llama devem cumprir a licença e a política de uso aceitável da Meta.

Avaliando o desempenho do Code Llama

Para avaliar o desempenho do Code Llama em relação às soluções existentes, a Meta usou dois benchmarks populares de codificação: HumanEval e Mostly Basic Python Programming (MBPP). HumanEval avalia a capacidade do modelo de completar código com base em docstrings, enquanto MBPP testa a capacidade do modelo de escrever código com base em uma descrição.

Testes de benchmark demonstraram que o Code Llama superou outros modelos de linguagem especializados em código de código aberto e excedeu o desempenho do Llama 2. Por exemplo, o Code Llama 34B obteve uma pontuação de 53,7% no HumanEval e 56,2% no MBPP, a mais alta entre as soluções abertas de última geração e comparável ao ChatGPT.

Como toda tecnologia de ponta, o Code Llama apresenta certos riscos. Construir modelos de IA de forma responsável é crucial, por isso várias medidas de segurança foram implementadas antes do lançamento do Code Llama. Como parte dos esforços de red teaming, foi realizada uma avaliação quantitativa para avaliar o risco de o Code Llama gerar código malicioso. Foram usados prompts projetados para solicitar código malicioso com intenção clara, e as respostas do Code Llama foram comparadas às do ChatGPT (GPT-3.5 Turbo). Os resultados indicaram que o Code Llama forneceu respostas mais seguras.

Como usar o Code Llama

O Code Llama não é acessível diretamente através de um site ou plataforma. Em vez disso, está disponível no GitHub e pode ser baixado para uso local. Aqui estão algumas maneiras de acessar o Code Llama:

1. Integração com Chatbot: Perplexity-AI, uma IA baseada em texto semelhante ao ChatGPT, integrou a versão de 34B parâmetros do Code Llama. Isso permite que os usuários gerem código por meio de prompts de texto. O Perplexity-AI oferece várias variantes focadas em linguagens de programação específicas, como Python, Java, C++ e JavaScript.

2. Integração de Modelo: Hugging Face, uma plataforma de código aberto, fornece modelos padrão que podem ser usados para gerar código facilmente.

3. Ambiente de Desenvolvimento Integrado (IDE): Ollama é uma biblioteca do Code Llama que pode ser baixada e integrada diretamente em IDEs. Isso permite que os usuários utilizem modelos de linguagem grandes localmente.

Neste tutorial, vamos demonstrar as capacidades do Code Llama usando o Perplexity AI. Começaremos definindo e criando funções de ordenação. Primeiro, criaremos uma função de ordenação binária, que é semelhante à ordenação por inserção, mas usa busca binária para determinar a posição do elemento. Em seguida, perguntaremos ao Perplexity se existem outros algoritmos comparáveis à ordenação binária. Por fim, solicitaremos ao Perplexity que gere uma classe Sorting contendo algumas dessas funções.

Prompt:

Eu tenho uma classe Python que se beneficiaria de um algoritmo de ordenação binária. Você poderia criar uma classe Python que receba uma lista de valores, os ordene usando ordenação binária e retorne a lista ordenada?

Resposta:

Prompt:

Existe algum outro algoritmo comparável ou melhor que a ordenação binária?

Resposta:

Prompt:

Na verdade, eu gostaria de ter opções de ordenação para minhas necessidades. Você pode criar uma classe Sorting com funcionalidades de ordenação binária, ordenação rápida e ordenação por intercalação?

Resposta:

Quem se beneficia do Code Llama

Os programadores já estão usando modelos de linguagem grandes (LLMs) para auxiliar em várias tarefas, desde escrever novos softwares até depurar código existente. O objetivo é melhorar os fluxos de trabalho dos desenvolvedores, permitindo que eles se concentrem nos aspectos mais humanos de seus trabalhos, em vez de tarefas repetitivas.

Na Meta, acredita-se que os modelos de IA, especialmente os LLMs para codificação, se beneficiam significativamente de uma abordagem aberta, promovendo tanto a inovação quanto a segurança. Modelos específicos de código disponíveis publicamente podem impulsionar o desenvolvimento de novas tecnologias que melhorem a vida das pessoas. Ao lançar modelos como o Code Llama, toda a comunidade pode avaliar suas capacidades, identificar problemas e lidar com vulnerabilidades.

Uso responsável do Code Llama

O artigo de pesquisa da Meta fornece informações detalhadas sobre o desenvolvimento do Code Llama, os testes de benchmark realizados, as limitações do modelo e os desafios encontrados, juntamente com as mitigações tomadas e os desafios futuros a serem abordados.

Além disso, o Guia de Uso Responsável foi atualizado para incluir orientações sobre o desenvolvimento responsável de modelos downstream, cobrindo aspectos como:

- Definição de políticas de conteúdo e mitigações
- Preparação de dados
- Ajuste fino do modelo
- Avaliação e melhoria de desempenho
- Abordagem de riscos de entrada e saída
- Construção de transparência e mecanismos de relato nas interações com usuários

Os desenvolvedores são aconselhados a avaliar seus modelos usando benchmarks de avaliação específicos de código e realizar estudos de segurança em casos de uso específicos de código, como gerar malware, vírus de computador ou código malicioso. Também é recomendável usar conjuntos de dados de segurança para avaliações automáticas e humanas, e realizar red teaming com prompts adversariais.

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, ainda existem muitos casos de uso além do que nossos modelos base e instruct podem suportar atualmente.

Esperamos que o Code Llama inspire outros a usar o Llama 2 para criar novas ferramentas inovadoras para pesquisa e produtos comerciais.

Conclusão

O Code Llama é uma ferramenta única projetada para auxiliar em projetos de programação, permitindo que os desenvolvedores mudem seu foco da geração de código para os objetivos do projeto. Ele suporta completar código, escrever comentários legíveis por humanos e gerar código.

Como ferramenta de programação de IA, o Code Llama se destaca por sua capacidade offline. Pode ser importado para um IDE, eliminando a necessidade de conexão com a internet. Treinado em 100 GB de dados, ele se destaca na conclusão e geração de código. Existem várias versões do Code Llama disponíveis, incluindo versões de 7B, 13B e 34B parâmetros, bem como versões especializadas como -Python e -Instruct. Escolha a que melhor se adequa às suas necessidades e boa sorte em seus esforços de programação!

novita.ai, a plataforma completa para criatividade ilimitada que oferece acesso a mais de 100 APIs. Desde geração de imagens e processamento de linguagem até aprimoramento de áudio e manipulação de vídeo, pagamento por uso barato, ela libera você das preocupações com manutenção de GPU enquanto constrói seus próprios produtos. Experimente gratuitamente.

Leitura recomendada

Qual é a diferença entre LLM e GPT

Previsões do LLM Leaderboard 2024 Reveladas

Novita AI LLM Inference Engine: a maior taxa de transferência e inferência mais barata disponível