Das OpenAI-Modell „Strawberry' hat sich erneut verzögert. Was ist die SWE-Benchmark, die am frühen Morgen veröffentlicht wurde?

WBOY
Freigeben: 2024-08-14 17:08:02
Original
948 Leute haben es durchsucht
Jemand sagte: „Wir hatten Erdbeeren erwartet, aber sie haben Grünkohl herausgebracht.“ Mal sehen, wofür dieser „Grünkohl“ verwendet wird.

Die Programmierfähigkeiten großer Modelle haben schon immer große Aufmerksamkeit erregt, und das Aufkommen des supermächtigen KI-Programmierers Devin hat das Thema „Kann KI Programmierer ersetzen?“ in den Vordergrund gerückt. Kürzlich hat Devin auch einen neuen Gegner begrüßt – den autonomen KI-Programmierer Genie, der vom Startup Cosine ins Leben gerufen wurde. Das Unternehmen gab an, dass Genie Devin deutlich übertraf und im SWE-Benchmark eines Drittanbieters 30 % erreichte, während Devin nur 13,8 % erreichte.

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

Dieser SWE-Bench ist ein Benchmark-Datensatz, der zur Bewertung der Fähigkeit von LLM verwendet wird, echte Softwareprobleme auf GitHub zu lösen. Es sammelt 2.294 Issue-Pull-Request-Paare aus 12 beliebten Python-Repositories. Während des Tests erhält LLM eine Codebasis und eine Problembeschreibung und generiert dann einen Patch, um das im Problem beschriebene Problem zu lösen. Dieser Datensatz wurde häufig zur Bewertung der KI-Programmierfähigkeiten verwendet.

Mit der Weiterentwicklung der KI-Programmierfähigkeiten entwickelt sich auch dieser Benchmark weiter. Heute früh wurde das online gemeldete OpenAI-Modell „Strawberry“ erneut verzögert, aber OpenAI hat etwas Neues veröffentlicht, nämlich eine verbesserte Version von SWE-Bench – SWE-bench Verified.

OpenAI wies darauf hin, dass der ursprüngliche SWE-Bench einige Probleme aufweist, die dazu führen können, dass die autonomen Software-Engineering-Fähigkeiten des Modells unterschätzt werden. Daher arbeiteten sie während des Verbesserungsprozesses mit den ursprünglichen SWE-Bench-Autoren zusammen, um manuelle Überprüfungen und Verbesserungen durchzuführen, um sicherzustellen, dass der Umfang der Komponententests angemessen und die Problembeschreibung klar war.

In einem neuen Test auf SWE-Bench Verified erzielten viele KI-Programmierer bessere Ergebnisse als zuvor. Unter anderem hat die Agentless-Lösung von UIUC die Punktzahl sogar verdoppelt. OpenAI glaubt, dass dies beweist, dass der vorherige Benchmark den Fehler aufweist, die KI-Programmierfähigkeiten zu unterschätzen.

Aber für Internetnutzer auf der ganzen Welt, die „Strawberry“ schauen, ist diese Ankündigung immer noch zu oberflächlich. Jemand sagte: „Wir hatten Erdbeeren erwartet, aber sie haben Grünkohl herausgebracht.“
Hintergrund zum SWE-Bench

Jedes Beispiel im SWE-Bench-Testsatz wurde aus einem gelösten GitHub-Problem in 12 Open-Source-Python-Code-Repositories auf GitHub erstellt. Jedem Beispiel ist eine Pull-Anfrage (PR) zugeordnet, die Lösungscode und Komponententests enthält, um die Richtigkeit des Codes zu überprüfen. Diese Komponententests werden als FAIL_TO_PASS-Tests bezeichnet, da sie fehlschlagen, bevor der Lösungscode im PR hinzugefügt wird, und danach bestehen. Jedes Beispiel enthält außerdem PASS_TO_PASS-Tests, die vor und nach der Zusammenführung des PR durchgeführt werden, um zu überprüfen, ob der PR andere Funktionen in der Codebasis beeinträchtigt, die nicht mit dem Problem zusammenhängen.

In SWE-Bench erhält der KI-Agent den Originaltext aus dem GitHub-Issue, also die Problemstellung, und hat Zugriff auf die Codebasis. Anhand dieser Informationen muss der Agent Dateien in der Codebasis bearbeiten, um das Problem zu lösen.

Die vom KI-Agenten bereitgestellte Bearbeitung wird durch Ausführen der Tests FAIL_TO_PASS und PASS_TO_PASS ausgewertet. Wenn der FAIL_TO_PASS-Test bestanden wird, bedeutet dies, dass das Problem durch die Bearbeitung behoben wurde. Wenn der PASS_TO_PASS-Test bestanden wird, bedeutet dies, dass durch die Bearbeitung keine überflüssigen Teile der Codebasis beschädigt wurden. Um das ursprüngliche GitHub-Problem vollständig zu lösen, müssen beide Testreihen bestanden werden.

Drei Verbesserungsrichtungen zur Verbesserung der Robustheit und Zuverlässigkeit der SWE-Bank

Um die Robustheit und Zuverlässigkeit der SWE-Bank zu verbessern. Das Entwicklungsteam identifizierte drei Hauptrichtungen für Verbesserungen:

  • Unit-Tests zur Bewertung der Korrektheit einer Lösung sind oft zu spezifisch und manchmal nicht einmal relevant für das Problem. Dies kann dazu führen, dass die richtige Lösung abgelehnt wird.
  • Die Problembeschreibung vieler Proben ist nicht klar genug, was zu Unklarheiten darüber führt, was das Problem ist und wie es gelöst werden sollte.
  • Manchmal ist es schwierig, eine SWE-Bench-Entwicklungsumgebung für den Agenten zuverlässig einzurichten, was dazu führen kann, dass Unit-Tests unabhängig von der Lösung unbeabsichtigt fehlschlagen. In diesem Fall kann eine vollkommen gültige Lösung als falsch gewertet werden.

SWE-bench Verified

Um diese Probleme anzugehen, hat OpenAI eine menschliche Annotationskampagne durch professionelle Softwareentwickler für jedes Beispiel im SWE-bench-Testset gestartet. Das Screening wird durchgeführt, um Unit-Tests sicherzustellen sind angemessen umfangreich und die Problembeschreibungen sind klar und eindeutig.

Zusammen mit den Autoren von SWE-bench veröffentlichten sie SWE-bench Verified: eine Teilmenge des ursprünglichen Testsatzes von SWE-bench, die 500 Proben enthält, die von menschlichen Annotatoren verifiziert wurden. Diese Version ersetzt die ursprünglichen Testsuiten SWE-bench und SWE-bench Lite. Darüber hinaus veröffentlichen sie menschliche Anmerkungen für alle SWE-Bench-Testproben.

Sie haben außerdem mit den Autoren von SWE-bench zusammengearbeitet, um ein neues Bewertungstool für SWE-bench zu entwickeln, das eine containerisierte Docker-Umgebung verwendet, um die Bewertung auf SWE-bench zuverlässiger zu machen.

  • Tool-Adresse: https://github.com/princeton-nlp/SWE-bench/tree/main/docs/20240627_docker

Verbesserung. Methode

OpenAI Arbeitete mit 93 Softwareentwicklern mit Python-Erfahrung zusammen, überprüfte manuell SWE-Bench-Proben, kommentierte 1699 Zufallsproben im SWE-Bench-Testsatz und erhielt schließlich die SWE-Bench-Verifizierung.

Ihr Ansatz besteht darin, die Proben im SWE-Bench-Testsatz mit Anmerkungen zu versehen, um Fairness und Genauigkeit des Tests sicherzustellen. Sie konzentrieren sich insbesondere auf zwei wichtige Punkte: erstens die Beurteilung, ob die Problembeschreibung detailliert genug ist, um zu verhindern, dass eine zu vage Beschreibung den Test unfair macht, zweitens die Prüfung, ob der FAIL_TO_PASS-Komponententest gültige Lösungen falsch herausfiltert;

Jedes Anmerkungskriterium hat eine Bezeichnung im Bereich [0, 1, 2, 3] mit zunehmendem Schweregrad. Die Markierungen 0 und 1 sind geringfügig; die Markierungen 2 und 3 sind schwerwiegend, was darauf hinweist, dass die Probe in irgendeiner Weise unzureichend ist und verworfen werden sollte.

Darüber hinaus bewertet OpenAI die Schwierigkeit jedes Beispiels, indem es Annotatoren auffordert, abzuschätzen, wie lange Entwickler brauchen würden, um sich für eine Lösung zu entscheiden und diese zu implementieren, vorausgesetzt, das Beispiel weist keine Probleme auf. Schließlich bietet OpenAI eine Freiform-Eingabeoption, um alle anderen größeren Probleme mit dem Beispiel zu kennzeichnen.

Um SWE-bench Verified zu erstellen, filtert OpenAI alle Proben aus dem ursprünglichen Testsatz mit einer Problemanweisung oder einem FAIL_TO_PASS-Komponententestschweregrad von 2 oder höher sowie alle Proben heraus, die mit anderen schwerwiegenden Problemen gekennzeichnet sind.

Annotationsergebnisse

Nach dem neuen Standard ist ein großer Teil der Proben im ursprünglichen SWE-Bench unqualifiziert.Wie in der Abbildung dargestellt, wurden 38,3 % der Stichproben markiert, weil die Problemstellung nicht klar genug war, und 61,1 % wurden markiert, weil die Komponententests zu Unrecht fälschlicherweise gültige Lösungen als falsch markieren konnten (Schweregrad 2, 3, zwei Stufen zusammengerechnet). Insgesamt führte ihr Annotationsprozess dazu, dass 68,3 % der SWE-Bench-Stichproben aufgrund unklarer Problemstellungen, unfairer Komponententests oder anderer Probleme herausgefiltert wurden.

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

Die folgende Abbildung vergleicht die Schwierigkeitsverteilung des ursprünglichen SWE-Bench-Datensatzes und des neuen verifizierten SWE-Bench-Datensatzes. Sie schätzen die Schwierigkeitsverteilung des SWE-Bench anhand einer zufälligen Teilmenge von 1699 Stichproben.

Wie aus der Abbildung ersichtlich ist, beträgt im ursprünglichen SWE-Bench-Datensatz die geschätzte Fertigstellungszeit der meisten (77,8 %) Proben weniger als eine Arbeitsstunde für einen erfahrenen Softwareentwickler. SWE-bench Lite und der neue SWE-bench Verified-Datensatz erhöhen diesen Anteil weiter, wobei erwartet wird, dass die Lösung von weniger als 10 % der Probleme mehr als eine Stunde dauert. Die Mechanismen hinter dieser Änderung sind jedoch recht unterschiedlich: SWE-bench Lite ist eine Unterabtastung des ursprünglichen Datensatzes, um das Benchmarking zu erleichtern, während SWE-bench Verified versucht, nicht realisierbare Funktionen aus der Datensatzstichprobe zu entfernen.

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

Leistung jedes Agenten auf der SWE-Bench-Verifizierung

Auf dem neuen SWE-Bench-verifizierten Datensatz verwendete das Entwicklungsteam mehrere Agenten, die in den ursprünglichen SWE-Bench-Ranglisten gut abgeschnitten haben. Die Open Source scaffold testet die Leistung von GPT-4o.

Es wurde festgestellt, dass die Leistung von GPT-4o auf dem leistungsstärksten Gerüst 33,2 % auf der verifizierten SWE-Benchmark erreichte, was mehr als das Doppelte der 16 %-Wertung auf der ursprünglichen SWE-Benchmark ist. Insgesamt bestätigt dies den anfänglichen Verdacht von OpenAI, dass die ursprüngliche SWE-Benchmark die Fähigkeiten des Agenten unterschätzt hat.

Es ist erwähnenswert, dass der Sprung von SWE-bench Lite zu SWE-bench Verified nicht so auffällig ist, da SWE-bench Lite nach dem Filtern bereits einfacher ist als der vollständige Datensatz.

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

Leistungsanalyse geschichtet nach Schwierigkeitsgrad

Bei der Auswertung auf dem SWE-Bench Verified kann die Leistungsverbesserung teilweise darauf zurückzuführen sein, dass die Verteilung der Testproben hin zu einfacheren Proben verzerrt ist.

OpenAI hat dies untersucht, indem es die Leistung nach Schwierigkeitsgrad geschichtet aufzeichnete. Wenn der neue Datensatz einfach die Schwierigkeitsverteilung ändert, um einfachere Stichproben einzubeziehen, ändert sich die geschichtete Leistung innerhalb jeder Kategorie nicht, wie es beim ursprünglichen SWE-Bench zum SWE-Bench Lite der Fall ist.

Im Gegensatz dazu stellte OpenAI fest, dass sich die Leistung des Agenten in allen Schwierigkeitskategorien beim Wechsel zu SWE-Bench Verified verbesserte, was mit dem erwarteten Effekt der Entfernung unmöglicher Proben aus allen Kategorien übereinstimmt, anstatt nur schwierige Proben zu entfernen.

OpenAI「草莓」模型再次跳票,凌晨发布的SWE-bench Verified是个啥?

Referenzlink: https://openai.com/index/introducing-swe-bench-verified/

Das obige ist der detaillierte Inhalt vonDas OpenAI-Modell „Strawberry' hat sich erneut verzögert. Was ist die SWE-Benchmark, die am frühen Morgen veröffentlicht wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jiqizhixin.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!