Mi información de contacto
Correo[email protected]
2024-08-14
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Informe del corazón de la máquina
Editor: Zhang Qian, Xiaozhou
Alguien dijo: "Esperábamos fresas, pero sacaron col rizada". Veamos para qué sirve esta "kale".
Las capacidades de programación de los modelos grandes siempre han atraído mucha atención, y la aparición del superpoderoso programador de IA Devin ha puesto en primer plano el tema "¿Puede la IA reemplazar a los programadores?". Recientemente, Devin también marcó el comienzo de un nuevo oponente: un programador de inteligencia artificial independiente lanzado por la nueva empresa Cosine.Genio. La compañía dijo que Genie superó fácilmente a Devin, con una puntuación del 30% en el banco de referencia SWE de terceros, mientras que Devin obtuvo sólo un 13,8%.
Este SWE-Bench es un conjunto de datos de referencia que se utiliza para evaluar la capacidad de LLM para resolver problemas de software reales en GitHub. Recopila 2294 pares de solicitudes de emisión y extracción de 12 repositorios populares de Python. Durante las pruebas, LLM obtendrá una base de código y una descripción del problema y luego generará un parche para resolver el problema descrito en el problema. Este conjunto de datos se ha utilizado ampliamente en la evaluación de las capacidades de programación de IA.
A medida que evolucionan las capacidades de programación de IA, también lo hace este punto de referencia. Esta mañana temprano, el modelo OpenAI "Strawberry" informado en línea se retrasó nuevamente, pero OpenAI lanzó algo nuevo, que es una versión mejorada de SWE-Bench - SWE-bench Verified.
OpenAI señaló que el banco SWE original tenía algunos problemas que pueden haber causado que se subestimaran las capacidades de ingeniería de software autónoma del modelo. Por lo tanto, durante el proceso de mejora, colaboraron con los autores originales de SWE-Bench para realizar pruebas y mejoras manuales para garantizar que el alcance de las pruebas unitarias fuera apropiado y la descripción del problema clara.
En nuevas pruebas realizadas en SWE-bench Verified, muchos agentes de programación de IA obtuvieron puntuaciones más altas que antes. Entre ellos, la solución Agentless de UIUC incluso duplicó la puntuación. OpenAI cree que esto demuestra que el punto de referencia anterior tiene el defecto de subestimar las capacidades de programación de IA.
Pero para los internautas de todo el mundo que ven "Strawberry", este lanzamiento sigue siendo demasiado superficial. Alguien dijo: "Esperábamos fresas, pero lanzaron col rizada".
Conocimientos previos sobre SWE-bench
Cada ejemplo del conjunto de pruebas de SWE-bench se creó a partir de un problema de GitHub resuelto en 12 repositorios de código Python de código abierto en GitHub. Cada muestra tiene una solicitud de extracción (PR) asociada que incluye código de solución y pruebas unitarias para verificar la exactitud del código. Estas pruebas unitarias se denominan pruebas FAIL_TO_PASS porque fallan antes de que se agregue el código de solución en el PR y pasan después de agregarlo. Cada muestra también incluye pruebas PASS_TO_PASS que se pasan antes y después de fusionar el PR para verificar si el PR rompe otras características en la base del código que no están relacionadas con el problema.
En SWE-bench, el agente de IA obtiene el texto original del problema de GitHub, que es la declaración del problema, y tiene acceso al código base. Dada esta información, el agente debe editar archivos en el código base para resolver el problema.
Las ediciones realizadas por el agente de IA se evaluarán ejecutando las pruebas FAIL_TO_PASS y PASS_TO_PASS. Si la prueba FAIL_TO_PASS pasa, significa que el editor solucionó el problema. Si la prueba PASS_TO_PASS pasa, significa que la edición no rompió partes extrañas de la base del código. Para resolver completamente el problema original de GitHub, ambos conjuntos de pruebas deben pasar.
Tres direcciones de mejora para mejorar la robustez y confiabilidad de SWE-bench
Para mejorar la robustez y confiabilidad de SWE-bench. El equipo de desarrollo identificó tres direcciones principales de mejora:
Banco SWE verificado
Para abordar estos problemas, OpenAI inició una campaña de anotaciones manuales por parte de desarrolladores de software profesionales, examinando cada muestra en el conjunto de pruebas de banco SWE para garantizar que las pruebas unitarias tuvieran el alcance adecuado y que las descripciones de los problemas fueran claras e inequívocas.
Junto con los autores de SWE-bench, lanzaron SWE-bench Verified: un subconjunto del conjunto de pruebas original de SWE-bench, que contiene 500 muestras que han sido verificadas por anotadores humanos. Esta versión reemplaza los equipos de prueba originales SWE-bench y SWE-bench Lite. Además, están publicando anotaciones humanas para todas las muestras de prueba del banco SWE.
También colaboraron con los autores de SWE-bench para desarrollar una nueva herramienta de evaluación para SWE-bench que utiliza un entorno Docker en contenedores para hacer que la evaluación en SWE-bench sea más fácil y confiable.
Método de mejora
OpenAI trabajó con 93 desarrolladores de software con experiencia en Python para seleccionar manualmente muestras de SWE-bench y anotar 1699 muestras aleatorias en el conjunto de pruebas de SWE-bench, y finalmente obtuvo SWE-bench Verified.
Su enfoque consiste en anotar las muestras en el conjunto de pruebas del banco SWE para garantizar la imparcialidad y precisión de la prueba. Específicamente, se centran en dos puntos clave: primero, evaluar si la descripción del problema es lo suficientemente detallada como para evitar que una descripción demasiado vaga provoque pruebas injustas; segundo, verificar si la prueba unitaria FAIL_TO_PASS filtrará incorrectamente soluciones válidas;
Cada criterio de anotación tiene una etiqueta en el rango [0, 1, 2, 3] con gravedad creciente. Las etiquetas 0 y 1 son menores; las etiquetas 2 y 3 son graves, lo que indica que la muestra es inadecuada de alguna manera y debe descartarse.
Además, OpenAI evalúa la dificultad de cada muestra pidiendo a los anotadores que estimen cuánto tiempo les tomaría a los desarrolladores decidir e implementar una solución, asumiendo que la muestra no tiene problemas. Finalmente, OpenAI proporciona una opción de entrada de formato libre para señalar cualquier otro problema importante con la muestra.
Para construir SWE-bench Verified, OpenAI filtra cualquier muestra del conjunto de pruebas original con una declaración de problema o una gravedad de prueba unitaria FAIL_TO_PASS de 2 o superior, y también filtra cualquier muestra marcada con otros problemas graves.
Anotar resultados
Según los nuevos estándares, una gran parte de las muestras del banco SWE original no están calificadas. Como se muestra en la figura, el 38,3% de las muestras se marcaron porque el planteamiento del problema no era lo suficientemente claro y el 61,1% se marcaron porque las pruebas unitarias podían marcar injustamente y falsamente soluciones válidas como incorrectas (Severidad 2, 3 Los dos niveles se suman). . En general, su proceso de anotación dio como resultado que el 68,3 % de las muestras del banco SWE se filtraran debido a declaraciones de problemas poco claras, pruebas unitarias injustas u otros problemas.
La siguiente figura compara la distribución de dificultad del conjunto de datos original de SWE-bench y el nuevo conjunto de datos verificado de SWE-bench. Estiman la distribución de dificultad de SWE-bench basándose en un subconjunto aleatorio de 1699 muestras.
Como puede verse en la figura, en el conjunto de datos original de SWE-bench, el tiempo estimado de finalización de la mayoría (77,8%) de las muestras es menos de una hora de trabajo para un ingeniero de software experimentado. SWE-bench Lite y el nuevo conjunto de datos SWE-bench Verified aumentan aún más esta proporción, y se espera que menos del 10 % de los problemas tarden más de una hora en resolverse. Sin embargo, los mecanismos detrás de este cambio son bastante diferentes: SWE-bench Lite es un submuestreo del conjunto de datos original para facilitar la evaluación comparativa, mientras que SWE-bench Verified intenta eliminar características no factibles de la muestra del conjunto de datos.
Desempeño de cada agente en SWE-bench Verified
En el nuevo conjunto de datos verificado de SWE-bench, el equipo de desarrollo probó el rendimiento de GPT-4o utilizando múltiples andamios de código abierto que funcionaron bien en la tabla de clasificación de SWE-bench original.
Se descubrió que el rendimiento de GPT-4o en el andamio de mejor rendimiento alcanzó el 33,2 % en SWE-bench Verified, más del doble de la puntuación del 16 % en el SWE-bench original. En general, esto confirma la sospecha inicial de OpenAI de que el banco SWE original subestimó las capacidades del agente.
Vale la pena señalar que el salto de SWE-bench Lite a SWE-bench Verified no es tan obvio, porque después del filtrado, SWE-bench Lite ya es más fácil que el conjunto de datos completo.
Análisis de rendimiento estratificado por dificultad
La mejora en el rendimiento cuando se evalúa en SWE-bench Verified puede deberse en parte a que la distribución de las muestras de prueba está sesgada hacia muestras más simples.
OpenAI investigó esto trazando el rendimiento estratificado por dificultad. Si el nuevo conjunto de datos simplemente cambia la distribución de dificultad para incluir muestras más fáciles, el rendimiento estratificado dentro de cada categoría no cambia, como es el caso del SWE-bench original al SWE-bench Lite.
Por el contrario, OpenAI observó que el rendimiento del agente mejoró en todas las categorías de dificultad al pasar a SWE-bench Verified, lo que es consistente con el efecto esperado de eliminar muestras imposibles de todas las categorías en lugar de simplemente mover Eliminar muestras difíciles.
Enlace de referencia: https://openai.com/index/introtaining-swe-bench-verified/