LiteRT.js schlägt TensorFlow.js

LiteRT.js mit WebGPU führt eine MobileNetV2-Inferenz in 0,41 ms aus und liefert auf einer M2 Max Desktop-GPU 2.439 FPS – das ist mehr als 25-mal schneller als TensorFlow.js auf derselben Hardware. Bei größeren Modellen vergrößert sich der Abstand, wodurch webbasiertes maschinelles Lernen in eine Performance-Klasse vorstößt, die einst nativen Apps vorbehalten war.

Warum der Benchmark wichtig ist

Entwickler haben TensorFlow.js für die On-Device-Inferenz genutzt, meist über das WebGL-Backend. WebGL bildet Tensor-Operationen auf die 2D-Grafik-Pipeline des Browsers ab; es funktioniert überall, wurde aber nicht für die massive Parallelität entwickelt, die Deep-Learning-Modelle benötigen. WebGPU, die Grafik-API der nächsten Generation, ermöglicht den direkten Zugriff auf GPU-Recheneinheiten. LiteRT.js ist die erste Bibliothek, die eine WebGPU-gestützte Inferenz-Engine für TensorFlow-Lite-Modelle bereitstellt, und Google berichtet von einer Verdreifachung der Geschwindigkeit. Unabhängige Tests zeigen sogar noch größere Gewinne, was die Frage aufwirft, ob WebGPU zum Standardpfad für Web-ML werden wird.

Durchführung des Tests

Wir haben zwei Bildklassifizierungsmodelle getestet – MobileNetV2 und EfficientNet-Lite4 –, die beide in TensorFlow-Lite konvertiert wurden. Die Tests wurden auf einem Apple-Silicon M2 Max-Chip durchgeführt. Für jedes Modell haben wir die Latenz eines einzelnen Forward-Passes über viele Iterationen hinweg gemessen und die Bilder pro Sekunde (FPS) angegeben. Wir haben dieselben Modelle mit TensorFlow.js über das WebGL-Backend ausgeführt und die Kaltstartzeit der jeweiligen Bibliothek aufgezeichnet.

Ergebnisse: Geschwindigkeit und Startzeit

  • MobileNetV2

    • LiteRT.js (WebGPU): 0,41 ms Latenz → 2.439 FPS
    • TensorFlow.js (WebGL): 10,82 ms Latenz → 92 FPS
  • EfficientNet-Lite4

    • LiteRT.js (WebGPU): 0,62 ms Latenz → 1.623 FPS
    • TensorFlow.js (WebGL): nicht angegeben, aber MobileNetV2 zeigt bereits einen Vorteil von >25×.

TensorFlow.js benötigte etwa 10 Sekunden (10.014 ms), um seine WebGL-Shader vor der ersten Inferenz zu kompilieren. LiteRT.js war in 4,3 ms bereit, was den Kaltstart-Nachteil für interaktive Apps im Wesentlichen eliminiert.

Als wir die Modellgröße verfünffachten, stieg die Latenz nur um 50 %, was bestätigt, dass die Parallelität der GPU den Großteil der Mehrarbeit auffängt. Das Ergebnis ist eine Performance-Grenze, die es einem Browser ermöglicht, Echtzeit-Videostreams, AR-Overlays oder das schnelle Prototyping von Vision-Modellen ohne Server-Roundtrips zu bewältigen.

Was die Zahlen verschleiern

  • Batching – Die meisten TensorFlow-Lite-Modelle fixieren die Batch-Dimension auf 1. Das Einspeisen mehrerer Bilder in einem einzigen Aufruf wird nicht standardmäßig unterstützt, was Entwickler dazu zwingt, Web Worker zu starten oder Eingaben manuell zu pipelinen.
  • Speichermanagement – LiteRT.js führt

LiteRT.js beweist, dass WebGPU webbasierte Inferenz in den Sub-Millisekunden-Bereich verschieben kann, und liefert auf Desktop-GPUs mehr als die 25-fache Geschwindigkeit von TensorFlow.js. Die Technologie befindet sich noch in der Reifephase, und Entwickler müssen sich mit Batching-Limits, manueller Speicherbereinigung und eingeschränkter mobiler Unterstützung auseinandersetzen. Für Desktop-zentrierte Erlebnisse, die Echtzeit-Performance erfordern, bietet die neue Bibliothek einen vielversprechenden Weg nach vorne; für eine plattformübergreifende Reichweite bleiben die älteren WebGL- und WASM-Backends unverzichtbar.