Alinhando Modelos de Linguagem com Preferências de Programação
Novos conjuntos de dados e benchmarks têm como objetivo melhorar a produção de código dos modelos de IA.
― 8 min ler
Índice
- Conjunto de Dados CodeUltraFeedback
- Preferências de Codificação
- Construção do Conjunto de Dados
- Benchmark CODAL-Bench
- Avaliação com LLM como Juiz
- Avaliando LLMs Usando CodeUltraFeedback
- Observações Iniciais sobre o Desempenho dos LLMs
- Ajuste de Preferências com SFT e DPO
- Treinamento Supervisionado (SFT)
- Otimização Direta de Preferências (DPO)
- Resultados e Descobertas
- Melhorias no Desempenho
- Impacto na Correção Funcional
- Benefícios de Usar CodeUltraFeedback e CODAL-Bench
- Uma Nova Abordagem para Avaliação
- Direções Futuras
- Conclusão
- Fonte original
- Ligações de referência
Avanços recentes em modelos de linguagem grande (LLMs) mostraram habilidades impressionantes em codificação. Esses modelos conseguem gerar código, traduzir linguagens de programação, corrigir bugs e muito mais. Conforme eles vão melhorando, precisamos considerar se esses modelos atendem às expectativas dos desenvolvedores, especialmente em fatores como Legibilidade do Código, eficiência e melhores práticas.
Os métodos atuais para treinar e avaliar esses modelos focam principalmente nas suas habilidades básicas, como traduzir ou revisar códigos. Algumas pesquisas analisam a qualidade e eficiência do código gerado. No entanto, a maioria desses estudos não se aprofunda em problemas de codificação mais complexos ou nas instruções específicas que os LLMs precisam seguir.
Essa pesquisa destaca a falta de grandes conjuntos de dados que podem ajudar a ajustar os LLMs para atender a essas necessidades não funcionais. Os conjuntos de dados existentes tendem a ignorar o quanto as saídas dos LLMs se alinham com as preferências dos usuários em codificação. Para preencher essa lacuna, apresentamos duas novas contribuições: um conjunto de dados chamado CodeUltraFeedback, criado para ajustar os LLMs às preferências de codificação, e um benchmark chamado CODAL-Bench, projetado para avaliar como os LLMs se alinham a essas preferências.
Conjunto de Dados CodeUltraFeedback
O CodeUltraFeedback é um conjunto de dados composto por 10.000 instruções complexas de codificação. Essas instruções servem para ajudar a ajustar e alinhar os LLMs com preferências específicas de codificação com base no feedback da inteligência artificial. O processo começa analisando as respostas de uma variedade de 14 LLMs diferentes a essas instruções. As respostas são então classificadas com base em quão bem elas correspondem a cinco preferências principais de codificação.
Preferências de Codificação
As cinco preferências de codificação que focamos são:
- Seguir Instruções: Quão bem o modelo se apega às instruções dadas.
- Explicação de Código: A clareza do código e a qualidade das explicações que o acompanham.
- Complexidade e Eficiência do Código: A capacidade de produzir código otimizado para desempenho.
- Legibilidade do Código: A clareza e estrutura geral do código.
- Estilo de Codificação: Garantir que o código esteja escrito de acordo com as práticas idiomáticas da linguagem de programação.
Essas preferências ajudam a garantir que o código gerado não seja apenas funcional, mas também fácil para os humanos lerem, entenderem e manterem.
Construção do Conjunto de Dados
Para criar o CodeUltraFeedback, começamos de um conjunto de dados existente com instruções de codificação. Selecionamos uma amostra aleatória de 10.000 instruções e etiquetamos cada uma com uma das cinco preferências de codificação. Para cada instrução, geramos respostas usando quatro LLMs escolhidos aleatoriamente do nosso pool diversificado.
O próximo passo foi utilizar o LLM como Juiz. Nesse processo, utilizamos o GPT-3.5-Turbo para avaliar quão bem cada resposta se alinhava com a preferência de codificação associada à instrução. A avaliação produziu pontuações numéricas e feedback detalhado para cada resposta.
Benchmark CODAL-Bench
Além do conjunto de dados, também criamos o CODAL-Bench, que é um benchmark para avaliar LLMs com base em preferências de codificação. Ele usa um conjunto menor de instruções do CodeUltraFeedback, totalizando 500 amostras. Esse benchmark permite que pesquisadores avaliem e comparem como diferentes LLMs se alinham às preferências de codificação.
Avaliação com LLM como Juiz
O processo de avaliação no CODAL-Bench é rigoroso. Empregamos um sistema de notas de resposta única onde o GPT-3.5-Turbo avalia a resposta de um LLM por vez. Essa metodologia garante uma avaliação consistente e objetiva. Ao comparar as respostas com uma resposta de referência, conseguimos manter a imparcialidade em nosso julgamento.
Avaliando LLMs Usando CodeUltraFeedback
A primeira tarefa foi analisar como diferentes LLMs se saíram em várias preferências de codificação usando o conjunto de dados. Não é surpresa que tanto o GPT-3.5-Turbo quanto o GPT-4-Turbo foram os que mais pontuaram em todas as preferências, já que esses modelos foram extensivamente ajustados para alinhar com as expectativas humanas.
Curiosamente, até mesmo LLMs fortes como WizardCoder-33B e DeepSeek-Coder-33B Instruct não se saíram tão bem quanto o GPT-3.5-Turbo, indicando que ainda há lacunas no alinhamento dos modelos quando se trata de preferências de codificação.
Observações Iniciais sobre o Desempenho dos LLMs
Os resultados mostraram que o GPT-3.5-Turbo foi eficaz em distinguir entre diferentes níveis de qualidade das respostas. No entanto, a maioria dos modelos, incluindo os maiores, pontuaram abaixo do GPT-3.5-Turbo. Isso destaca a necessidade de técnicas de alinhamento melhoradas para trazer outros modelos para o mesmo nível.
Ajuste de Preferências com SFT e DPO
Na próxima fase da nossa pesquisa, exploramos como poderíamos melhorar o alinhamento através de métodos de ajuste específicos conhecidos como Treinamento Supervisionado (SFT) e Otimização Direta de Preferências (DPO). O objetivo era usar dados do CodeUltraFeedback para melhorar o desempenho dos LLMs em alinhamento com as preferências de codificação.
Treinamento Supervisionado (SFT)
O SFT envolve treinar um LLM em um conjunto de pares de instruções-respostas para aprimorar sua compreensão das preferências dos usuários. Nossa abordagem combinou dados de várias fontes para desenvolver um conjunto de treinamento robusto.
Essa fase treina o modelo para seguir as instruções dos usuários de forma mais precisa, melhorando assim seu desempenho em várias tarefas de codificação. Os ajustes feitos através do SFT contribuíram bastante para a melhoria geral do alinhamento.
Otimização Direta de Preferências (DPO)
O DPO é uma técnica usada para garantir que o modelo favoreça respostas de alta qualidade com base nas preferências dos usuários. Ele oferece uma forma mais eficaz de alinhar os LLMs sem precisar criar um modelo de recompensa separado, o que pode ser uma tarefa complexa e que consome muitos recursos.
Usando um conjunto de dados de respostas classificadas com base na qualidade, o DPO ajuda o modelo a se concentrar em gerar saídas melhores.
Resultados e Descobertas
Nossos experimentos mostraram que o ajuste do CodeLlama-7B-Instruct com SFT e DPO resultou em melhorias significativas em todas as preferências de codificação. Esse modelo pequeno foi capaz de ter um desempenho melhor do que modelos muito maiores quando alinhado corretamente.
Melhorias no Desempenho
Por meio de testes rigorosos no CODAL-Bench, vimos que as pontuações de alinhamento do CodeLlama-7B-Instruct melhoraram substancialmente após a aplicação das técnicas SFT e DPO. O modelo ajustado não apenas se alinha melhor com as preferências de codificação, mas também melhorou sua capacidade de produzir código funcionalmente correto.
Impacto na Correção Funcional
Também avaliamos como os modelos se saíram em testes de correção funcional, como HumanEval e HumanEval+. Aqui também, o SFT aumentou significativamente o desempenho do CodeLlama-7B-Instruct. Os resultados indicaram que alinhar os LLMs com as preferências dos usuários pode influenciar positivamente sua capacidade de gerar código preciso e funcional.
Benefícios de Usar CodeUltraFeedback e CODAL-Bench
A introdução do CodeUltraFeedback e do CODAL-Bench fornece recursos valiosos para pesquisadores que focam em LLMs e codificação. Essas ferramentas permitem uma avaliação mais abrangente dos LLMs, abordando as lacunas dos benchmarks anteriores que ignoravam requisitos não funcionais críticos.
Uma Nova Abordagem para Avaliação
Ao utilizar LLMs como juízes, abrimos a porta para avaliações mais nuançadas e metodologias flexíveis que vão além de simples verificações de correção. Esse processo de avaliação centrado no humano é crucial para melhorar as saídas dos LLMs.
Direções Futuras
À luz de nossas descobertas, futuras pesquisas poderiam explorar uma gama mais ampla de juízes para avaliar os LLMs. Ao testar LLMs contra avaliações humanas, podemos entender melhor quão bem esses modelos se alinham com práticas reais de codificação.
Outra direção possível é o desenvolvimento de um pequeno LLM crítico treinado para avaliar outros LLMs usando os dados de feedback gerados a partir do CodeUltraFeedback. Isso ajudaria a reduzir a dependência de modelos de código fechado, que podem ser caros de usar.
Conclusão
O trabalho apresentado aqui destaca a importância de criar conjuntos de dados e benchmarks específicos para ajustar os LLMs a se alinhar melhor com as preferências de codificação. Ao introduzir o CodeUltraFeedback e o CODAL-Bench, oferecemos tanto as ferramentas quanto as metodologias necessárias para avaliar e melhorar o desempenho dos LLMs na geração de código e tarefas relacionadas.
Nossos resultados demonstram a eficácia de incorporar técnicas de ajuste de preferência e significam um caminho em direção a avanços adicionais no alinhamento de modelos. Com essas contribuições, buscamos apoiar futuras pesquisas para alinhar os LLMs mais de perto com as necessidades dos desenvolvedores, garantindo que esses modelos sejam tão úteis e eficazes quanto possível em cenários de codificação do mundo real.
Título: CodeUltraFeedback: An LLM-as-a-Judge Dataset for Aligning Large Language Models to Coding Preferences
Resumo: Evaluating the alignment of large language models (LLMs) with user-defined coding preferences is a challenging endeavour that requires a deep assessment of LLMs' outputs. Existing methods and benchmarks rely primarily on automated metrics and static analysis tools, which often fail to capture the nuances of user instructions and LLM outputs. To address this gap, we propose using the LLM-as-a-Judge methodology to evaluate the alignment of LLMs with coding preferences. Based on this approach, we present CodeUltraFeedback, a comprehensive dataset designed to facilitate the evaluation and improvement of LLM alignment. CodeUltraFeedback consists of 10,000 coding instructions, each annotated with four responses generated from a diverse pool of 14 LLMs. These responses are ranked based on five distinct coding preferences using GPT-3.5 as a judge, providing both numerical scores and detailed textual feedback. Our analysis of CodeUltraFeedback reveals that responses from GPT-3.5 and GPT-4 are generally preferred over those from open-weight LLMs, highlighting significant differences in alignment between closed and open-weight models. In turn, we explore the usage of CodeUltraFeedback as feedback data to fine-tune and align CodeLlama-7B-Instruct using supervised fine-tuning (SFT) and reinforcement learning from AI feedback (RLAIF) with direct preference optimization (DPO). The resulting aligned CodeLlama-7B-Instruct model outperforms larger LLMs in terms of alignment with coding preferences and shows improved functional correctness on the HumanEval+ benchmark compared to the original instruct model. Therefore, our contributions bridge the gap in preference tuning of LLMs for code and set the stage for further advancements in model alignment and RLAIF in automated software engineering.
Autores: Martin Weyssow, Aton Kamanda, Houari Sahraoui
Última atualização: 2024-12-27 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2403.09032
Fonte PDF: https://arxiv.org/pdf/2403.09032
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.