Modelos de linguagem grandes (LLMs) são geralmente pré-treinados em vastos conjuntos de dados que incluem tanto texto quanto código. Embora o código seja crucial para modelos voltados a tarefas de programação, sua inclusão tem se tornado cada vez mais comum, mesmo em LLMs destinados a aplicações não relacionadas à codificação.
Em um estudo recente, pesquisadores da Cohere exploraram como a presença de dados de código no pré-treinamento de LLMs impacta o desempenho geral em diversas tarefas além da codificação. “Embora os profissionais tenham concordado anedoticamente que os dados de código são vitais para o desempenho dos LLMs, pesquisas limitadas analisaram seu impacto preciso em tarefas não relacionadas ao código”, observaram os pesquisadores.
A investigação confirma que o código melhora significativamente o desempenho dos LLMs em uma variedade de tarefas não relacionadas à codificação, com implicações para aplicações práticas de treinamento.
Investigando o Impacto do Código
Os pesquisadores realizaram uma série de experimentos para avaliar como o código influencia o desempenho geral dos LLMs. Os fatores-chave incluíram a quantidade de código nos dados de treinamento, o momento da introdução do código durante o treinamento, a qualidade do código e os tamanhos dos modelos.
Usando uma abordagem de treinamento em duas fases, eles executaram um "pré-treinamento contínuo" em modelos já pré-treinados, incorporando diferentes proporções de texto e código em um número fixo de tokens. Isso foi seguido por uma fase de "recuperação", enfatizando conjuntos de dados de maior qualidade durante as etapas finais de treinamento. O modelo base foi treinado exclusivamente com texto, enquanto outros foram pré-treinados em conjuntos de dados equilibrados de texto e código ou apenas com dados de código antes de migrar para o texto.
Eles avaliaram modelos que variavam de 470 milhões a 2,8 bilhões de parâmetros em vários benchmarks focados em conhecimento geral, raciocínio em linguagem natural e desempenho em código.
Os Benefícios do Código para Tarefas Não Codificadas
Os experimentos demonstraram que o código melhorou substancialmente o desempenho dos LLMs em tarefas não codificadas. Em raciocínio em linguagem natural, modelos treinados com código consistentemente superaram seus pares treinados apenas com texto. Notavelmente, o pré-treinamento exclusivo em código mostrou o melhor desempenho nesses benchmarks.
“Isso indica que a inicialização a partir de um modelo pré-treinado com uma mistura de código influencia positivamente as tarefas de raciocínio em linguagem natural,” explicaram os pesquisadores.
Para tarefas de conhecimento geral, um conjunto de dados equilibrado de código e texto durante o pré-treinamento produziu os melhores resultados. Os pesquisadores sugeriram que “o desempenho ideal em tarefas de conhecimento geral depende de uma mistura de dados equilibrada para inicialização e uma proporção maior de texto durante o pré-treinamento contínuo.”
Em tarefas generativas, tanto os modelos apenas de código quanto os equilibrados superaram os modelos apenas de texto, indicando que a incorporação de código não só aprimora o raciocínio, mas também melhora a qualidade generativa. Além disso, notaram que os benefícios de adicionar código aumentaram com o tamanho do modelo, com os ganhos mais substanciais observados no conhecimento geral e desempenho em código, seguidos de melhorias modestas em raciocínio em linguagem natural.
“Esses resultados sugerem que a troca entre tarefas de linguagem natural e geração de código se intensifica à medida que o tamanho do modelo cresce,” afirmaram.
Embora os LLMs frequentemente apresentem comportamentos emergentes em maiores escalas, os pesquisadores não conseguiram testar modelos muito grandes devido a limitações de custo. No entanto, permanecem otimistas de que suas descobertas se estenderão a escalas maiores. “Dado que nossos resultados se mostram consistentes de 470M a 2,8B de parâmetros, acreditamos que eles se aplicarão a modelos ainda maiores e orçamentos de tokens," notaram.
O estudo também revelou que a incorporação de código sintético de alta qualidade nos dados de pré-treinamento melhora significativamente o desempenho, abordando as limitações do código gerado por humanos disponível. “Nosso código sintético foi criado a partir de enunciados de problemas para produzir soluções verificadas em Python,” disse Viraat Aryabumi, autor principal e Pesquisador da Cohere. “Isso abre um potencial futuro, pois aproveitar um modelo professor de alto desempenho é essencial para gerar código sintético eficaz.”
Além disso, descobriram que a integração de dados adjacentes ao código, como pull requests e commits do GitHub, aumentou as capacidades de raciocínio. A inclusão de código na fase de recuperação resultou em melhorias adicionais no desempenho em tarefas não codificadas, oferecendo insights valiosos para empresas que buscam ajustar modelos com seus dados específicos, em vez de treiná-los do zero.
“A fase de recuperação se alinha de perto com o ajuste fino em relação a custo, qualidade de dados e requisitos de recursos, proporcionando ganhos substanciais. Recomendamos a inclusão de código durante todo o processo de treinamento,” enfatizou Aryabumi. “Utilizar código de alta qualidade—como bases de código internas e dados adjacentes ao código—também pode melhorar os resultados durante a recuperação.”
À medida que a Cohere se concentra no desenvolvimento de LLMs para aplicações empresariais, essas descobertas podem influenciar futuras implementações de modelos e produtos, potencialmente oferecendo uma variedade de modelos pré-treinados com diferentes misturas de texto e código adaptadas a tarefas específicas. As empresas poderão então ajustar esses modelos em dados proprietários para desempenho ideal.
“Nossas descobertas são altamente relevantes para desenvolvedores e provavelmente levarão ao lançamento de modelos mais eficientes,” afirmou Aryabumi. “O que surpreende é como o código aprimora o desempenho além das tarefas relacionadas à codificação, e isso informa nossa abordagem para desenvolver modelos de ponta.”