- Der Rust+WASM-Stack kann bei AI-Inferenz eine starke Alternative zu Python sein
- Im Vergleich zu Python sind Rust+Wasm-Apps nur 1/100 so groß, 100-mal schneller und können überall sicher mit vollständiger Hardwarebeschleunigung ausgeführt werden, ohne den Binärcode zu verändern
- Rust ist die Sprache der AGI
- Wenn man ein einfaches Rust-Programm schreibt, das LLama2-Inferenz mit nativer Geschwindigkeit ausführt
- Nach der Kompilierung zu Wasm ist das Binärfile nur 2 MB groß, aber vollständig auf heterogene Hardwarebeschleuniger portierbar
- Außerdem bietet die Wasm-Laufzeitumgebung (WasmEdge) eine sichere Ausführungsumgebung für Cloud-Umgebungen. Sie arbeitet nahtlos mit Container-Tools zusammen und kann portable Anwendungen auf unterschiedlichen Geräten orchestrieren und ausführen
Warum nicht Python?
- LLMs wie llama2 werden in der Regel mit Python trainiert (z. B. PyTorch, Tensorflow, JAX)
- Aber Python für Inferenzanwendungen zu verwenden, die etwa 95 % des AI-Computings ausmachen, ist ein großer Fehler
- Python-Pakete haben komplexe Abhängigkeiten. Sie sind schwer einzurichten und zu verwenden
- Python-Abhängigkeiten sind enorm. Docker-Images für Python oder PyTorch sind typischerweise mehrere GB oder sogar Dutzende GB groß, was besonders problematisch ist, wenn man AI-Inferenz auf Edge-Servern oder Geräten ausführt
- Python ist eine sehr langsame Sprache. Sie ist bis zu 35.000-mal langsamer als kompilierte Sprachen wie C, C++ und Rust
- Weil Python langsam ist, müssen die meisten realen Workloads an native Shared Libraries unter dem Python-Wrapper delegiert werden
- Deshalb sind Python-Inferenz-Apps großartig für Demos, lassen sich intern aber nur sehr schwer an geschäftsspezifische Anforderungen anpassen
- Wegen der starken Abhängigkeit von nativen Bibliotheken und des komplexen Abhängigkeitsmanagements ist es sehr schwierig, Python-AI-Programme auf verschiedene Geräte zu portieren und dabei die spezifischen Hardwarefähigkeiten des jeweiligen Geräts zu nutzen
- In LLM-Toolchains häufig verwendete Python-Pakete stehen oft in direktem Konflikt miteinander
- Chris Lattner, bekannt für LLVM, TensorFlow und die Programmiersprache Swift, gab diese Woche ein großartiges Interview in einem Startup-Podcast. Darin erklärt er, warum Python zwar hervorragend für das Modelltraining ist, aber die falsche Wahl für Inferenzanwendungen
Vorteile von Rust+Wasm
- Der Rust+Wasm-Stack bietet eine integrierte Cloud-Computing-Infrastruktur, die von Geräten über Edge-Cloud und On-Premises-Server bis zur Public Cloud reicht
- Er ist eine starke Alternative zum Python-Stack für AI-Inferenzanwendungen, und es überrascht nicht, dass Elon Musk Rust als die Sprache der AGI bezeichnet hat
- Extrem leichtgewichtig: Die Inferenzanwendung ist einschließlich aller Abhängigkeiten nur 2 MB groß. Das sind nicht einmal 1 % der Größe eines typischen PyTorch-Containers
- Sehr schnell: Bietet native C/Rust-Geschwindigkeit in allen Teilen der Inferenzanwendung, etwa bei Vorverarbeitung, Tensor-Operationen und Nachverarbeitung
- Portabel: Dieselbe Wasm-Bytecode-Anwendung kann auf allen wichtigen Computing-Plattformen ausgeführt werden, die heterogene Hardwarebeschleunigung unterstützen
- Einfach einzurichten, zu entwickeln und bereitzustellen: Keine komplexen Abhängigkeiten mehr. Man kann mit Standard-Tools auf dem Laptop eine einzelne Wasm-Datei bauen und überall deployen
- Sicher und Cloud-fähig: Die Wasm-Laufzeit wurde dafür entwickelt, nicht vertrauenswürdigen Benutzercode zu isolieren. Sie kann mit Container-Tools verwaltet und leicht auf Cloud-nativen Plattformen bereitgestellt werden
Rust-Inferenz-Demo
- In 40 Zeilen Rust-Code geschrieben und zu Wasm kompiliert
- Sobald der Wasm-Bytecode vorliegt, kann er auf jedem Gerät bereitgestellt werden, das die WasmEdge-Laufzeit unterstützt
- Das WasmEdge-GGML-Plugin auf Basis von llama.cpp nutzt automatisch die Hardwarebeschleunigung des Geräts, um das llama2-Modell auszuführen
Nächste Schritte
- Das WasmEdge-GGML-Tooling ist bereits verfügbar und wird tatsächlich von Cloud-nativen Kunden genutzt, befindet sich aber noch in einer frühen Phase
- Wenn Sie daran interessiert sind, zu dem Open-Source-Projekt beizutragen und die Richtung der künftigen LLM-Inferenz-Infrastruktur mitzugestalten, gibt es einige mögliche Beiträge
- GGML-Plugins für mehr Hardware- und OS-Plattformen hinzufügen: etwa TPUs unter Linux und Windows, ARM-NPUs und andere spezialisierte AI-Chips
- Mehr llama.cpp-Konfigurationen unterstützen: Derzeit werden einige Konfigurationsoptionen unterstützt, die in Wasm an das GGML-Plugin übergeben werden, aber langfristig sollen alle von GGML bereitgestellten Optionen unterstützt werden
- Die WASI-NN-API in weiteren Wasm-kompatiblen Sprachen unterstützen: insbesondere Go, Zig, Kotlin, JavaScript, C und C++
5 Kommentare
Der derzeit realistischste Ansatz, den Apple als aktuell im KI-Bereich unterlegener Anbieter verfolgen könnte, scheint zu sein,
wie im Haupttext beschrieben eine optimierte Software-Inferenz-Engine über die NPU des A-Chips im iPhone zu beschleunigen und die Foundation-Modelldatei komplett auf das iPhone zu packen. In Wissenschaft und Industrie ist man sich zuletzt weitgehend einig, dass für die KI-Leistung Daten und Fine-Tuning wichtiger sind als die reine Größe, und bei Llama2 wird die Fine-Tuning-Performance häufig als ziemlich gut bewertet. Deshalb dürfte es durchaus möglich sein, gut trainierte Modelle kontinuierlich auf Edge Devices auszuliefern. In diesem Sinne wäre eine Strategie, alles ins iPhone zu packen, durchaus ziemlich realistisch.
Ist WASM wirklich so angesagt? Sollte man Python dann nicht eher mit Mojo vergleichen?
Da stimme ich zu. Mojo ist wohl noch als experimentell einzustufen.
Mojo ist noch nicht offiziell veröffentlicht, aber Rust ist bereits eine recht ausgereifte Sprache und ersetzt in der Praxis bereits verschiedene Bereiche.
GN⁺: Schnelle und portable Llama2-Inferenz auf heterogenen Edge-Geräten mit Rust+WASM
Siehe dazu auch die Zusammenfassung von GN⁺ und die Hacker-News-Kommentare.