ChatPaper.aiChatPaper

CodeChain: Auf dem Weg zur modularen Code-Generierung durch eine Kette von Selbstrevisionen mit repräsentativen Teilmodulen

CodeChain: Towards Modular Code Generation Through Chain of Self-revisions with Representative Sub-modules

October 13, 2023
Autoren: Hung Le, Hailin Chen, Amrita Saha, Akash Gokul, Doyen Sahoo, Shafiq Joty
cs.AI

Zusammenfassung

Große Sprachmodelle (LLMs) sind bereits recht gut darin, einfachere Programmieraufgaben wie die in den HumanEval- oder MBPP-Benchmarks zu lösen. Die Lösung komplexerer und wettbewerbsorientierter Programmieraufgaben stellt für diese Modelle jedoch nach wie vor eine große Herausforderung dar – möglicherweise aufgrund ihrer Tendenz, Lösungen als monolithische Codeblöcke zu generieren, anstatt sie in logische Teilaufgaben und Submodule zu zerlegen. Erfahrene Programmierer hingegen schreiben instinktiv modularisierten Code mit Abstraktionen, um komplexe Aufgaben zu lösen, und verwenden dabei oft zuvor entwickelte Module wieder. Um diese Lücke zu schließen, schlagen wir CodeChain vor, ein neuartiges Inferenz-Framework, das die Generierung modularisierten Codes durch eine Kette von Selbstrevisionen fördert, wobei jede Revision durch einige repräsentative Submodule geleitet wird, die in vorherigen Iterationen generiert wurden. Konkret weist CodeChain das LLM zunächst an, modularisierten Code durch Chain-of-Thought-Prompting zu generieren. Anschließend wendet es eine Kette von Selbstrevisionen an, indem es die beiden Schritte iteriert: 1) Extraktion und Clustering der generierten Submodule und Auswahl der Cluster-Repräsentanten als die generischeren und wiederverwendbaren Implementierungen, und 2) Erweiterung des ursprünglichen Chain-of-Thought-Prompts um diese ausgewählten Modul-Implementierungen und Anweisung des LLMs, neue modularisierte Lösungen zu regenerieren. Wir stellen fest, dass CodeChain durch die natürliche Ermutigung des LLMs, die zuvor entwickelten und verifizierten Submodule wiederzuverwenden, sowohl die Modularität als auch die Korrektheit der generierten Lösungen erheblich steigern kann, was relative Pass@1-Verbesserungen von 35 % bei APPS und 76 % bei CodeContests erzielt. Es erweist sich sowohl bei OpenAI-LLMs als auch bei Open-Source-LLMs wie WizardCoder als effektiv. Wir führen außerdem umfassende Ablationsstudien mit verschiedenen Prompting-Methoden, Clusteranzahlen, Modellgrößen, Programmqualitäten usw. durch, um nützliche Erkenntnisse zu liefern, die den Erfolg von CodeChain untermauern.
English
Large Language Models (LLMs) have already become quite proficient at solving simpler programming tasks like those in HumanEval or MBPP benchmarks. However, solving more complex and competitive programming tasks is still quite challenging for these models - possibly due to their tendency to generate solutions as monolithic code blocks instead of decomposing them into logical sub-tasks and sub-modules. On the other hand, experienced programmers instinctively write modularized code with abstraction for solving complex tasks, often reusing previously developed modules. To address this gap, we propose CodeChain, a novel framework for inference that elicits modularized code generation through a chain of self-revisions, each being guided by some representative sub-modules generated in previous iterations. Concretely, CodeChain first instructs the LLM to generate modularized codes through chain-of-thought prompting. Then it applies a chain of self-revisions by iterating the two steps: 1) extracting and clustering the generated sub-modules and selecting the cluster representatives as the more generic and re-usable implementations, and 2) augmenting the original chain-of-thought prompt with these selected module-implementations and instructing the LLM to re-generate new modularized solutions. We find that by naturally encouraging the LLM to reuse the previously developed and verified sub-modules, CodeChain can significantly boost both modularity as well as correctness of the generated solutions, achieving relative pass@1 improvements of 35% on APPS and 76% on CodeContests. It is shown to be effective on both OpenAI LLMs as well as open-sourced LLMs like WizardCoder. We also conduct comprehensive ablation studies with different methods of prompting, number of clusters, model sizes, program qualities, etc., to provide useful insights that underpin CodeChain's success.
PDF131December 15, 2024