Выполнение кода с использованием предварительно обученных языковых моделей
Code Execution with Pre-trained Language Models
May 8, 2023
Авторы: Chenxiao Liu, Shuai Lu, Weizhu Chen, Daxin Jiang, Alexey Svyatkovskiy, Shengyu Fu, Neel Sundaresan, Nan Duan
cs.AI
Аннотация
Выполнение кода является фундаментальным аспектом семантики языков программирования, который отражает точное поведение кода. Однако большинство предварительно обученных моделей для анализа кода игнорируют трассировку выполнения и полагаются только на исходный код и синтаксические структуры. В данной статье мы исследуем, насколько хорошо предварительно обученные модели могут понимать и выполнять код. Мы разрабатываем метод увеличения данных на основе мутаций для создания масштабного и реалистичного набора данных и задачи для выполнения кода на Python, что бросает вызов существующим моделям, таким как Codex. Затем мы представляем CodeExecutor, модель на основе архитектуры Transformer, которая использует предварительное обучение на выполнении кода и обучение по учебному плану для улучшения семантического понимания. Мы оцениваем CodeExecutor на задачах выполнения кода и показываем её перспективные результаты и ограничения. Также мы демонстрируем её потенциальные преимущества для задач анализа кода, таких как поиск кода в режиме zero-shot и генерация кода из текста. Наш анализ предоставляет инсайты в способности предварительно обученных моделей к обучению и обобщению в контексте выполнения кода.
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.