KernelArc: A Multi-Agent Framework for GPU Kernel Optimization
KernelArc ist ein Multi-Agenten-Framework, das GPU-Kernel autonom durch parallele, strategie-spezialisierte Agenten optimiert, die über gemeinsamen Speicher und deterministische Guards koordiniert werden, wodurch Spitzenplatzierungen auf der SOL-ExecBench-Bestenliste für diverse Workloads auf NVIDIA H100- und B200-GPUs erreicht werden.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Moderne Computer verlassen sich auf spezialisierte Chips, sogenannte Grafikprozessoren oder GPUs, um die massiven Berechnungen zu bewältigen, die für künstliche Intelligenz erforderlich sind. Diese Chips sind unglaublich leistungsstark, aber sie sind auch komplexe Maschinen mit vielen verschiedenen Teilen, die perfekt aufeinander abgestimmt sein müssen. Um das Beste aus ihnen herauszuholen, müssen Ingenieure winzige, hochspezialisierte Programme namens „Kernel“ schreiben, die dem Chip genau sagen, wie er Daten bewegen und mathematische Operationen durchführen soll. Jahrelang war dies eine Aufgabe für menschliche Experten, die unzählige Stunden damit verbrachten, den Code zu optimieren, die Speichernutzung auszubalancieren und die Zeitabläufe der Operationen abzustimmen, um jedes Quäntchen Geschwindigkeit herauszukitzeln. Da diese Chips immer anspruchsvoller wurden, wurde die manuelle Arbeit schwieriger, und die Lücke zwischen dem, was die Hardware leisten kann, und dem, was die Software tatsächlich erreicht, vergrößerte sich.
Forscher haben begonnen, große Sprachmodelle – Computerprogramme, die auf riesigen Textmengen trainiert wurden – einzusetzen, um beim Schreiben und Verbessern dieses Codes zu helfen. Diese Modelle können Änderungen vorschlagen, diese testen und aus den Ergebnissen lernen, wodurch sie wie ein automatisierter Ingenieur wirken. Ein einzelner automatisierter Agent gerät jedoch oft fest. Er findet vielleicht eine gute Lösung und poliert sie immer weiter auf, übersieht dabei aber andere, bessere Ansätze, die in eine ganz andere Richtung führen. Es ist wie ein Wanderer, der einen schönen Pfad den Berg hinauffindet und immer weiter auf diesem Weg geht, ohne zu merken, dass ein anderer Pfad ganz in der Nähe zu einem viel höheren Gipfel führt. Um dies zu lösen, hat ein Forscherteam bei IMEC ein neues System namens KernelArc entwickelt, das eine Gruppe dieser automatisierten Agenten nutzt, die zusammenarbeiten, um gleichzeitig viele verschiedene Wege zu erkunden.
Das KernelArc-System arbeitet, indem es mehreren parallel laufenden Agenten unterschiedliche Strategien zuweist. Anstatt dass ein einzelner Agent versucht, ein Problem allein zu lösen, konzentriert sich jeder Agent in der Gruppe auf einen anderen Angriffsansatz, wie etwa die Änderung der Art und Weise, wie Daten gespeichert werden, die Änderung der verwendeten mathematischen Präzision oder das Zusammenführen mehrerer Schritte. Diese Agenten teilen nicht ihren gesamten Gedankengang oder jeden einzelnen Schritt, den sie unternehmen, da dies zu unübersichtlich und verwirrend wäre. Stattdessen teilen sie nur ihre Endergebnisse: was funktionierte und was fehlschlug. Sie schreiben diese Ergebnisse in einen gemeinsamen Speicherbereich, der wie ein schwarzes Brett fungiert. Wenn ein Agent einen Trick entdeckt, der eine Berechnung beschleunigt, veröffentlicht er das Ergebnis. Andere Agenten können diesen Beitrag lesen und die Erkenntnis nutzen, um ihre eigene Arbeit zu leiten, wodurch sie Sackgassen vermeiden und auf Erfolgen aufbauen.
Um sicherzustellen, dass die Agenten keine Zeit mit fehlerhaftem Code verschwenden, enthält das System einen strengen, automatisierten Schiedsrichter. Dieser Schiedsrichter lässt jeden neuen Codevorschlag eine Reihe von Tests durchlaufen, um zu prüfen, ob er korrekt ist und wie schnell er arbeitet. Wenn ein Vorschlag den Test nicht besteht, wird er sofort verworfen. Wenn er funktioniert, aber nicht schneller als die aktuelle beste Version ist, wird er als Backup behalten, ersetzt aber nicht den Anführer. Nur wenn eine neue Version sowohl korrekt als auch schneller ist, wird sie zum neuen Standard. Dieser Prozess ermöglicht es dem Team von Agenten, eine breite Palette von Möglichkeiten zu erkunden, ohne sich in den Details jedes einzelnen Versuchs zu verlieren. Das System verfügt zudem über einen Sicherheitsmechanismus, der eingreift, falls ein Agent auf einem Plateau stecken bleibt, auf dem keine weiteren Verbesserungen mehr erzielt werden können. Wenn dies geschieht, zwingt das System den Agenten dazu, einen völlig anderen Ansatz zu versuchen, um sicherzustellen, dass die Suche voranschreitet.
Die Forscher testeten dieses System auf zwei der fortschrittlichsten verfügbaren GPUs, der NVIDIA H100 und der B200. Sie konzentrierten sich auf eine Reihe von Standardaufgaben zur Messung der Leistung, die Operationen wie Matrixmultiplikation, Attention-Mechanismen (Aufmerksamkeitsmechanismen), die in Sprachmodellen verwendet werden, und verschiedene Formen der Datenfusion umfassen. In einem spezifischen Test, bei dem ein einzelner Agent allein mit einem detaillierten Leitfaden arbeitete, gelang es dem System, eine Geschwindigkeit von 766 Teraflops zu erreichen, was etwa 3,2 Prozent schneller ist als die beste bestehende Bibliothek für diese spezifische Aufgabe. Dies zeigte, dass ein einzelner Agent sehr tief in ein spezifisches Problem eintauchen kann, wenn ihm ein klarer Pfad vorgegeben wird. Als die Forscher jedoch zum Multi-Agenten-System KernelArc wechselten, um eine breitere Palette von Aufgaben anzugehen, waren die Ergebnisse noch beeindruckender. Das System produzierte maßgeschneiderte Implementierungen für verschiedene komplexe Operationen, einschließlich spezialisierter Attention-Mechanismen und fusionierter Schichten für große Sprachmodelle.
Auf einem öffentlichen Leaderboard, das die Geschwindigkeit dieser Operationen über viele verschiedene Formen und Größen von Daten hinweg rankt, belegten die KernelArc-Einreichungen in mehreren Kategorien den ersten Platz. Für eine Aufgabe, die Attention und Residual-Addition umfasst, blieb ein einzelner Agent bei einem Leistungswert von 0,441 stecken. Das Multi-Agenten-System, das durch das Teilen von Erkenntnissen und das Erkunden verschiedener Richtungen arbeitete, durchbrach diese Barriere und erreichte einen Wert von 0,481. In einem anderen Test, der eine komplexe Attention-Aufgabe beinhaltete, erzielte das Multi-Agenten-System eine Beschleunigung von fast 291-mal im Vergleich zu einer Standard-Referenzimplementierung und über 143-mal schneller als eine hochoptimierte Baseline. Diese Ergebnisse legen nahe, dass das Vorhandensein mehrerer Agenten, die ihre Erkenntnisse teilen, es dem System ermöglicht, bessere Lösungen schneller zu finden als ein einzelner Agent, der alleine arbeitet – insbesondere wenn der Problemraum groß und vielfältig ist.
Die Studie untersuchte auch, wie sich das System verhält, wenn sich die Anzahl der Agenten und die Menge des gemeinsamen Speichers ändern. Sie fanden heraus, dass die Bereitstellung eines gemeinsamen Speichers, in dem die Agenten ihre Erfolge und Misserfolge posten konnten, ihnen half, innerhalb einer festen Anzahl von Versuchen stärkere Ergebnisse zu erzielen. Als der Speicher unbegrenzt war, schnitt das System am besten ab und erreichte eine Beschleunigung von über 290-mal gegenüber dem Ausgangspunkt. Dies deutet darauf hin, dass die Fähigkeit, von der kollektiven Erfahrung der Gruppe zu lernen, ein Schlüsselfaktor für den Erfolg ist. Die Forscher merkten an, dass der Wert jedes Merkmals, wie etwa des gemeinsamen Speichers oder der Spezialisierung der Strategie, von der jeweiligen Aufgabe und der Phase der Suche abhängt. Manchmal müssen die Agenten breit explorieren, und manchmal müssen sie eine spezifische Lösung verfeinern.
Diese Arbeit beansprucht nicht, alle Probleme der Computeroptimierung gelöst zu haben, noch legt sie nahe, dass menschliche Ingenieure nicht mehr benötigt werden. Die Ergebnisse beziehen sich spezifisch auf die getesteten Aufgaben und Hardware, und das System stützt sich nach wie vor auf ein von Menschen entwickeltes Framework, um die Agenten zu leiten. Dennoch zeigen die Ergebnisse, dass eine koordinierte Gruppe automatisierter Agenten ein breiteres Spektrum an Lösungen erkunden kann als ein einzelner Agent. Durch das Teilen nur ihrer wertvollsten Schlussfolgerungen können diese Agenten vermeiden, Fehler zu wiederholen, und auf den Entdeckungen der anderen aufbauen. Dieser Ansatz bietet einen vielversprechenden Weg, um die zunehmende Komplexität moderner Computer zu bewältigen, in denen die Kluft zwischen Hardware-Potenzial und Software-Leistung stetig wächst. Das System zeigt, dass mit der richtigen Koordination automatisierte Werkzeuge helfen können, die volle Kraft der Chips freizusetzen, die die nächste Generation der künstlichen Intelligenz antreiben.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.