1 pontos por GN⁺ 2023-08-25 | 1 comentários | Compartilhar no WhatsApp
  • 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
    • HumanEval: avaliação da capacidade de conclusão de código com base em docstrings
    • MBPP: avaliação da capacidade de escrever código com base em descrições
  • 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

 
GN⁺ 2023-08-25
Opiniões no Hacker News