ChatPaper.aiChatPaper

Выполнение кода с использованием предварительно обученных языковых моделей

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.
PDF21December 15, 2024