CodeMonkeys: Escalando el Cálculo en Tiempo de Prueba para Ingeniería de Software
CodeMonkeys: Scaling Test-Time Compute for Software Engineering
January 24, 2025
Autores: Ryan Ehrlich, Bradley Brown, Jordan Juravsky, Ronald Clark, Christopher Ré, Azalia Mirhoseini
cs.AI
Resumen
La escalabilidad del cálculo en tiempo de prueba es un eje prometedor para mejorar las capacidades de los LLM. Sin embargo, el cálculo en tiempo de prueba puede escalarse de diversas formas, y combinar eficazmente diferentes enfoques sigue siendo un área de investigación activa. Aquí, exploramos este problema en el contexto de resolver problemas reales de GitHub del conjunto de datos SWE-bench. Nuestro sistema, llamado CodeMonkeys, permite a los modelos editar iterativamente una base de código generando y ejecutando conjuntamente un script de prueba junto con su edición preliminar. Muestreamos muchas de estas trayectorias multi-turno para cada problema para generar una colección de ediciones candidatas. Este enfoque nos permite escalar el cálculo en tiempo de prueba "serial" aumentando el número de iteraciones por trayectoria y el cálculo en tiempo de prueba "paralelo" aumentando el número de trayectorias por problema. Con la escalabilidad paralela, podemos amortizar los costos iniciales entre múltiples muestras posteriores, lo que nos permite identificar el contexto relevante de la base de código utilizando el método simple de permitir que un LLM lea cada archivo. Para seleccionar entre ediciones candidatas, combinamos la votación utilizando pruebas generadas por el modelo con una trayectoria multi-turno final dedicada a la selección. En general, CodeMonkeys resuelve el 57.4% de los problemas de SWE-bench Verificados utilizando un presupuesto de aproximadamente 2300 USD. Nuestro método de selección también se puede utilizar para combinar candidatos de diferentes fuentes. La selección de un conjunto de ediciones de las principales presentaciones Verificadas de SWE-bench existentes obtiene una puntuación del 66.2% y supera al mejor miembro del conjunto por sí solo. Publicamos completamente nuestro código y datos en 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