CodeMonkeys: Scalare il Calcolo al Tempo di Test per l'Ingegneria del Software
CodeMonkeys: Scaling Test-Time Compute for Software Engineering
January 24, 2025
Autori: Ryan Ehrlich, Bradley Brown, Jordan Juravsky, Ronald Clark, Christopher Ré, Azalia Mirhoseini
cs.AI
Abstract
L'adattamento del calcolo al momento del test è un asse promettente per migliorare le capacità dei LLM. Tuttavia, il calcolo al momento del test può essere scalato in varie modalità e la combinazione efficace di diversi approcci rimane un'area attiva di ricerca. Qui, esploriamo questo problema nel contesto della risoluzione di problemi reali di GitHub dal dataset SWE-bench. Il nostro sistema, chiamato CodeMonkeys, consente ai modelli di modificare iterativamente una base di codice generando e eseguendo congiuntamente uno script di test insieme alla loro modifica provvisoria. Campioniamo molte di queste traiettorie multi-turn per ogni problema per generare una raccolta di modifiche candidate. Questo approccio ci consente di scalare il calcolo al momento del test "seriale" aumentando il numero di iterazioni per traiettoria e il calcolo al momento del test "parallelo" aumentando il numero di traiettorie per problema. Con lo scaling parallelo, possiamo ammortizzare i costi iniziali su più campioni successivi, consentendoci di identificare il contesto della base di codice rilevante utilizzando il semplice metodo di far leggere a un LLM ogni file. Per selezionare tra le modifiche candidate, combiniamo il voto utilizzando test generati dal modello con una traiettoria multi-turn finale dedicata alla selezione. Complessivamente, CodeMonkeys risolve il 57,4% dei problemi da SWE-bench Verified utilizzando un budget di circa 2300 USD. Il nostro metodo di selezione può anche essere utilizzato per combinare candidati da diverse fonti. La selezione su un insieme di modifiche dalle migliori presentazioni verificate di SWE-bench esistenti ottiene un punteggio del 66,2% e supera il miglior membro dell'insieme da solo. Rilasciamo completamente il nostro codice e i dati su 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