1 Punkte von GN⁺ 2024-10-12 | 1 Kommentare | Auf WhatsApp teilen

lm.rs: Lokale Sprachmodell-Inferenz auf der CPU mit Rust ausführen

  • Einführung

    • lm.rs ist ein Projekt, mit dem sich Sprachmodell-Inferenz mit Rust auf der CPU ausführen lässt.
    • Es ist von Karpathys llama2.c und llm.c inspiriert und so konzipiert, dass Sprachmodelle mit minimalem Code ohne ML-Bibliotheken ausgeführt werden können.
    • Unterstützt wurde zunächst nur Googles Gemma-2-Modell, inzwischen werden auch Llama 3.2 und das Bildmodell PHI-3.5 unterstützt.
  • Vorbereitete Modelle

    • Benchmark- und Download-Links für verschiedene Modelle und Tokenizer werden bereitgestellt.
    • Die Verwendung quantisierter Modelle wie Q8_0 und Q4_0 wird empfohlen.
    • Die Geschwindigkeit wurde auf einem AMD Epyc mit 16 Kernen gemessen.
  • Modellkonvertierung

    • Modelle von Google/Meta können in das lmrs-Format konvertiert werden.
    • Nach der Installation der Python-Abhängigkeiten können Modelle und Tokenizer mit den Skripten export.py und tokenizer.py konvertiert werden.
  • Build

    • Der Rust-Code kann mit cargo kompiliert und ausgeführt werden.
    • Um multimodale Funktionen zu aktivieren, muss das Feature multimodal eingebunden werden.
  • TODOs

    • Zusätzliche Sampling-Methoden hinzufügen.
    • 9B- und 27B-Modelle testen.
    • Schleifen für Multi-Head-Attention parallelisieren.
    • Performance-Metriken hinzufügen.
    • Funktion zum Bereitstellen von System-Prompts hinzufügen.
    • Quantisierungsunterstützung ergänzen (int8, int4).

# GN⁺-Zusammenfassung

  • lm.rs bietet eine effiziente Möglichkeit, Sprachmodelle mit Rust auf der CPU auszuführen. Da dies ohne ML-Bibliotheken möglich ist, ist es besonders in schlanken Umgebungen nützlich.
  • Es eignet sich auch für Entwickler, die gerade erst mit Rust beginnen, und unterstützt verschiedene Modelle, was eine hohe Erweiterbarkeit ermöglicht.
  • Durch die Unterstützung multimodaler Modelle wie PHI-3.5 sind auch Funktionen zur Bildverarbeitung enthalten.
  • Ein Projekt mit ähnlicher Funktionalität ist die Transformers-Bibliothek von Hugging Face.

1 Kommentare

 
GN⁺ 2024-10-12
Hacker-News-Kommentare
  • Auf einem M2 64GB MacBook lief 1.2G llama3.2-1b-it-q80.lmrs schnell, wobei die CPU-Auslastung bei 1000 % über 13 Threads lag
  • Es scheint nützlich zu sein, um anhand von Codebeispielen zu erklären, wie Transformer funktionieren
    • Die Bibliothek sollte verbessert werden, damit sie nicht auf stdout ausgibt
    • Es gibt die Frage, ob sich das auch ohne unsafe implementieren lässt
  • Mit verschiedenen Rust-Tools lassen sich Modell-Loading und andere LLM-Aufgaben erledigen
    • Das könnte helfen, Python-Abhängigkeiten zu reduzieren
    • Es stellt sich die Frage, ob eine Unterstützung für Syntax geplant ist
  • Der Titel ist nicht klar
    • Die Formulierung „no dependency“ könnte missverständlich sein
  • In der Vergangenheit wurde schon einmal etwas Ähnliches gemacht, aber die Performance war nicht zufriedenstellend
    • Benchmarks der Rust-Implementierung sind nötig
    • Die Implementierung von LLM-Inferenz könnte für Programmierer zum neuen „hello world!“ werden
  • Unterstützung für Metal/Cuda ist unerlässlich
  • Die Begeisterung der Rust-Community wird sehr geschätzt
  • Es stellt sich die Frage, ob diese Implementierungen alle nur auf die CPU angewiesen sind
  • Ein Vergleich mit anderen Projekten ist nötig
    • Wenn Vision-Modelle unterstützt würden, wäre man bereit, es auszuprobieren