9 Punkte von GN⁺ 2026-03-12 | 1 Kommentare | Auf WhatsApp teilen
  • Überträgt Karpathys Autoresearch auf die Optimierung von GPU-Kernels
  • Ein automatisches Forschungstool für GPU-Kernel, das bei Eingabe eines PyTorch-Modells automatisch Triton- oder CUDA-C++-Kernel optimiert
  • Bietet eine vollständig automatisierte Pipeline zum Profiling, Extrahieren, Optimieren und Verifizieren der Bottleneck-Kernel eines Modells
  • Passt Prioritäten durch Orchestrierung auf Basis von Amdahls Gesetz an; jedes Experiment dauert etwa 90 Sekunden, sodass über Nacht Hunderte Durchläufe möglich sind
  • Integriert mit KernelBench und führt für mehr als 250 Probleme 50 bis 300 iterative Experimente durch, wodurch eine systematische Suche statt einmaliger Generierung möglich wird
  • Unterstützt mit doppeltem Backend für Triton und CUDA C++, Verifikation mit Priorität auf Korrektheit und einer Single-File-Änderungsstruktur eine effiziente und reproduzierbare Kernel-Optimierung

Funktionsweise

  • AutoKernel nimmt ein PyTorch-Modell als Eingabe und führt die folgenden Schritte aus
    • Identifikation von GPU-Bottleneck-Kernels durch Profiling
    • Extraktion und Trennung als eigenständige Triton- oder CUDA-C++-Kernel
    • Wiederholtes Ändern, Benchmarken, Beibehalten oder Zurückrollen über eine automatische Optimierungsschleife
    • Korrektheitsprüfung und anschließender Bericht über die gesamte Geschwindigkeitssteigerung
  • Auf Basis der in program.md enthaltenen Anweisungen wird kernel.py geändert; über bench.py werden eine 5-stufige Korrektheitsprüfung und eine Roofline-Analyse durchgeführt
  • Jedes Experiment dauert etwa 90 Sekunden, rund 40 pro Stunde und ungefähr 320 über Nacht

Ausführung und Komponenten

  • Erforderliche Umgebung: NVIDIA-GPU (H100/A100/RTX 4090), Python 3.10+, uv-Paket
  • Zentrale Skripte
    • profile.py: Rangfolge der Kernel nach GPU-Zeit
    • extract.py: Extraktion der wichtigsten Bottleneck-Kernel
    • bench.py: 5-stufiger Benchmark für Korrektheit und Performance
    • orchestrate.py: Multi-Kernel-Scheduling auf Basis von Amdahls Gesetz
    • verify.py: Verifikation des Gesamtmodells und Bericht zur Geschwindigkeitssteigerung
  • program.md enthält eine 6-stufige Optimierungsstrategie, Konfliktbehandlung und ein Entscheidungs-Framework, sodass auch lange automatische Läufe möglich sind

Unterstützte Kernel und Beispielmodelle

  • Unterstützung für 9 Kernel-Typen: matmul, softmax, layernorm, rmsnorm, flash_attention, fused_mlp, cross_entropy, rotary_embedding, reduce
  • Jeder Kernel enthält eine referenzbasierte PyTorch-Implementierung (reference.py) sowie erste Triton-/CUDA-Versionen (kernels/, kernels/cuda/)
  • Beispielmodelle: GPT-2, LLaMA (einschließlich 7B), BERT-base, benutzerdefinierte Modelle
  • HuggingFace-Modelle lassen sich ebenfalls über uv sync --extra models integrieren

KernelBench-Integration

  • Integriert mit KernelBench (Stanford Scaling Intelligence Lab) zur Durchführung standardisierter Benchmarks für KI-generierte GPU-Kernel
  • AutoKernel durchsucht den Optimierungsraum systematisch mit 50 bis 300 iterativen Experimenten pro Problem
  • Wichtige Werkzeuge
    • bridge.py: Laden von Problemen und Erzeugen initialer Kernel
    • bench_kb.py: Bewertung von Korrektheit und Performance
    • scorer.py: Berechnung der Gesamtpunktzahl pro Level
    • program_kb.md: Agent-Anweisungen speziell für KernelBench

Export in den HuggingFace Hub

  • Optimierte Kernel können in den HuggingFace Hub exportiert und anschließend einfach mit get_kernel() geladen werden
  • export_hf.py unterstützt den Export und Upload von CUDA-Kernels

Designprinzipien

  • Doppeltes Backend aus Triton + CUDA C++: Triton ermöglicht schnelle Iteration, CUDA liefert maximale Performance
  • Korrektheit zuerst: Wenn die Ergebnisse nicht mit PyTorch übereinstimmen, wird sofort zurückgerollt
  • Priorisierung nach Gesamtleistungsbeitrag durch Orchestrierung auf Basis von Amdahls Gesetz
  • Single-File-Änderungsstruktur (kernel.py) erleichtert Nachverfolgung und Wiederherstellung von Änderungen
  • TSV-Logs (results.tsv) protokollieren Versuchsergebnisse einfach und gut lesbar

Format der Ergebnisaufzeichnung

  • In results.tsv werden für jedes Experiment Nummer, Kernel-Typ, Durchsatz (TFLOPS), Latenz, Verhältnis zum GPU-Peak, Geschwindigkeitssteigerung gegenüber PyTorch, Korrektheit, VRAM-Nutzung und Beschreibung gespeichert

Projekthintergrund

  • Inspiriert vom Konzept autoresearch von Andrej Karpathy wird eine autonome KI-Agentenstruktur für LLM-Forschung auf die GPU-Kernel-Optimierung übertragen
  • Die KernelBench-Integration basiert auf Forschung des Stanford Scaling Intelligence Lab; AutoKernel setzt auf iterative Optimierung statt einmaliger Generierung
  • Das Projekt wurde vom Forge-Team von RightNow AI entwickelt und unter der MIT-Lizenz veröffentlicht

1 Kommentare

 
GN⁺ 2026-03-12
Hacker-News-Kommentare
  • Wirklich ein großartiges Projekt
    Ich habe in den letzten Wochen auch etwas Ähnliches gebaut, allerdings in einer deutlich allgemeineren und überentwickelten Version
    Dieser Ansatz, der sich nur auf Triton und bestimmte Kernel konzentriert, ist simpel und zugleich effizient
    Allerdings ist die Fortschrittsgrafik verwirrend. Es sieht nach einem 4096x4096x4096-fp16-Matmul-Benchmark aus, aber obwohl von einem 1,31-fachen Gewinn gegenüber cuBLAS die Rede ist, werden nur 187 TFLOPS gezeigt, also 18,9 % der Peak-Auslastung
    cuBLAS erreicht eine Leistung viel näher am Peak, daher liegt es vermutlich an CPU-Overhead oder einem anderen Flaschenhals
    Benchmarks sind wirklich schwierig, aber ich halte dieses Feld in den nächsten 6 Monaten für extrem vielversprechend

  • Wenn das in etwas wie llama.cpp funktionieren würde, wäre der Nutzen vermutlich noch viel größer
    Es gibt zahlreiche Quantisierungskernel und Hardware-Konfigurationen, und auch viele Einzelanwender, daher wäre das Potenzial für Effizienzgewinne groß
    Es wäre schön, wenn dieses Projekt dort als Contributor mitwirken würde

    • Das ist eine zutreffende Einschätzung
      llama.cpp hat mehrere manuell getunte CUDA-Kernel wie Q4_K_M, Q5_K_S und Q8_0, die jeweils auf unterschiedliche Hardware-Profile abzielen
      Wenn eine automatische Optimierung pro GPU möglich wäre, wäre das eine gewaltige Veränderung
      Derzeit gibt es selbst beim gleichen Quantisierungsformat große Leistungsunterschiede zwischen einer RTX 3090 und einer 5070 Ti
      Gerade eine Umgebung wie llama.cpp mit ihrer großen Hardware-Vielfalt ist genau der Ort, an dem automatische Kernelsuche am meisten glänzen würde
  • Großartig!
    Ich arbeite gerade daran, dieselbe Funktionalität für Apple Silicon hinzuzufügen
    In meinem Projekt autoresearch-everywhere arbeite ich daran, autoresearch zu einem ernsthaften Werkzeug zu machen

  • Irgendetwas ist seltsam
    Bezogen auf 4kx4kx4k fp16 GEMM scheint cutlass etwa 3-mal schneller zu sein

  • Ich frage mich, ob es Benchmark-Vergleiche mit Auto-Scheduling wie Ansor von TVM gab

  • Das ist erst der Anfang
    Zur Einordnung: Google hat bei Modellen bereits vor zwei Generationen etwas Ähnliches gemacht
    Im Blogbeitrag vom Mai 2025, AlphaEvolve, wurde angekündigt, dass ein zentraler Kernel der Gemini-Architektur um 23 % beschleunigt wurde, indem große Matrixmultiplikationen in kleinere Teilprobleme aufgeteilt wurden, was die Trainingszeit um 1 % verkürzte
    Jetzt sind wir an einem Punkt, an dem solche Techniken auch „zu Hause“ möglich sind
    Gerade weil es zuletzt mehr RL-basiertes Training gibt, dürfte eine schnellere Inferenz direkt zu schnellerem Training führen

  • Ich frage mich, wann solche Optimierungen auch in Open-Source-Sprach-Runtimes wie Swift oder Rust Einzug halten und dort auch noch den letzten Tropfen Leistung herausholen