Neue Benchmarks enthüllen interessante Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung

Neue Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung wurden veröffentlicht. Du denkst jetzt vielleicht: „Wow, Sprachmodelle, Codegenerierung, das klingt ja echt fancy!“ Und ja, das ist es tatsächlich! Aber lass mich das genauer erklären.

Bisher war es schwierig, die Zuverlässigkeit solcher Sprachmodelle zu bewerten. Manchmal haben sie gute Ergebnisse erzielt, aber hin und wieder haben sie auch fehlerhafte oder sogar irreführende Ergebnisse geliefert. Doch jetzt gibt es einen neuen Ansatz, um die Leistungsfähigkeit generischer Sprachmodelle besser zu bewerten – Benchmarks!

Diese Benchmarks beinhalten menschliche Bewertungen, zum Beispiel die Chatbot Arena von LMSYS. Hier werden verschiedene Qualitätskriterien gemessen und in Ranglisten zusammengeführt. Das ist besonders interessant für spezifischere Sprachmodelle, die Programmcode generieren können. An erster Stelle stehen dabei die sogenannten LLMs, die in der Lage sind, Programmcode zu erstellen. Und das kann sowohl auf Syntax als auch auf Semantik überprüft werden.

Ein Unternehmen namens Symflower, das sich auf automatische Testgenerierung spezialisiert hat, hat sich intensiv mit diesem Thema beschäftigt und eine umfassende Blog-Serie dazu veröffentlicht. Die gewonnenen Erkenntnisse sind echt faszinierend und geben uns interessante Einblicke in die Leistungsfähigkeit der LLMs.

Aber es gibt auch Einschränkungen, meine Freunde. Die Codegenerierung beschränkt sich bisher nur auf die Programmiersprachen Java und Go. Python und JavaScript, zwei Sprachen, die ziemlich weit verbreitet sind, wurden bisher noch nicht einbezogen. Das ist schade, denn wer weiß, vielleicht würden die Ergebnisse dort genauso gut ausfallen. Vielleicht könnten wir ja mit mehr Codebeispielen eine bessere Leistung erzielen.

In den vorherigen Teilen der Blog-Serie wurden bisher nur Tests für einfache, leere Klassen erstellt. Aber jetzt wurde der Ansatz erweitert und die Situation dadurch komplexer gemacht. Nun sollen die LLMs Tests für insgesamt 23 echte Programmierbeispiele generieren. Und hier kommen die interessanten Erkenntnisse: Nur 58 Prozent der generierten Ergebnisse waren überhaupt übersetzbar. Bei manchen Modellen lag der Wert sogar über 80 Prozent, aber bei anderen Modellen war er deutlich niedriger. Das bedeutet, dass manuelle Nacharbeit erforderlich ist.

Bei kompilierten Sprachen ist die Messung dieser Metrik relativ unkompliziert, aber bei Python und JavaScript wird es schwierig. Einige Modelle haben überhaupt keinen übersetzbaren Code generiert. Das ist so ähnlich wie wenn ein echter Programmierer syntaktisch fehlerhaften Code schreibt. Aber keine Sorge, die meisten syntaktischen Fehler waren nur klein und könnten mit Hilfe von IDE-Unterstützung schnell korrigiert werden.

Bei Java haben drei Modelle konsequent ausführbaren Code generiert, während es bei Go leider nicht geklappt hat. Das liegt vermutlich daran, dass die Trainingsdatenmenge für Go begrenzt war. Also müssen wir definitiv weiterhin auf Programmierer angewiesen sein.

Aber jetzt kommt der interessante Teil: Die Codegenerierung mit Java ist im Vergleich zu Go viel effizienter. Das lässt hoffen, dass es auch mit Python und JavaScript gut funktionieren könnte, da dort mehr Trainingsdaten verfügbar sind. Allerdings gestaltet sich die Bestimmung der Metriken schwieriger, da der Code nicht übersetzt werden muss. Die dynamische Typisierung kann zu zusätzlichen Fehlern führen, die manuell überprüft werden müssen.

Und hier noch eine interessante Info: Unterschiedliche Modelle behandeln Ausnahmen unterschiedlich. Manche fangen sie ab, während andere einfach den Test scheitern lassen. Sowohl menschliche Programmierer als auch die Modelle verwenden beide Ansätze, weshalb die Modelle beide Strategien erlernt haben.

Alles in allem sind die neuen Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung echt spannend. Es gibt zwar noch einige Einschränkungen, aber die Möglichkeiten, die sich hier eröffnen, sind einfach nur faszinierend. Wer weiß, vielleicht werden wir in Zukunft noch viel mehr von diesen Sprachmodellen sehen und sie könnten uns bei der Entwicklung von Code noch mehr unterstützen. Aber bis dahin bleibt es spannend und wir sollten weiterhin auf die Expertise von menschlichen Programmierern setzen.

Schlagwörter: Java + JavaScript + Go

Wie bewerten Sie den Schreibstil des Artikels?
1 Star2 Stars3 Stars4 Stars5 Stars
  • 9. Juli 2024