Aprimorando a Geração de Código para Idiomas com Poucos Recursos: Não Há Solução Mágica
Enhancing Code Generation for Low-Resource Languages: No Silver Bullet
January 31, 2025
Autores: Alessandro Giagnorio, Alberto Martin-Lopez, Gabriele Bavota
cs.AI
Resumo
O surgimento de Modelos de Linguagem Grandes (LLMs) avançou significativamente o campo da geração automatizada de código. Os LLMs dependem de conjuntos de dados extensos e diversos para aprender a sintaxe, semântica e padrões de uso de linguagens de programação. Para línguas de baixos recursos (ou seja, linguagens de programação de nicho caracterizadas pela escassez de dados de treinamento), a disponibilidade limitada desses dados prejudica a capacidade dos modelos de generalizar de forma eficaz, resultando em um desempenho de geração de código inferior em comparação com línguas de alto recurso. Por esse motivo, há uma busca por técnicas capazes de reduzir essa diferença de desempenho. Apresentamos um estudo empírico investigando a eficácia de várias abordagens para impulsionar o desempenho dos LLMs em línguas de baixos recursos, a saber: (i) um ajuste fino clássico, no entanto limitado em tamanho pela escassez de dados de treinamento; (ii) três variantes de aprendizado em contexto, com prompts elaborados para fornecer ao LLM informações adicionais sobre a língua de baixos recursos (por exemplo, exemplos de poucas amostras que demonstram características da língua-alvo); e (iii) um objetivo de pré-treinamento ensinando ao modelo como traduzir entre línguas de alto e baixo recurso. O contexto de nosso estudo são duas línguas de baixos recursos (R e Racket) e seis LLMs com arquiteturas e tamanhos diferentes. Nossas descobertas revelam que um ajuste fino geralmente é a melhor escolha para LLMs menores, possivelmente devido ao fato de que mesmo um pequeno conjunto de dados é suficiente para treinar seu número limitado de parâmetros. Com o aumento do tamanho dos modelos, o aprendizado em contexto se torna cada vez mais eficaz, representando uma aposta segura e econômica (ou seja, sempre ajuda, mas com magnitudes diferentes). Por outro lado, LLMs muito grandes podem deteriorar seu desempenho em línguas de baixos recursos quando o ajuste fino é realizado, possivelmente devido à falta de dados suficientes necessários para atualizar efetivamente seus pesos.
English
The advent of Large Language Models (LLMs) has significantly advanced the
field of automated code generation. LLMs rely on large and diverse datasets to
learn syntax, semantics, and usage patterns of programming languages. For
low-resource languages (i.e., niche programming languages characterized by the
scarcity of training data), the limited availability of such data hampers the
models' ability to generalize effectively, resulting in poorer code generation
performance as compared to high-resource languages. For this reason, there is a
quest for techniques able to close this performance gap. We present an
empirical study investigating the effectiveness of several approaches for
boosting LLMs' performance on low-resource languages, namely: (i) a classic
fine-tuning, which is however capped in size by the scarcity of training data;
(ii) three variants of in-context learning, with prompts crafted to provide the
LLM with additional information about the low-resource language (e.g., few-shot
examples showcasing features of the targeted language); and (iii) a
pre-training objective teaching the model how to translate between high- and
low-resource languages. The context of our study are two low-resource languages
(R and Racket) and six LLMs having different architectures and sizes. Our
findings reveal that a fine-tuning is usually the best choice for smaller LLMs,
possibly due to the fact that even a small dataset is sufficient to train their
limited number of parameters. With the increase in size of the models,
in-context learning becomes more and more effective, representing a safe and
cheap bet (i.e., it always helps, but with different magnitudes). Differently,
very large LLMs may deteriorate their performance on low-resource languages
when fine-tuning is performed, possibly due to the lack of enough data needed
to effectively update their weights.Summary
AI-Generated Summary