Schnelle und portable Llama2-Inferenz auf heterogenen Edge-Systemen
(secondstate.io)Rust+Wasm-Stack: eine starke Alternative zu Python
- Rust+Wasm-Anwendungen sind im Vergleich zu Python nur 1/100 so groß, 100-mal schneller und können überall sicher ausgeführt werden, ohne die Hardwarebeschleunigung überhaupt zu ändern.
- Rust ist die Sprache für AGI (Artificial General Intelligence), und es wurde ein einfaches Rust-Programm erstellt, das mit dem llama2-Modell Inferenz mit der ursprünglichen Geschwindigkeit durchführt.
- Eine zu Wasm kompilierte binäre Anwendung (2 MB) ist vollständig portabel und läuft auf Geräten mit unterschiedlichen Hardwarebeschleunigern.
- Die Wasm-Laufzeitumgebung (WasmEdge) bietet in Cloud-Umgebungen eine sichere und geschützte Ausführungsumgebung.
Installation und Ausführung des Rust-Programms
- Schritt 1. WasmEdge und das GGML-Plugin installieren: Auf Linux- oder Mac-Geräten erfolgt die Installation mit den folgenden Befehlen.
- Schritt 2. Vorgebaute Wasm-App und Modell herunterladen: Das llama2-Modell im GGUF-Format herunterladen; im Beispiel wird eine mit 5-Bit-Gewichten quantisierte Version des für Chats feinabgestimmten llama2-7B-Modells verwendet.
- Schritt 3. Ausführen: Die Wasm-Inferenzanwendung mit WasmEdge starten, das GGUF-Modell übergeben und eine Frage eingeben, um mit dem Modell zu chatten.
Konfiguration des Modellverhaltens
- Mit Kommandozeilenoptionen lässt sich festlegen, wie mit dem Modell interagiert werden soll.
- So können beispielsweise eine bestimmte Kontextlänge, die maximale Zahl der pro Antwort vorherzusagenden Tokens, die Ausgabe von Statistiken und das Streamen der Modellantwort nach
stdouteingestellt werden. - Das Programm erzeugt auf einem günstigen M2 MacBook etwa 25 Tokens pro Sekunde.
LLM-Agenten und Apps
- Mit Rust und WasmEdge wird ein OpenAI-kompatibler API-Server erstellt.
- Dadurch können mit OpenAI-kompatiblen Entwicklerwerkzeugen LLM-Agenten und Apps erstellt werden.
Vorteile von Rust+Wasm gegenüber Python
- Der Rust+Wasm-Stack ist eine starke Alternative zum Python-Stack für AI-Inferenzanwendungen und stellt Cloud-Computing-Infrastruktur bereit.
- Extrem leichtgewichtig: Die Inferenzanwendung ist einschließlich aller Abhängigkeiten nur 2 MB groß.
- Sehr schnell: Sie bietet in allen Teilen der Inferenzanwendung native C-/Rust-Geschwindigkeit.
- Portabilität: Dieselbe Wasm-Bytecode-Anwendung kann auf allen wichtigen Computing-Plattformen ausgeführt werden, die heterogene Hardwarebeschleunigung unterstützen.
- Einfache Installation, Entwicklung und Bereitstellung: Es gibt keine komplexen Abhängigkeiten; eine einzelne Wasm-Datei kann mit Standardwerkzeugen auf dem Laptop gebaut und überall bereitgestellt werden.
- Sicher und Cloud-ready: Die Wasm-Laufzeit wurde dafür entwickelt, nicht vertrauenswürdigen Benutzercode zu isolieren, kann von Container-Werkzeugen verwaltet und einfach auf Cloud-native Plattformen ausgerollt werden.
Rust-Inferenzprogramm
- Das Demo-Inferenzprogramm ist in Rust geschrieben und zu Wasm kompiliert.
- Der Rust-Quellcode ist sehr einfach und umfasst nur 40 Zeilen.
- Das Rust-Programm verwaltet Benutzereingaben, verfolgt den Chatverlauf, wandelt Text in das Chat-Template von llama2 um und führt den Inferenz-Task mit der WASI-NN-API aus.
Ausführung in der Cloud oder am Edge
- Sobald die Wasm-Bytecode-Datei vorliegt, kann sie auf jedem Gerät bereitgestellt werden, das die WasmEdge-Laufzeit unterstützt.
- WasmEdge wird zusammen mit dem GGML-Plugin installiert und nutzt automatisch unterschiedliche Hardwarebeschleuniger, um das llama2-Modell auszuführen.
Nächste Schritte
- Die WasmEdge-GGML-Werkzeuge sind derzeit verfügbar und werden bereits von Cloud-native-Kunden genutzt, befinden sich aber noch in einem frühen Stadium.
- Wer daran interessiert ist, zum Open-Source-Projekt beizutragen und die Richtung der zukünftigen LLM-Inferenzinfrastruktur mitzugestalten, findet einige Low-Level-Aufgaben, zu denen man beitragen kann.
Andere AI-Modelle
- Mit WasmEdge und WASI NN lassen sich als Python-Alternative leichtgewichtige, schnelle, portable und sichere Inferenzanwendungen erstellen.
- Das Projekt mediapipe-rs bietet beispielsweise eine Rust+Wasm-API für Googles mediapipe-Tensorflow-Modelle.
Meinung von GN⁺
Das Wichtigste an diesem Beitrag ist, dass er mit Rust und WebAssembly (Wasm) eine Alternative zu Python für AI-Inferenz aufzeigt, die deutliche Vorteile bei Größe, Geschwindigkeit, Portabilität und Sicherheit bietet. Dieser Technologie-Stack integriert Cloud-Computing-Infrastruktur, verbessert die Leistung auf verschiedenen Geräten und in Cloud-Umgebungen, löst Probleme mit komplexen Abhängigkeiten und zeigt, wie sich Entwicklung und Bereitstellung vereinfachen lassen. Dieser Ansatz könnte insbesondere für die Zukunft von Edge Computing und AI-Inferenz erhebliche Auswirkungen haben und ist daher ein sehr spannendes Thema für technikinteressierte Leser.
1 Kommentare
Hacker-News-Kommentare
llama.cppverpackt, und es werden Erfahrungen aus der Entwicklung eines ML-Frameworks mit Rust und WebGPU geteilt.llama.cpp, und weder Inferenzgeschwindigkeit noch Binärgröße werden durch die Wahl des Wrappers begrenzt.