Mit KI entwickeln

Burn 0.22 entfernt Backend-Generics, um Rust-ML-Builds zu beschleunigen

Burn 0.22 eliminiert Backend-Typparameter aus den Benutzer-APIs, verkürzt die Rebuild-Zeiten um bis zu das 15-Fache und fügt LoRA-Unterstützung hinzu.

Rust-Zahnradmechanismus, der mit leuchtenden Leiterplatten ineinandergreift
Für diesen Artikel generierte Illustration

Automatisch aus dem englischen Original übersetzt.

Das Machine-Learning-Framework Burn für Rust hat Version 0.22 veröffentlicht, ein bedeutendes Update, das den Anwendungscode vereinfacht und die Kompilierungszeiten drastisch reduziert. Diese im Oktober 2026 veröffentlichte Version entfernt Backend-Generic-Typen aus der benutzerseitigen API, sodass Entwickler die Ausführungsgeräte zur Laufzeit anstelle der Kompilierzeit auswählen können. Das Update führt außerdem native Unterstützung für LoRA- und QLoRA-Fine-Tuning, verbessertes Speichermanagement und schnellere Build-Prozesse für komplexe Modelle ein.

Was passiert ist

Frühere Versionen von Burn erforderten, dass Entwickler Backend-Typparameter wie B: Backend durch ihren gesamten Anwendungsstack propagierten. Dieser Ansatz bot Flexibilität, schuf jedoch eine schwere Abhängigkeitskette, die die Kompilierung verlangsammte, wann immer sich Modellstrukturen änderten. Mit Version 0.22 werden diese Backend-Generics aus dem Benutzercode entfernt. Stattdessen wird der Ausführungskontext über die Geräteinitialisierung ausgewählt, z. B. Device::cuda(0) oder Device::wgpu(). Diese Verschiebung entkoppelt hochrangige Tensor-Operationen von spezifischen Backend-Implementierungen und rationalisiert den Entwicklungsworkflow.

Die Auswirkung auf die Build-Zeiten ist erheblich. In Benchmarks des Entwicklungsteams reduzierte das Entfernen einer versteckten Schicht aus einem kleinen konvolutionalen neuronalen Netzwerk die medianen Release-Rebuild-Zeiten von 28,42 Sekunden auf 4,57 Sekunden. Bei einem Transformer-Modell mit einer benutzerdefinierten Trainingsschleife sanken die Rebuild-Zeiten beim Wechseln zwischen äquivalenten Feedforward-Ausdrücken von 14,73 Sekunden auf nur noch 1,00 Sekunde. Diese Verbesserungen resultieren aus der Aufbrechung der Abhängigkeitskette, die zuvor bei geringfügigen Modelländerungen die Neukompilierung großer Teile der Codebasis erzwang.

Neben API-Änderungen konzentriert sich das Release auf die Laufzeitleistung und die Entwicklererfahrung. Es führt adaptive Speicherpools ein, die die Allokationsgrößen basierend auf Workload-Statistiken anpassen und die Spitzen-VRAM-Nutzung in einigen CNN-Benchmarks um fast die Hälfte reduzieren. Das Update fügt zudem Unterstützung für das Fine-Tuning bestehender Modelle mittels LoRA und QLoRA hinzu, was eine effiziente Anpassung großer Modelle ermöglicht, ohne deren Basisschichten zu modifizieren. Darüber hinaus unterstützt das Framework jetzt den Export von Modellen nach ONNX und integriert Remote-Compute-Fähigkeiten über das Iroh-Transportprotokoll.

Wie es funktioniert

Die zentrale architektonische Änderung umfasst einen neuen Ausführungspfad: Tensor → Bridge → Dispatch → Backend. Die Bridge-Schicht verbirgt konkrete Backend-Darstellungen vor der hochrangigen Tensor-API und löscht effektiv Typen, die den Anwendungscode zuvor an spezifische Backends banden. Diese Typ-Erasur ermöglicht es dem Dispatch-System, Operationen zur Laufzeit an das geeignete Backend weiterzuleiten. Während das Backend-Trait weiterhin zentral für die Implementierung benutzerdefinierter Operationen bleibt, muss der Anwendungscode keine generischen Constraints mehr tragen. Autodiff-Kontexte werden nun auf dem Gerät konfiguriert und von Tensoren geerbt, wobei Vorbedingungsprüfungen zur Laufzeit verschoben werden.

Das Speichermanagement wurde durch die neuen adaptiven Speicherpools von CubeCL grundlegend überarbeitet. Anstelle statischer Poolgrößen überwacht das System Allokationsstatistiken während eines Probelaufs und passt die Seitengrößen dynamisch an. Es gibt veraltete Seiten frei, wenn sie leer werden, und verschiebt aktive Allokationen früher in freien Speicher. Kleine, häufig wechselnde Allokationen werden in einem separaten Pool gehalten, um Fragmentierung zu minimieren. Dieser Ansatz stellt sicher, dass reservierter Speicher eng mit der tatsächlichen Nutzung übereinstimmt, was die Anforderungen an den Spitzen-VRAM signifikant senkt, ohne manuelle Konfiguration.

Benutzerdefinierte Operationen werden nun über das #[backend_extension]-Makro integriert, das benutzerdefinierte Kernel an das Dispatch-System bindet. Dies ermöglicht es Entwicklern, benutzerdefinierte Funktionen, wie etwa fusionierte Matrixmultiplikation mit Bias und ReLU, über Standard-Tensor-Schnittstellen bereitzustellen, ohne Backend-Generics wieder einzuführen. Das Makro erzeugt die Registrierung für lazy Execution und behandelt Fusionsgraph-Grenzen, wodurch sichergestellt wird, dass benutzerdefinierte Kernel neben eingebauten Operationen optimiert werden können. Dieser Mechanismus bildet die Grundlage für neue Bibliotheken wie burn-linalg und burn-signal.

Wichtige Details

  • Build-Geschwindigkeit: Die medianen Rebuild-Zeiten sanken um bis zu das 15-Fache; bei Transformer-Modellen fielen sie von 14,73 s auf 1,00 s für äquivalente Codeänderungen.
  • API-Vereinfachung: Backend-Typparameter (B: Backend) wurden aus benutzerseitigen Structs und Funktionen entfernt und durch Laufzeit-Geräteauswahl ersetzt.
  • Speichereffizienz: Adaptive Speicherpools reduzierten die Spitzen-VRAM-Nutzung um 49 % für CNNs (von 956 MiB auf 486 MiB) und um 17,7 % für Transformer.
  • Fine-Tuning-Unterstützung: Native Integration für LoRA und QLoRA ermöglicht das Einfrieren der Basisgewichte, während Low-Rank-Adapter mit unabhängigen Optimizer-Konfigurationen trainiert werden.
  • Remote Compute: Burn Remote nutzt jetzt Iroh für authentifizierte, verschlüsselte Peer-to-Peer-Verbindungen und unterstützt Graph-Replay zur Reduzierung des Kommunikations-Overheads.
  • Compiler-Updates: CubeCL migrierte zu Pliron für die Kernel-Darstellung und fügte LLVM-Ziele für AMD- und NVIDIA-GPUs hinzu, was Portabilität und Optimierung verbessert.

Warum es wichtig ist

Für Software-Ingenieure, die ML-Produkte in Rust entwickeln, ist die Kompilierungsgeschwindigkeit ein erheblicher Produktivitätsengpass. Die Entfernung der Backend-Generics bedeutet, dass iterative Entwicklung – das Feilen an Modellarchitekturen oder das Debugging von Trainingsschleifen – deutlich schneller wird. Entwickler müssen nicht mehr Dutzende Sekunden auf die Neukompilierung für jede kleine Änderung warten, was einen reaktionsschnelleren Feedback-Loop ermöglicht. Diese Änderung senkt die Einstiegshürde für die Nutzung von Rust im ML-Bereich, wo C++ und Python traditionell aufgrund einfacherer Iterationszyklen dominierten.

Die Hinzufügung von LoRA- und QLoRA-Unterstützung adressiert einen kritischen Bedarf für den Einsatz großer Sprachmodelle und anderer Foundation-Modelle in ressourcenbeschränkten Umgebungen. Indem Entwickler Modelle effizient fine-tunen können, ohne vollständige Gradientenzustände für alle Parameter zu speichern, macht Burn 0.22 die Anpassung großer Modelle auf Consumer-Hardware machbar. Das adaptive Speichermanagement verstärkt diese Fähigkeit zusätzlich, indem es sicherstellt, dass verfügbarer VRAM effektiv genutzt wird, was entscheidend für größere Batch-Größen oder komplexere Modelle bei begrenztem GPU-Speicher ist.

Was Sie tun können

  • Aktualisieren Sie Ihre Burn-Abhängigkeiten auf Version 0.22 und entfernen Sie Backend-Generic-Parameter aus Ihren Modell-Structs und Funktionssignaturen.
  • Ersetzen Sie die Kompilierungszeit-Backend-Auswahl durch Laufzeit-Geräteinitialisierung unter Verwendung von Device::cuda(), Device::wgpu() oder Device::flex().
  • Experimentieren Sie mit dem neuen Lora-Modul, um bestehende Modelle zu fine-tunen, und verwenden Sie ParamGroup, um zu steuern, welche Schichten Adapter erhalten.
  • Überwachen Sie die Speichernutzung mit der aktualisierten Geräte-API, um zu beobachten, wie adaptive Pools den VRAM-Verbrauch in Ihren spezifischen Workloads reduzieren.
  • Wenn Sie benutzerdefinierte Kernel verwenden, refactorn Sie diese so, dass sie das #[backend_extension]-Makro nutzen, um sich in das neue Dispatch-System zu integrieren und Fusion zu aktivieren.
  • Erkunden Sie Optionen für Remote-Ausführung, indem Sie einen Burn Remote Server mit Iroh-Transport für verteiltes Training oder Inferenzaufgaben einrichten.

Tools aus dem Bytechap-Shop

$89

DocBento

Selbst gehostetes Dokumentenmanagement, das jeden Scan liest und mit Seitenzitaten antwortet.

Live-Demo

Weiterlesen

Alle Artikel