Code-uitvoering met vooraf getrainde taalmodellen
Code Execution with Pre-trained Language Models
May 8, 2023
Auteurs: Chenxiao Liu, Shuai Lu, Weizhu Chen, Daxin Jiang, Alexey Svyatkovskiy, Shengyu Fu, Neel Sundaresan, Nan Duan
cs.AI
Samenvatting
Code-uitvoering is een fundamenteel aspect van programmeertaalsemantiek dat
het exacte gedrag van de code weerspiegelt. De meeste vooraf getrainde modellen
voor code-intelligentie negeren echter de uitvoeringstrace en vertrouwen alleen
op broncode en syntactische structuren. In dit artikel onderzoeken we hoe goed
vooraf getrainde modellen code-uitvoering kunnen begrijpen en uitvoeren. We
ontwikkelen een op mutatie gebaseerde data-augmentatietechniek om een grootschalige
en realistische Python-dataset en taak voor code-uitvoering te creëren, die
bestaande modellen zoals Codex uitdaagt. Vervolgens presenteren we CodeExecutor,
een Transformer-model dat gebruikmaakt van code-uitvoeringstraining en curriculumleren
om zijn semantische begrip te verbeteren. We evalueren CodeExecutor op code-uitvoering
en tonen zijn veelbelovende prestaties en beperkingen. We demonstreren ook de
potentiële voordelen voor code-intelligentietaken zoals zero-shot code-naar-code
zoeken en tekst-naar-code generatie. Onze analyse biedt inzicht in de leer- en
generaliseervermogens van vooraf getrainde modellen voor code-uitvoering.
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.