- Título do artigo: WarriorCoder: Aprendendo com as batalhas de especialistas para aumentar os modelos de linguagem de código grande
- Link para o artigo: https://arxiv.org/pdf/2412.17395
01 Histórico
Nos últimos anos, os modelos de linguagem grande (LLMs) apresentaram um desempenho fenomenal em tarefas relacionadas a códigos, com o surgimento de vários macromodelos de código. Essas histórias de sucesso mostram que o pré-treinamento em dados de código em grande escala pode melhorar significativamente os principais recursos de programação dos modelos. Além do pré-treinamento, alguns métodos de pós-treinamento de LLMs em dados de instruções também levaram a melhorias significativas na compreensão das instruções e na qualidade das respostas dos modelos. Entretanto, a eficácia do pós-treinamento depende muito da disponibilidade de dados de alta qualidade, mas a coleta e a anotação de dados apresentam desafios consideráveis.
Para enfrentar os desafios acima, alguns métodos projetaram vários volantes de dados para gerar dados de instrução, como Self-Instruct, Evol-Instruct, etc. Esses métodos foram projetados para criar dados de instrução por meio de vários meios de aprimoramento de dados. Esses métodos constroem dados de instrução por meio de vários meios de aprimoramento de dados, e o treinamento nesses dados pode melhorar efetivamente a capacidade de geração de código do modelo. No entanto, conforme mostrado na Fig. 1, essas abordagens ainda dependem da ampliação dos conjuntos de dados existentes e exigem a chamada de LLMs privados (por exemplo, GPT-3.5, GPT-4 etc.), o que torna a coleta de dados dispendiosa. Além disso, o número limitado de fontes de dados e LLMs usados para anotação também limita a diversidade de dados e herda o viés sistemático inerente aos LLMs privados limitados. Figura 1
Este documento apresenta WarriorCoder, um novo paradigma de treinamento de flywheel de dados para macromodelos de código, em que o modelo integra os pontos fortes de macromodelos individuais de especialistas em código, aprendendo com abordagens adversárias de especialistas. Conforme mostrado na Fig. 1, grandes modelos individuais de especialistas em codificação são colocados uns contra os outros, com os atacantes desafiando seus oponentes em suas próprias áreas de especialização, e os modelos-alvo aprendendo com os vencedores desses pares de batalhas. Diferentemente dos métodos anteriores, que dependem principalmente de conjuntos de dados de código aberto existentes como dados iniciais a serem sintetizados e aumentados, o warriorCoder gera dados de 0 a 1 sem a necessidade de dados iniciais, e o método pode fundir os pontos fortes de vários macromodelos de especialistas em codificação em vez de apenas destilar os pontos fortes de modelos individuais. Além disso, o método proposto neste artigo elimina a dependência do envolvimento humano e dos LLMs privados no processo de coleta de dados e permite a coleta de dados de treinamento diversificados e de alta qualidade a um custo muito baixo. Os resultados experimentais mostram que o warriorCoder não só atinge o SOTA atual em tarefas de geração de código, mas também obtém excelentes resultados em benchmarks, como raciocínio de código e uso de bibliotecas, que podem ser chamados de warrior code hexagon.
02 Metodologia
Este artigo constrói uma arena para grandes modelos de código. Aqui, os macromodelos especialistas em código de última geração são colocados uns contra os outros, com cada modelo desafiando os outros usando o conhecimento que já possui, enquanto os modelos restantes atuam como árbitros para avaliar o resultado dos confrontos. Em seguida, o modelo-alvo aprende com os vencedores desses confrontos, integrando gradualmente os pontos fortes de todos os concorrentes. Neste trabalho, os participantes (macromodelos especialistas em código) são tratados como um grupo, e o modelo é otimizado pela superioridade relativa das respostas dentro do grupo, o que é semelhante ao GRPO. Figura 2
2.1 Configuração dos concorrentes
A competência dos participantes determina o desempenho final do WarriorCoder. Teoricamente, quanto maior a diversidade e a qualidade dos dados de treinamento obtidos de um grupo maior e mais forte de participantes, melhor será o desempenho do modelo final treinado. Em cada rodada da arena, apenas um par de codificadores é selecionado como competidor, enquanto os outros atuam como juízes. Neste artigo, cinco grandes modelos avançados de 75B foram selecionados na classificação do BigCodeBench - Athene-V2-Chat, DeepSeek-Coder-V2-Lite-Instruct, Llama-3.3-70B-Instruct Vale a pena observar que esses cinco grandes modelos são todos de código aberto, e o WarriorCoder obtém excelente desempenho com base apenas no confronto desses grandes modelos de código aberto. Obviamente, o WarriorCoder também é capaz de aprender com poderosos macromodelos privados.
2.2 Mineração de instruções desde o início
Para um par de oponentes, A e B (em que A é o atacante e B é o defensor), a primeira etapa do confronto é desafiar B em uma área em que A se sobressai, o que requer conhecimento do que A aprendeu durante o processo de treinamento. No entanto, quase todos os grandes modelos atuais de código aberto não publicam seus principais dados de treinamento, o que torna extremamente difícil saber em que os atacantes são bons. Inspirado no Magpie, este artigo desenvolve uma abordagem baseada em preenchimento de diálogo para extrair os recursos já dominados por um grande modelo. Tomando o Qwen2.5 como exemplo, se quisermos que ele gere um algoritmo de classificação rápida, o formato completo do prompt é mostrado na Fig. 3. O prompt deve incluir conteúdo do sistema, conteúdo do usuário e tokens especiais relacionados ao formato, como " ", "" e assim por diante. Figura 3
Por outro lado, se apenas a parte do prefixo (que não tem significado específico por si só, conforme mostrado na Figura 4) for inserida no modelo, o conteúdo do usuário poderá ser obtido usando o recurso de complementação do modelo. Figura 4
Dessa forma, com diferentes configurações de parâmetros geradores (por exemplo, diferentes valores de temperatura e valores de top-p), é possível coletar dados de instrução que foram aprendidos pelo modelo. Diferentemente da síntese de dados tradicional, os dados de instrução coletados neste trabalho não são sintetizados pelo modelo, mas são obtidos por amostragem diretamente da distribuição do modelo, o que evita problemas como sobreajuste de padrão e viés de distribuição de saída. Entretanto, as instruções podem ser repetitivas, ambíguas, pouco claras ou muito simples. Para resolver esses problemas, desduplicamos os dados e usamos um modelo de árbitro para avaliar sua dificuldade. Neste documento, classificamos a dificuldade em quatro graus: Excelente, Bom, Médio e Ruim. Por fim, usamos apenas as instruções de graus Excelente e Bom e usamos o algoritmo KcenterGreedy para comprimir ainda mais os dados de instrução.
2.3 Decisão sobre ganhos e perdas
Tanto o desafiante quanto o defensor precisam gerar respostas com base nos dados de instrução, e um árbitro (o modelo restante) vota no vencedor:
No entanto, confiar apenas no texto {pontuações locais} para selecionar os vencedores pode introduzir o problema do acaso. Como a votação pode ser afetada por fatores como aleatoriedade ou viés do revisor, um modelo mais fraco pode receber mais votos do que um modelo mais forte sob determinadas instruções, mesmo que suas respostas não sejam realmente melhores do que as do modelo mais forte.
Para resolver esse problema, este documento considera tanto a contingência local quanto a consistência global no processo de tomada de decisão. Este documento apresenta o conceito de pontuação global - classificação Elo. Ele pode refletir de forma mais abrangente as mudanças no desempenho relativo do modelo, abrangendo o desempenho ao longo do tempo e em várias avaliações. Com a introdução da classificação Elo, tanto o desempenho local de um modelo em um único jogo quanto seu desempenho global em várias rodadas podem ser considerados no processo de avaliação, fornecendo assim uma medida mais robusta e precisa da capacidade geral de um modelo, o que pode ajudar a reduzir o risco de um modelo mais fraco vencer devido ao acaso e à votação não representativa.
A pontuação final da resposta é ponderada pela classificação Elo e pelos votos dos juízes:
Cada resposta é comparada às respostas de todos os oponentes, de modo que a pontuação representa a força relativa da resposta atual dentro do grupo.
2.4 Treinamento final
Neste documento, o formato de dados é a instrução, a resposta de cada participante e a pontuação correspondente a cada resposta. Esse formato de dados pode suportar vários métodos de pós-treinamento, como SFT, DPO, KTO e assim por diante. Neste artigo, o SFT é adotado, e a resposta com a pontuação mais alta do grupo é usada como a saída de ouro, de modo que o WarriorCoder possa integrar os pontos fortes de cada participante no treinamento e combinar os pontos fortes de todos os participantes.
03 Experimental
3.1 Principais resultados
A Tabela 1 mostra o desempenho do WarriorCoder no benchmark de geração de código. Em comparação com trabalhos semelhantes, o WarriorCoder atinge o SOTA no HumanEval, HumanEval+, MBPP e MBPP+. Vale a pena observar que o WarriorCoder obtém resultados impressionantes sem a necessidade de um modelo privado grande (por exemplo, GPT-4 etc.). Tabela 1
O WarriorCoder também obteve excelentes resultados no benchmark de raciocínio de código e no benchmark de uso de bibliotecas. Conforme mostrado nas Tabelas 2 e 3, o WarriorCoder tem um desempenho ótimo na maioria das métricas e até supera modelos maiores, como o 15B e o 34B. Isso também prova que o método proposto neste artigo tem boa generalização, o que permite que o modelo obtenha muitos recursos diferentes de vários modelos grandes de especialistas em código. Tabela 2
Tabela 3
3.2 Análise de dados
Este documento também analisa os dados de treinamento construídos e os investiga sob três perspectivas: Dependência, Diversidade e Dificuldade.
Dependência
Embora os trabalhos anteriores tendam a estender o aumento de dados com base em alguns conjuntos de dados de código existentes (por exemplo), este artigo constrói dados totalmente novos a partir do zero. Conforme mostrado na Fig. 5, os autores calculam o grau de sobreposição (métrica ROUGE) entre os dados de treinamento e os dois conjuntos de dados de código comumente usados, e a grande maioria das instruções tem pontuações ROUGE inferiores a 0,3 com codealpaca e codeultrafeedback, o que sugere que elas diferem significativamente em conteúdo daquelas dos conjuntos de dados existentes. Notavelmente, nenhuma das instruções extraídas tem uma métrica ROUGE acima de 0,6, o que prova ainda mais que essas instruções se originam da distribuição interna do macromodelo especializado, em vez de uma simples cópia ou extensão dos dados de treinamento existentes. Como resultado, essas instruções são mais inovadoras e têm um grau maior de independência, o que é particularmente valioso para o treinamento. Figura 5
A Tabela 4 mostra a composição dos dados de treinamento, abrangendo sete tarefas de código diferentes, razão pela qual o WarriorCoder consegue ter um bom desempenho em vários benchmarks. Vale a pena observar que o raciocínio de código representa apenas 2,9%, o que faz com que o WarriorCoder tenha um desempenho incrivelmente bom nos benchmarks relevantes, o que demonstra que o método proposto neste artigo tem um grande potencial e, se os dados forem extraídos para direcionar os pontos fracos do modelo, ele poderá torná-lo ainda mais capaz. Além disso, o mapa de calor na Fig. 6 também mostra os resultados do confronto entre os concorrentes. Até mesmo os modelos mais fortes têm desempenho ruim às vezes, e o WarriorCoder só aprende com a resposta vencedora com a pontuação mais alta de acordo com a instrução atual. Tabela 4
Figura 6
A Figura 7 mostra a taxa de dificuldade das instruções geradas pelos diferentes modelos. A maioria das instruções é classificada como boa, com pontuações entre 6 e 8. As instruções classificadas como excelentes (pontuações de 9 a 10) constituem apenas uma pequena parte do conjunto de dados, indicando que tarefas altamente complexas ou avançadas são relativamente raras. Os autores excluíram as instruções com pontuações abaixo de 6 do conjunto de treinamento porque elas tendiam a ser muito simples ou muito vagas, o que teria sido prejudicial para a fase de treinamento e poderia até enfraquecer o desempenho e a generalização do modelo. Figura 7
04 Recursos relacionados
Embora os autores não estejam abrindo o modelo no momento, descobrimos que alguém já reproduziu o trabalho dos autores no seguinte endereço:
Link para o projeto: https://huggingface.co/HuggingMicah/warriorcoder_reproduce