Execução de Código com Modelos de Linguagem Pré-treinados
Code Execution with Pre-trained Language Models
May 8, 2023
Autores: Chenxiao Liu, Shuai Lu, Weizhu Chen, Daxin Jiang, Alexey Svyatkovskiy, Shengyu Fu, Neel Sundaresan, Nan Duan
cs.AI
Resumo
A execução de código é um aspecto fundamental da semântica das linguagens de programação que reflete o comportamento exato do código. No entanto, a maioria dos modelos pré-treinados para inteligência de código ignora o rastreamento de execução e depende apenas do código-fonte e das estruturas sintáticas. Neste artigo, investigamos quão bem os modelos pré-treinados podem entender e realizar a execução de código. Desenvolvemos uma técnica de aumento de dados baseada em mutação para criar um conjunto de dados e uma tarefa de execução de código em Python em grande escala e realista, que desafia modelos existentes como o Codex. Em seguida, apresentamos o CodeExecutor, um modelo Transformer que aproveita o pré-treinamento em execução de código e a aprendizagem curricular para aprimorar sua compreensão semântica. Avaliamos o CodeExecutor na execução de código e mostramos seu desempenho promissor e suas limitações. Também demonstramos seus benefícios potenciais para tarefas de inteligência de código, como busca de código a código em zero-shot e geração de texto para código. Nossa análise fornece insights sobre as habilidades de aprendizagem e generalização dos modelos pré-treinados para execução de código.
English
Code execution is a fundamental aspect of programming language semantics that
reflects the exact behavior of the code. However, most pre-trained models for
code intelligence ignore the execution trace and only rely on source code and
syntactic structures. In this paper, we investigate how well pre-trained models
can understand and perform code execution. We develop a mutation-based data
augmentation technique to create a large-scale and realistic Python dataset and
task for code execution, which challenges existing models such as Codex. We
then present CodeExecutor, a Transformer model that leverages code execution
pre-training and curriculum learning to enhance its semantic comprehension. We
evaluate CodeExecutor on code execution and show its promising performance and
limitations. We also demonstrate its potential benefits for code intelligence
tasks such as zero-shot code-to-code search and text-to-code generation. Our
analysis provides insights into the learning and generalization abilities of
pre-trained models for code execution.