Demistificare l'auto-riparazione di GPT per la generazione di codice
Demystifying GPT Self-Repair for Code Generation
June 16, 2023
Autori: Theo X. Olausson, Jeevana Priya Inala, Chenglong Wang, Jianfeng Gao, Armando Solar-Lezama
cs.AI
Abstract
I modelli linguistici di grandi dimensioni (LLM) hanno dimostrato una notevole abilità nella generazione di codice, ma continuano a incontrare difficoltà in compiti di programmazione complessi. L'autoriparazione -- in cui il modello individua e corregge gli errori nel proprio codice -- è recentemente diventata un metodo popolare per migliorare le prestazioni in questi contesti. Tuttavia, nella letteratura esistono solo studi molto limitati su come e quando l'autoriparazione funziona efficacemente, e ci si potrebbe chiedere fino a che punto un modello sia realmente in grado di fornire un feedback accurato sul motivo per cui il codice è errato quando quel codice è stato generato dallo stesso modello. In questo articolo, analizziamo la capacità di GPT-3.5 e GPT-4 di eseguire l'autoriparazione su APPS, un dataset impegnativo composto da una varietà di problemi di programmazione. A tal fine, stabiliamo una nuova strategia di valutazione denominata pass@t che misura il tasso di successo dei compiti rispetto al numero totale di token campionati dal modello, consentendo un confronto equo con approcci basati esclusivamente sul campionamento. Con questa strategia di valutazione, scopriamo che l'efficacia dell'autoriparazione è visibile solo in GPT-4. Osserviamo inoltre che l'autoriparazione è limitata dalla fase di feedback; utilizzando GPT-4 per fornire feedback sui programmi generati da GPT-3.5 e utilizzando programmatori umani esperti per fornire feedback sui programmi generati da GPT-4, otteniamo significativi miglioramenti delle prestazioni.
English
Large Language Models (LLMs) have shown remarkable aptitude in code
generation but still struggle on challenging programming tasks. Self-repair --
in which the model debugs and fixes mistakes in its own code -- has recently
become a popular way to boost performance in these settings. However, only very
limited studies on how and when self-repair works effectively exist in the
literature, and one might wonder to what extent a model is really capable of
providing accurate feedback on why the code is wrong when that code was
generated by the same model. In this paper, we analyze GPT-3.5 and GPT-4's
ability to perform self-repair on APPS, a challenging dataset consisting of
diverse coding challenges. To do so, we first establish a new evaluation
strategy dubbed pass@t that measures the pass rate of the tasks against the
total number of tokens sampled from the model, enabling a fair comparison to
purely sampling-based approaches. With this evaluation strategy, we find that
the effectiveness of self-repair is only seen in GPT-4. We also observe that
self-repair is bottlenecked by the feedback stage; using GPT-4 to give feedback
on the programs generated by GPT-3.5 and using expert human programmers to give
feedback on the programs generated by GPT-4, we unlock significant performance
gains.