CodeMonkeys : Mise à l'échelle du calcul au moment des tests pour l'ingénierie logicielle
CodeMonkeys: Scaling Test-Time Compute for Software Engineering
January 24, 2025
Auteurs: Ryan Ehrlich, Bradley Brown, Jordan Juravsky, Ronald Clark, Christopher Ré, Azalia Mirhoseini
cs.AI
Résumé
L'évolutivité du calcul au moment du test est un axe prometteur pour améliorer les capacités des LLM. Cependant, le calcul au moment du test peut être augmenté de différentes manières, et combiner efficacement différentes approches reste un domaine de recherche actif. Ici, nous explorons ce problème dans le contexte de la résolution des problèmes réels de GitHub à partir de l'ensemble de données SWE-bench. Notre système, nommé CodeMonkeys, permet aux modèles de modifier de manière itérative une base de code en générant conjointement et en exécutant un script de test aux côtés de leur modification provisoire. Nous échantillonnons de nombreux de ces trajectoires multi-tours pour chaque problème afin de générer une collection de modifications candidates. Cette approche nous permet de mettre à l'échelle le calcul au moment du test "sériel" en augmentant le nombre d'itérations par trajectoire et le calcul au moment du test "parallèle" en augmentant le nombre de trajectoires par problème. Avec la mise à l'échelle parallèle, nous pouvons amortir les coûts initiaux sur plusieurs échantillons aval, ce qui nous permet d'identifier le contexte de la base de code pertinente en laissant simplement un LLM lire chaque fichier. Afin de sélectionner entre les modifications candidates, nous combinons un vote en utilisant des tests générés par le modèle avec une trajectoire multi-tours finale dédiée à la sélection. Dans l'ensemble, CodeMonkeys résout 57,4 % des problèmes de SWE-bench vérifiés avec un budget d'environ 2300 USD. Notre méthode de sélection peut également être utilisée pour combiner des candidats provenant de différentes sources. La sélection d'un ensemble de modifications à partir des meilleures soumissions vérifiées de SWE-bench existantes obtient un score de 66,2 % et surpasse le meilleur membre de l'ensemble seul. Nous publions intégralement notre code et nos données sur https://scalingintelligence.stanford.edu/pubs/codemonkeys.
English
Scaling test-time compute is a promising axis for improving LLM capabilities.
However, test-time compute can be scaled in a variety of ways, and effectively
combining different approaches remains an active area of research. Here, we
explore this problem in the context of solving real-world GitHub issues from
the SWE-bench dataset. Our system, named CodeMonkeys, allows models to
iteratively edit a codebase by jointly generating and running a testing script
alongside their draft edit. We sample many of these multi-turn trajectories for
every issue to generate a collection of candidate edits. This approach lets us
scale "serial" test-time compute by increasing the number of iterations per
trajectory and "parallel" test-time compute by increasing the number of
trajectories per problem. With parallel scaling, we can amortize up-front costs
across multiple downstream samples, allowing us to identify relevant codebase
context using the simple method of letting an LLM read every file. In order to
select between candidate edits, we combine voting using model-generated tests
with a final multi-turn trajectory dedicated to selection. Overall, CodeMonkeys
resolves 57.4% of issues from SWE-bench Verified using a budget of
approximately 2300 USD. Our selection method can also be used to combine
candidates from different sources. Selecting over an ensemble of edits from
existing top SWE-bench Verified submissions obtains a score of 66.2% and
outperforms the best member of the ensemble on its own. We fully release our
code and data at https://scalingintelligence.stanford.edu/pubs/codemonkeys.Summary
AI-Generated Summary