Esecuzione di Codice con Modelli Linguistici Pre-addestrati
Code Execution with Pre-trained Language Models
May 8, 2023
Autori: Chenxiao Liu, Shuai Lu, Weizhu Chen, Daxin Jiang, Alexey Svyatkovskiy, Shengyu Fu, Neel Sundaresan, Nan Duan
cs.AI
Abstract
L'esecuzione del codice è un aspetto fondamentale della semantica dei linguaggi di programmazione che riflette il comportamento esatto del codice. Tuttavia, la maggior parte dei modelli pre-addestrati per l'intelligenza del codice ignora la traccia di esecuzione e si basa esclusivamente sul codice sorgente e sulle strutture sintattiche. In questo articolo, indaghiamo quanto bene i modelli pre-addestrati possano comprendere ed eseguire il codice. Sviluppiamo una tecnica di aumento dei dati basata su mutazioni per creare un dataset Python su larga scala e realistico, nonché un task per l'esecuzione del codice, che mette alla prova modelli esistenti come Codex. Presentiamo quindi CodeExecutor, un modello Transformer che sfrutta il pre-addestramento sull'esecuzione del codice e l'apprendimento curriculare per migliorare la sua comprensione semantica. Valutiamo CodeExecutor sull'esecuzione del codice e ne mostriamo le prestazioni promettenti e i limiti. Dimostriamo inoltre i suoi potenziali benefici per task di intelligenza del codice come la ricerca codice-a-codice zero-shot e la generazione testo-a-codice. La nostra analisi fornisce approfondimenti sulle capacità di apprendimento e generalizzazione dei modelli pre-addestrati per l'esecuzione del codice.
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.