Beschreibung
Shumai ist eine differenzierbare Tensor-Bibliothek für JavaScript und TypeScript, die die Geschwindigkeit von Bun und die Leistungsfähigkeit von Flashlight nutzt. Sie zielt darauf ab, Datenmanipulation, Modelltraining und fortgeschrittene Inferenzlogik für Entwickler im JavaScript-Ökosystem zugänglicher und effizienter zu gestalten. Durch die Verwendung nativer Typed Arrays und des Just-In-Time (JIT)-Compilers von Bun bietet Shumai eine performante Lösung für Aufgaben, die von der Erstellung von Datensätzen bis zum Training kleiner Machine-Learning-Modelle reichen.
Die Bibliothek bietet grundlegende Tensoroperationen, automatische Differenzierung zur Gradientenberechnung und nahtlose Konvertierung von und zu nativen JavaScript-Arrays. Dies ermöglicht es Entwicklern, Daten direkt in JavaScript zu verarbeiten, sie für GPU-kompatible Arrays vorzubereiten und dann Modelle zu trainieren, ohne die Umgebung verlassen zu müssen. Die Architektur von Shumai ist darauf ausgelegt, den Overhead zu minimieren, sodass JavaScript beim Training und bei der Inferenz, insbesondere bei kleineren Modellen, im Hintergrund bleiben kann.
Zu den Kernfunktionen gehören Standard-Array-Utilities, Tensorerstellung, mathematische Operationen und Gradientenverfolgung. Benutzer können die Gradientenberechnung für Tensoren aktivieren, Operationen durchführen und dann auf die berechneten Gradienten zugreifen. Die Bibliothek bietet auch Funktionen zur Optimierung der Speichernutzung, die es Benutzern ermöglichen, Parameter der Garbage Collection anzupassen, um die Leistung basierend auf den Hardwarefähigkeiten zu optimieren. Darüber hinaus enthält Shumai ein System zur Erfassung von Statistiken, das die Leistung von Operationen auf der Konsole oder über HTTP protokollieren kann, mit Optionen für skopiertes Profiling und die Sammlung von Stack-Traces.
Shumai ist besonders vorteilhaft für Softwareentwickler und Forscher, die bereits im JavaScript-Ökosystem arbeiten und Machine-Learning-Fähigkeiten integrieren möchten, ohne eine steile Lernkurve in Kauf nehmen zu müssen, die mit anderen Sprachen oder Frameworks verbunden ist. Seine Leistungsbenchmarks zeigen signifikante Vorteile gegenüber Bibliotheken wie TensorFlow.js bei verschiedenen Operationen, insbesondere auf Apple M1 Pro und Nvidia GPUs. Das Projekt ist experimentell und Beiträge zur Verbesserung seiner Funktionalität und Stabilität sind willkommen.
Shumai's Kernfunktionen
Schnelle, differenzierbare Tensor-Bibliothek für JavaScript und TypeScript
Entwickelt mit Bun und Flashlight für hohe Leistung
Unterstützt automatische Differenzierung zur Gradientenberechnung
Nahtlose Konvertierung zwischen Tensoren und nativen JavaScript-Arrays
Optimiert für das Training kleiner Modelle und fortgeschrittene Inferenzlogik
Nutzt native Typed Arrays und JIT-Kompilierung
Speichernutzungsoptimierung zur Leistungssteigerung
Integrierte Statistiksammlung für Operations-Profiling
Skopierte Statistiksammlung für isoliertes Profiling
Experimentelle Software mit aktiver Entwicklung
Unterstützt GPU-Berechnungen über ArrayFire-Backends (CUDA unter Linux, CPU unter macOS)
Erweiterbare Statistikprotokollierung mit Konsolen- und HTTP-Optionen
Erste Schritte mit Shumai
Bun und ArrayFire installieren: Befolgen Sie die plattformspezifischen Anweisungen für macOS und Linux.
Shumai installieren: Führen Sie `bun install @shumai/shumai` aus.
Shumai importieren: Verwenden Sie `import * as sm from '@shumai/shumai'` in Ihrem TypeScript/JavaScript-Code.
Tensoren erstellen: Verwenden Sie Funktionen wie `sm.randn()` oder `sm.tensor()`, um Tensoren zu erstellen.
Operationen durchführen: Wenden Sie mathematische Operationen wie `matmul()`, `mul()` und `sum()` an.
Gradienten aktivieren: Setzen Sie `tensor.requires_grad = true` für Tensoren, die eine Gradientenverfolgung benötigen.
Gradienten berechnen: Rufen Sie `.backward()` auf dem Verlusttensor auf, um die Gradienten zu füllen.
Speicher optimieren: Passen Sie die Speicheroptionen mit `util.memoryOptions()` für die Leistung an.
Shumai's Anwendungsfälle
- Datensatzerstellung
- Modelltraining
- Inferenzlogik
- Datenvorverarbeitung
- Forschungsprototypen
- Anwendungsentwicklung








