{"id":9337,"date":"2024-07-09T13:46:17","date_gmt":"2024-07-09T13:46:17","guid":{"rendered":"https:\/\/byte-bucket.com\/2024\/07\/09\/neue-benchmarks-enthuellen-interessante-erkenntnisse-zur-leistung-von-sprachmodellen-bei-der-codegenerierung\/"},"modified":"2024-07-09T13:46:17","modified_gmt":"2024-07-09T13:46:17","slug":"neue-benchmarks-enthuellen-interessante-erkenntnisse-zur-leistung-von-sprachmodellen-bei-der-codegenerierung","status":"publish","type":"post","link":"https:\/\/byte-bucket.com\/?p=9337","title":{"rendered":"Neue Benchmarks enth\u00fcllen interessante Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung"},"content":{"rendered":"<p>Neue Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung wurden ver\u00f6ffentlicht. Du denkst jetzt vielleicht: &#8222;Wow, Sprachmodelle, Codegenerierung, das klingt ja echt fancy!&#8220; Und ja, das ist es tats\u00e4chlich! Aber lass mich das genauer erkl\u00e4ren.<\/p>\n<p>Bisher war es schwierig, die Zuverl\u00e4ssigkeit solcher Sprachmodelle zu bewerten. Manchmal haben sie gute Ergebnisse erzielt, aber hin und wieder haben sie auch fehlerhafte oder sogar irref\u00fchrende Ergebnisse geliefert. Doch jetzt gibt es einen neuen Ansatz, um die Leistungsf\u00e4higkeit generischer Sprachmodelle besser zu bewerten &#8211; Benchmarks!<\/p>\n<p>Diese Benchmarks beinhalten menschliche Bewertungen, zum Beispiel die Chatbot Arena von LMSYS. Hier werden verschiedene Qualit\u00e4tskriterien gemessen und in Ranglisten zusammengef\u00fchrt. Das ist besonders interessant f\u00fcr spezifischere Sprachmodelle, die Programmcode generieren k\u00f6nnen. 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 \u00fcberpr\u00fcft werden. <\/p>\n<p>Ein Unternehmen namens Symflower, das sich auf automatische Testgenerierung spezialisiert hat, hat sich intensiv mit diesem Thema besch\u00e4ftigt und eine umfassende Blog-Serie dazu ver\u00f6ffentlicht. Die gewonnenen Erkenntnisse sind echt faszinierend und geben uns interessante Einblicke in die Leistungsf\u00e4higkeit der LLMs.<\/p>\n<p>Aber es gibt auch Einschr\u00e4nkungen, meine Freunde. Die Codegenerierung beschr\u00e4nkt 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\u00df, vielleicht w\u00fcrden die Ergebnisse dort genauso gut ausfallen. Vielleicht k\u00f6nnten wir ja mit mehr Codebeispielen eine bessere Leistung erzielen.<\/p>\n<p>In den vorherigen Teilen der Blog-Serie wurden bisher nur Tests f\u00fcr einfache, leere Klassen erstellt. Aber jetzt wurde der Ansatz erweitert und die Situation dadurch komplexer gemacht. Nun sollen die LLMs Tests f\u00fcr insgesamt 23 echte Programmierbeispiele generieren. Und hier kommen die interessanten Erkenntnisse: Nur 58 Prozent der generierten Ergebnisse waren \u00fcberhaupt \u00fcbersetzbar. Bei manchen Modellen lag der Wert sogar \u00fcber 80 Prozent, aber bei anderen Modellen war er deutlich niedriger. Das bedeutet, dass manuelle Nacharbeit erforderlich ist. <\/p>\n<p>Bei kompilierten Sprachen ist die Messung dieser Metrik relativ unkompliziert, aber bei Python und JavaScript wird es schwierig. Einige Modelle haben \u00fcberhaupt keinen \u00fcbersetzbaren Code generiert. Das ist so \u00e4hnlich wie wenn ein echter Programmierer syntaktisch fehlerhaften Code schreibt. Aber keine Sorge, die meisten syntaktischen Fehler waren nur klein und k\u00f6nnten mit Hilfe von IDE-Unterst\u00fctzung schnell korrigiert werden.<\/p>\n<p>Bei Java haben drei Modelle konsequent ausf\u00fchrbaren Code generiert, w\u00e4hrend es bei Go leider nicht geklappt hat. Das liegt vermutlich daran, dass die Trainingsdatenmenge f\u00fcr Go begrenzt war. Also m\u00fcssen wir definitiv weiterhin auf Programmierer angewiesen sein.<\/p>\n<p>Aber jetzt kommt der interessante Teil: Die Codegenerierung mit Java ist im Vergleich zu Go viel effizienter. Das l\u00e4sst hoffen, dass es auch mit Python und JavaScript gut funktionieren k\u00f6nnte, da dort mehr Trainingsdaten verf\u00fcgbar sind. Allerdings gestaltet sich die Bestimmung der Metriken schwieriger, da der Code nicht \u00fcbersetzt werden muss. Die dynamische Typisierung kann zu zus\u00e4tzlichen Fehlern f\u00fchren, die manuell \u00fcberpr\u00fcft werden m\u00fcssen.<\/p>\n<p>Und hier noch eine interessante Info: Unterschiedliche Modelle behandeln Ausnahmen unterschiedlich. Manche fangen sie ab, w\u00e4hrend andere einfach den Test scheitern lassen. Sowohl menschliche Programmierer als auch die Modelle verwenden beide Ans\u00e4tze, weshalb die Modelle beide Strategien erlernt haben.<\/p>\n<p>Alles in allem sind die neuen Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung echt spannend. Es gibt zwar noch einige Einschr\u00e4nkungen, aber die M\u00f6glichkeiten, die sich hier er\u00f6ffnen, sind einfach nur faszinierend. Wer wei\u00df, vielleicht werden wir in Zukunft noch viel mehr von diesen Sprachmodellen sehen und sie k\u00f6nnten uns bei der Entwicklung von Code noch mehr unterst\u00fctzen. Aber bis dahin bleibt es spannend und wir sollten weiterhin auf die Expertise von menschlichen Programmierern setzen.<\/p>\n<p>Schlagw\u00f6rter: Java + JavaScript + Go<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neue Erkenntnisse zur Leistung von Sprachmodellen bei der Codegenerierung wurden ver\u00f6ffentlicht. Du denkst jetzt vielleicht: &#8222;Wow, Sprachmodelle, Codegenerierung, das klingt ja echt fancy!&#8220; Und ja, das ist es tats\u00e4chlich! Aber lass mich das genauer erkl\u00e4ren. Bisher war es schwierig, die Zuverl\u00e4ssigkeit solcher Sprachmodelle zu bewerten. Manchmal haben sie gute Ergebnisse&#46;&#46;&#46;<\/p>\n","protected":false},"author":4,"featured_media":9336,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-9337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/9337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9337"}],"version-history":[{"count":0,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/9337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/media\/9336"}],"wp:attachment":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}