On-Device-NLP: Datenschutz, Geschwindigkeit und die Grenzen des Browsers

On-Device-NLP: Datenschutz, Geschwindigkeit und die Grenzen des Browsers

Aday
nlp on-device engineering

Wenn ein Nutzer mit einem virtuellen Assistenten spricht, ist der schnellste Weg zu einer Antwort jener, der das Gerät nie verlässt. On-Device-NLP eliminiert den Umweg über einen entfernten Server und reduziert die wahrgenommene Latenz von mehreren hundert Millisekunden auf nahezu null. Noch wichtiger: Die Worte, die ein Nutzer eintippt oder spricht, werden lokal verarbeitet und lokal verworfen — sie werden niemals übertragen, niemals protokolliert und sind niemals der Datenhaltungspolitik eines Drittanbieters ausgeliefert. Für Anwendungen in sensiblen Bereichen wie Gesundheit, Finanzen oder persönlicher Produktivität ist dies keine Komfortfunktion, sondern eine Grundvoraussetzung.

Inferenzmodelle im Browser oder auf einem mobilen Gerät auszuführen ist genuин anspruchsvoll. Die Browser-Sandbox schränkt den Zugang zu nativen Threads ein, GPU-Compute ist hinter WebGL oder der noch unreifen WebGPU-API eingekapselt, und Speicherbudgets sind knapp. Auf Mobilgeräten konkurriert man mit dem Betriebssystem, Hintergrundprozessen und thermischem Throttling. Klassische NLP-Bibliotheken, die für serverseitiges Node.js oder Python entwickelt wurden, schleppen transitive Abhängigkeiten mit, die die Bundle-Größe über das hinaus aufblähen, was eine mobile WebView komfortabel laden kann. Die ingenieurtechnische Herausforderung besteht nicht nur darin, ein Modell zum Laufen zu bringen — sondern es schnell genug, klein genug und zuverlässig genug zu machen, dass Nutzer es nie bemerken.

Die NLP-Engine von Actor.dev, @noondra/nlp, wurde von Anfang an unter Berücksichtigung dieser Einschränkungen entwickelt. Es handelt sich um ein reines TypeScript-Paket mit einer einzigen Laufzeitabhängigkeit (budoux für die Wortsegmentierung im Japanischen). Es gibt keinen nativen Addon, kein WASM-Blob von einem CDN und keine Node.js-API-Oberfläche — das Paket läuft identisch in V8, JavaScriptCore und Hermes. Die Engine übernimmt Intent-Klassifizierung, Entity-Extraktion, Slot-Filling und Dialog-State-Management vollständig im Prozess. Modellgewichte werden als kompakte JSON-Strukturen serialisiert, einmalig in den Speicher geladen und für die gesamte Sitzung gehalten — das garantiert deterministische Erstantwortzeiten unabhängig von den Netzbedingungen.

Der ehrliche Kompromiss lautet Genauigkeit gegen Größe. Ein Transformer-basierter Intent-Klassifizierer übertrifft ein Feature-Engineering-TF-IDF-Modell bei Out-of-Distribution-Eingaben, kostet aber auch 50–200 MB Gewichte, die zwingend heruntergeladen und im RAM gehalten werden müssen. Für die meisten konversationellen Assistenzanwendungen ist die Verteilung der Nutzereingaben durch die Domäne begrenzt, die der Assistent abdeckt. Ein gut trainiertes flaches Modell mit guter Abdeckung dieser Domäne übertrifft ein großes allgemeines Modell, das seine Kapazität für Themen aufwendet, die der Nutzer nie ansprechen wird. Actor.devs Ansatz setzt genau darauf: NLP-Projekte werden pro Agent trainiert, die resultierenden Modelle sind klein und domänenspezifisch, und die Genauigkeit bei domäneninternen Eingaben ist wettbewerbsfähig mit deutlich größeren Architekturen. Wenn eine Anfrage tatsächlich unter den Konfidenzschwellenwert des Modells fällt, gibt die Laufzeit die Anfrage elegant an ein LLM-Fallback weiter — der schnelle Pfad bleibt schnell, während die Qualität dort gewahrt bleibt, wo es darauf ankommt.