Heute kündigen wir einen hochmodernen Durchbruch an, der die Grenzen der KI-Codegenerierung erweitert. Unser Wissenschaftsteam bei NinjaTech AI hat einen neuartigen Ansatz zur Codegenerierung namens „Multi-Programming Language Ensemble“ (MPLE) entwickelt.
Unter Verwendung dieses Ansatzes mit Llama 3.1 405B Instruct konnten wir statistisch gesehen eine bessere Leistung als GPT-4o von OpenAI und Sonnet 3.5 von Anthropic zeigen, wie im HumanEval-Benchmark gemessen. Sie finden diese Ergebnisse zusammen mit Einzelheiten zu unserem Ansatz in unserem technischen Artikel, der unter veröffentlicht wurde arxiv.org.
In diesem Blogbeitrag werden wir uns mit drei zentralen Erkenntnissen zum Multi-Programming Language Ensemble (MPLE) befassen, das das Potenzial hat, die Codegenerierungsfunktionen aller KI-Assistenten erheblich zu verbessern:
- Ein agentischer Workflow-Ansatz (MPLE) zur Codegenerierung sorgt auf kostengünstige Weise für eine um 2-9% höhere Genauigkeit.
- Die Integration von MPLE mit fortschrittlichen Inferenztechniken wie Reflection und Monte Carlo Tree Search (MCTS), die auf bestehende LLM-Modelle angewendet werden, führt zu zusätzlichen Leistungssteigerungen.
- Zu unserer angenehmen Überraschung beobachteten wir, dass MPLE+MCTS-Techniken, die auf llama3.1-405b-instruct basieren, eine Genauigkeit von erreichten 96,25% im HumanEval Benchmark.
Die Herausforderung der Codegenerierung
Das Schreiben von Code kann eine Herausforderung sein, da es ein tiefes Verständnis der Programmiersprachen und die Fähigkeit erfordert, komplexe Ideen in ausführbaren Code umzusetzen. Darüber hinaus müssen sich Entwickler auch mit Problemen wie Debugging, Optimierung und Kompatibilität auseinandersetzen — was den Codierungsprozess noch komplizierter und zeitaufwändiger machen kann.
Hier hilft KI; Large Language Models (LLMs) können schnell große Mengen an Code generieren, wenn ein Benutzer dazu aufgefordert wird. Seit unserem Start MyNinja.ai Ende Mai 2024 hat es über 734.000 Coder-Aufgaben von ungefähr 173.000 Entwicklern verarbeitet.
Die KI-Codegenerierung beseitigt jedoch nicht alle Herausforderungen beim Schreiben von Code. LLMs sind nicht zu 100% zuverlässig — sie können beim Generieren von Code Fehler machen.
Der Grund, warum LLMs Fehler machen, ist, dass traditionelle Ansätze zur KI-Codegenerierung auf einer einzigen Programmiersprache beruhen, was zu sprachspezifischen Fehlern und Verzerrungen führen kann. Beispielsweise kann ein LLM bei der Python-Codegenerierung gut abschneiden, weil es in Python trainiert wurde. Wenn Sie jedoch aufgefordert werden, einen C++- oder Java-Code zu erstellen, wird aufgrund von Unterschieden in der Fehlerbehandlung oder Bibliotheksnutzung möglicherweise kein genaues Ergebnis erzielt. Ein weiterer Grund, warum ein LLMs Schwierigkeiten haben kann, genauen Code zu generieren, ist die Schwierigkeit, für Menschen lesbaren Text (d. h. die Benutzeraufforderung) in Code zu übersetzen.
Eine Lösung für dieses Problem besteht darin, in mehr Modelltraining zu investieren. Unternehmen können mehr Zeit — und immer mehr Geld — damit verbringen, LLMs so auszubilden, dass sie Programmierfragen beim ersten Versuch beantworten. Dies wird als Zero-Shot-Learning bezeichnet, was bedeutet, dass das Modell eine richtige Antwort ohne Beispiele liefert, sondern nur eine Aufforderung, und es generiert eine angemessene Antwort, die nur auf seinem Vorwissen basiert. Ein Nullschuss-Ansatz erfordert jedoch einen enormen Zeit- und Geldaufwand (über 10 bis 100 Millionen $), um die Modellgenauigkeit zu verbessern.
Aber Die Inferenzkosten sind in den letzten 2 Jahren um mehr als das 100-fache gesunken und das tun sie auch weiterhin, wodurch ein neuer Weg entsteht: Agentic Workflows for CodeGen.
Unsere Lösung: Multi-Programming Language Ensemble (MPLE)
Unser Team hat einen neuartigen Ansatz zur KI-Codegenerierung namens Multi-Programming Language Ensemble (MPLE) vorgeschlagen. Dieser Ansatz nutzt die Stärke mehrerer Programmiersprachen, um mithilfe eines Multi-Shot-Ansatzes genaueren und robusteren Code zu generieren.
Anstatt uns darauf zu verlassen, dass das Modell beim ersten Versuch (Single Shot) eine korrekte Antwort liefert, stellen wir mehrmals eine Schnittstelle zum LLM her, um die richtige Antwort zu generieren. Jedes Mal, wenn wir mit dem Modell interagieren, bitten wir es, das Problem des Benutzers mit einer anderen Programmiersprache zu lösen. Dadurch können wir die natürliche Stärke eines LLM nutzen — die Fähigkeit, Code von einer Programmiersprache in eine andere zu übersetzen.
Stellen Sie sich MPLE als ein Team von Experten vor, die sich jeweils mit einer anderen Programmiersprache auskennen und zusammenarbeiten, um beim ersten Versuch den genauesten Code zu erstellen. Jeder Experte (oder jede Programmiersprache) bringt seine einzigartigen Stärken mit ein, und durch die Kombination ihrer Stärken können sie eine genauere und zuverlässigere Lösung entwickeln. MPLE bittet all diese Experten, ihr „Fachwissen“ einzubringen, während unser System den richtigen, vom Benutzer angeforderten Code generiert.
So funktioniert MPLE:
- Erste Codegenerierung: Wenn ein Benutzer unserem System eine Frage zum Code stellt, generiert unser KI-Modell eine erste Antwort in der vom Benutzer angeforderten Programmiersprache.
- Mehrsprachiges Sampling und Übersetzung: Bevor die Antwort an den Benutzer zurückgegeben wird, wird der Code getestet, um seine Qualität und Genauigkeit sicherzustellen. Wenn der Code nicht alle Tests besteht, generiert unser Modell neuen Code in einer anderen Programmiersprache. Der neue Code wird dann zurück in die vom Benutzer gewünschte Programmiersprache übersetzt. Diese alternative Version unterscheidet sich von der Originalversion, da sie die Stärken der alternativen Sprache nutzt und möglicherweise die Fehler beseitigt, die zu den Testfehlern geführt haben.
- Iterative Verfeinerung: Die verfeinerte Codeversion wird erneut anhand der Testfälle getestet. Wenn sie nicht alle Tests besteht, wird der Prozess fortgesetzt, indem sie verschiedene Codierungssprachen durchläuft, bis eine Version alle Tests erfolgreich besteht. Wenn der Prozess abgeschlossen ist, wird eine Antwort (d. h. die endgültige Version des Codes) an den Benutzer zurückgegeben.
- Integration des Ensembles: Während der Iterationen integriert das Ensemble-Framework die Stärken mehrerer Sprachen, um das Programm schrittweise zu verfeinern. Das Framework behandelt jede sprachspezifische Codegenerierung als individuellen „schwachen Experten“ und kombiniert deren Ergebnisse, um sprachspezifische Fehler und Verzerrungen zu minimieren.

Es ist wichtig zu beachten, dass es sich bei diesem Ansatz nicht um ein neues Modell handelt und auch kein erneutes Training eines Modells erforderlich ist. Es ist ein System, das mehrere Interaktionen mit Ihrem bestehenden LLM orchestriert, um mithilfe eines Multi-Shot-Ansatzes die bestmögliche Antwort zu finden. Wir glauben, dass angesichts der weiter sinkenden Inferenzkosten die Zukunft der KI-gestützten Ergebnisse — die wirtschaftlich tragfähig sind — von agilen Workflows bestimmt werden, die auf Inferenz basieren und bei denen viele Tokens generiert werden, um komplizierte Fragen zu beantworten.
Validierung von MPLE durch Testen
Wir haben das MPLE-Framework auf zwei weithin anerkannten Benchmarks zur Codegenerierung getestet: Humanes Eval und HumanEval-Plus. Diese Benchmarks messen die Fähigkeit von LLMs, funktionalen Code auf der Grundlage einer Benutzeraufforderung zu generieren.
HumanEval wurde für Aufgaben zur Generierung von Text zu Code entwickelt, bei denen die Eingabe eine Benutzeraufforderung ist, die die beabsichtigte Funktionalität des Programms beschreibt. Die LLM-Ausgabe wird dann anhand ihrer Fähigkeit bewertet, Komponententests mit bestimmten Anforderungen zu bestehen. HumanEval-PLUS erweitert HumanEval um eine große Anzahl zusätzlicher Testfälle, um die Robustheit und Richtigkeit des Codes rigoros zu bewerten.
Wir haben die Effektivität von MPLE mit Pass @1 gemessen. Diese Methode der Codebewertung misst den Prozentsatz der Aufgaben, die vom generierten Code beim ersten Versuch erfolgreich abgeschlossen wurden.
Wir führten Experimente sowohl mit unseren firmeneigenen LLMs als auch mit anderen bekannten Modellen wie GPT-4O, Claude-Sonnet-3.5 und LLAMA3.1-405b durch.
Unsere Tests haben gezeigt, dass das vorgeschlagene MLE-Framework die Pass @1 -Genauigkeit aller getesteten LLMs im Vergleich zu einem Ausgangswert konsistent verbessert. Zum Beispiel Die Genauigkeit von GPT3.5-Turbo stieg von 65,83% im Ausgangswert auf 74,17% mit MPLE, was die Effektivität der Nutzung mehrerer Programmiersprachen zur Reduzierung sprachspezifischer Verzerrungen und Fehler hervorhebt (siehe Tabelle 1).

Die Integration von MPLE mit Reflection & Monte Carlo führt zu besseren Ergebnissen
Wir haben MPLE weiter vorangetrieben und ein System entwickelt, das MPLE mit fortschrittlichen Inferenztechniken wie Reflection und MCTS integriert. Diese Techniken werden verwendet, um die Problemlösungs- und Argumentationsfähigkeiten von LLMs zu verbessern, insbesondere wenn es um Aufgaben geht, die strategische oder mehrstufige Entscheidungen erfordern. Unsere Hypothese war, dass die Kombination dieser Systeme zu noch besseren Ergebnissen führen würde als die alleinige Verwendung von MPLE. Durch eine Reihe von Tests konnten wir beweisen, dass diese Hypothese wahr ist.
Wir haben MPLE auch mit dem Humaneval-PLUS-Benchmark getestet und die Ergebnisse bestätigen die Vorteile unseres mehrsprachigen Ensemble-Ansatzes weiter. Insbesondere Die Leistung von llama3.1-8binstruct verbesserte sich von 60,00% im Baseline auf 71,88% mit MPLE+Reflection (siehe Tabelle 2).

Darüber hinaus liefern MPLE+Reflection und MPLE+MCTS wettbewerbsfähige Ergebnisse, wobei mehrere Modelle (GPT-4OMini, GPT-4O, Claude-Sonnet-3.5 und llama3.1-405b-instruct) 87,50% erreichten (siehe Tabelle 3).

Unsere Ergebnisse zeigen deutlich, dass das MLE-Framework, insbesondere in Verbindung mit zusätzlichen Inferenzalgorithmen, einen leistungsstarken und flexiblen Ansatz zur Verbesserung der Codegenerierung über mehrere LLMs hinweg bietet. Die kontinuierlichen Leistungsverbesserungen von MPLE unterstreichen sein Potenzial für praktische Anwendungen in der KI-gesteuerten Softwareentwicklung.
Llama 3.1-405b erzielt modernste Ergebnisse mit MPLE & MCTS: 96,25% Genauigkeit!
Während unserer Analyse waren wir besonders beeindruckt von der Leistung von MPLE bei der Anwendung auf Die Kombination von MPLE+MCTS erzielte die höchste Genauigkeit für mehrere Modelle, z. B. llama3.1-405b-instruct, das eine SOTA Pass @1 -Genauigkeit von 96,25% erreichte (siehe Tabelle 4).

Der Weg, der vor uns liegt
Während wir die Grenzen dessen, was mit MPLE möglich ist, immer weiter verschieben, freuen wir uns darauf, neue Bereiche der Forschung und Entwicklung zu erkunden. Zu den möglichen Schwerpunkten gehören:
- Entwicklung robusterer Bewertungsmetriken: Die Erstellung effektiver Bewertungsmetriken ist entscheidend für die genaue Messung der Leistung von MPLE. Indem wir uns auf umfassendere Metriken konzentrieren, können wir die Genauigkeit, Zuverlässigkeit und praktische Anwendbarkeit des Frameworks in verschiedenen Bereichen sicherstellen.
- Anwendung von MPLE auf reale Probleme: MPLE hat das Potenzial, komplexe reale Herausforderungen zu bewältigen, wie z. B. die Automatisierung von Geschäftsprozessen, die Optimierung von Softwareentwicklungspipelines und die Verbesserung von Cybersicherheitsmaßnahmen. Die Evaluierung von MPLE anhand eines breiteren Spektrums von Datensätzen und realen Anwendungen wird für die Bewertung seiner Generalisierbarkeit und Wirkung von entscheidender Bedeutung sein.
- Erweiterung von NinjallM für Programmieraufgaben: unser NinjaLM 3.0 (eine fein abgestimmte und quantisierte Version von llama3.1-405b), erhältlich unter MyNinja.ai hat vielversprechende Ergebnisse bei HumanEval (93,85%) und HumanEval-PLUS (86,67%) erzielt, und wir sind auf dem Weg, seine Leistung weiter zu verbessern. Wir werden in einem Monat einen auf MPLE basierenden Ninja Coder auf den Markt bringen.
Wir freuen uns, unsere Forschung zu MPLE mit der Welt zu teilen. Wir glauben, dass dieser Ansatz das Potenzial hat, einen erheblichen Einfluss auf die LLM-Codegenerierung zu haben. MPLE reduziert sprachspezifische Fehler und Verzerrungen, was zu einer genaueren und robusteren Codegenerierung führt. Das bedeutet, dass Entwickler mehr Zeit haben, um größere Probleme anzugehen. Wir sind bestrebt, unsere Forschung und Entwicklung in diesem Bereich fortzusetzen, und wir freuen uns darauf, die innovativen Anwendungen von MPLE in der Zukunft zu sehen.
P.S. Future ist viel weniger fehlerhaft :-)
P.P.S. Wir haben MyNinja.ai verwendet, um bei der Erstellung dieses Blogposts zu helfen.



