LiteRT ist das On-Device-Framework von Google für die leistungsstarke Bereitstellung von ML und generativer KI auf Edge-Plattformen. Es nutzt effiziente Konvertierung, Laufzeit und Optimierung.
Mit der neuesten Version 2.x von LiteRT wird die CompiledModel API eingeführt, eine moderne Laufzeitschnittstelle, die die Hardwarebeschleunigung maximieren soll. Die Interpreter API (früher TensorFlow Lite) ist weiterhin aus Gründen der Abwärtskompatibilität verfügbar. Die CompiledModel API ist jedoch die empfohlene Wahl für Entwickler, die eine optimale Leistung bei KI-Anwendungen auf Geräten erzielen möchten.
Wichtige LiteRT-Funktionen
Entwicklung mit LiteRT optimieren
Automatisierte Auswahl des Beschleunigers im Vergleich zur expliziten Delegatenerstellung. Effiziente E/A-Pufferverwaltung und asynchrone Ausführung für eine überlegene Leistung. Weitere Informationen finden Sie in der Dokumentation zur On-Device-Inferenz.
Erstklassige GPU-Leistung
Powered by ML Drift, das jetzt sowohl ML- als auch generative KI-Modelle auf GPUs APIs unterstützt. Weitere Informationen finden Sie in der Dokumentation zur GPU-Beschleunigung.
Einheitliche NPU-Beschleunigung
Beschleunigen Sie Ihr Modell mit vereinfachtem NPU-Zugriff von großen Chipherstellern. Weitere Informationen finden Sie in der Dokumentation zur NPU-Beschleunigung.
Überlegene LLM-Unterstützung
LiteRT bietet eine leistungsstarke Bereitstellung für generative KI-Modelle auf Mobilgeräten, Computern und Webplattformen. Weitere Informationen finden Sie in der Dokumentation zur Bereitstellung von generativer KI.
Umfassende Unterstützung für ML-Frameworks
LiteRT unterstützt die optimierte Konvertierung von PyTorch-, TensorFlow- und JAX-Frameworks in das Format .tflite oder .litertlm. Weitere Informationen finden Sie in der Dokumentation zur Modellkonvertierung
.
Erste Schritte mit der CompiledModel API
Für klassische ML-Modelle finden Sie hier die folgenden Demo-Apps.
- Kotlin-App zur Bildsegmentierung: CPU-/GPU-/NPU-Inferenz.
- C++-App zur Bildsegmentierung: CPU-/GPU-/NPU-Inferenz mit asynchroner Ausführung.
Für generative KI-Modelle finden Sie hier die folgenden Demo-Apps:
- C++-App zur semantischen Ähnlichkeit von EmbeddingGemma: CPU-/GPU-/NPU-Inferenz.
Entwicklungsworkflow
LiteRT führt Inferenzvorgänge vollständig auf dem Gerät aus, und zwar auf Android-, iOS-, Web-, IoT- und Desktop-/Laptop-Geräten. Unabhängig vom Gerät ist der folgende Workflow am häufigsten. Links zu weiteren Anleitungen finden Sie unten.
Die am besten geeignete Lösung für die ML-Herausforderung finden
LiteRT bietet Nutzern ein hohes Maß an Flexibilität und Anpassbarkeit bei der Lösung von Problemen im Bereich des maschinellen Lernens. Daher ist es gut für Nutzer geeignet, die ein bestimmtes Modell oder eine spezielle Implementierung benötigen. Nutzer, die Plug-and-Play-Lösungen suchen, bevorzugen möglicherweise MediaPipe Tasks, das vorgefertigte Lösungen für gängige Aufgaben im Bereich des maschinellen Lernens wie Objekterkennung, Textklassifizierung und LLM-Inferenz bietet.

Modell abrufen und vorbereiten
Ein LiteRT-Modell wird in einem effizienten portablen Format namens
FlatBuffers dargestellt, das die .tflite
Dateierweiterung verwendet.
Sie können ein LiteRT-Modell auf folgende Weise abrufen:
Vortrainiertes Modell abrufen:für gängige ML-Arbeitslasten wie Bildsegmentierung, Objekterkennung usw.
Der einfachste Ansatz ist die Verwendung eines LiteRT-Modells, das bereits im Format
.tflitevorliegt. Für diese Modelle sind keine zusätzlichen Konvertierungsschritte erforderlich.Modelltyp Quelle des vortrainierten Modells Klassisches ML
(.tflite-Format)Besuchen Sie Kaggle oder HuggingFace
z.B. Modelle zur Bildsegmentierung und Beispiel-AppGenerative KI
(.litertlmFormat)LiteRT-Seite auf Hugging Face
z.B. Gemma-FamilieKonvertieren Sie das ausgewählte PyTorch-, TensorFlow- oder JAX-Modell in ein LiteRT-Modell, wenn Sie kein vortrainiertes Modell verwenden möchten. [PRO-NUTZER]
Modell-Framework Beispielmodelle Konvertierungstool PyTorch 2.0 Hugging Face
TorchvisionLink TensorFlow Kaggle-Modelle
Hugging FaceLink Jax Hugging Face Link Erstellen Sie Ihr LLM zur weiteren Optimierung mit der Generative API. [PRO-NUTZER]
Unsere Generative API-Bibliothek bietet integrierte PyTorch-Bausteine zum Erstellen von Transformer-Modellen wie Gemma, TinyLlama und anderen mit für Mobilgeräte optimierten Abstraktionen. So können wir die Konvertierung und die leistungsstarke Ausführung in unserer mobilen Laufzeitumgebung LiteRT garantieren. Weitere Informationen finden Sie in der Generative API Dokumentation.
Optimieren [PRO-NUTZER]
AI Edge Quantizer für fortgeschrittene Entwickler ist ein Tool zum Quantisieren konvertierter LiteRT-Modelle. Es soll fortgeschrittenen Nutzern helfen, eine optimale Leistung bei ressourcenintensiven Modellen (z.B. generativen KI-Modellen) zu erzielen.
Weitere Informationen finden Sie in der Dokumentation zu AI Edge Quantizer.
Modell in Ihre App auf Edge-Plattformen einbinden
Mit LiteRT können Sie ML-Modelle vollständig auf dem Gerät ausführen und dabei eine hohe Leistung auf Android-, iOS-, Web-, Desktop- und IoT-Plattformen erzielen.
In den folgenden Anleitungen erfahren Sie, wie Sie ein LiteRT-Modell auf Ihrer bevorzugten Plattform einbinden:
| Unterstützte Plattform | Unterstützte Geräte | Unterstützte APIs |
|---|---|---|
| Auf Android-Geräten ausführen | Android-Mobilgeräte | C++/Kotlin |
| Auf iOS-/macOS-Geräten ausführen | iOS-Mobilgeräte, MacBooks | C++/Swift |
| Im Web mit LiteRT.js ausführen | Gerät mit Chrome, Firefox oder Safari | JavaScript |
| Unter Linux ausführen | Linux-Workstation oder Linux-basierte IoT-Geräte | C++/Python |
| Unter Windows ausführen | Windows-Workstation oder Laptops | C++/Python |
| Auf IoT-Geräten ausführen | Eingebettete Geräte | C++ |
Die folgenden Code-Snippets zeigen eine grundlegende Implementierung in Kotlin und C++.
Kotlin
// Load model and initialize runtime
val compiledModel = CompiledModel.create(
"/path/to/mymodel.tflite",
CompiledModel.Options(Accelerator.CPU))
// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()
// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)
// Invoke
compiledModel.run(inputBuffers, outputBuffers)
// Read the output
val output = outputBuffers.get(0).readFloat()
C++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
auto compiled_model,
CompiledModel::Create(env, "/path/to/mymodel.tflite", options));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));
// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));
// Invoke
LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));
// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));
Backend auswählen
Die einfachste Möglichkeit, Backends in LiteRT einzubinden, besteht darin, die integrierte Intelligenz der Laufzeitumgebung zu nutzen. Mit der CompiledModel API vereinfacht LiteRT die Einrichtung erheblich, da das Ziel-Backend als Option angegeben werden kann. Weitere Informationen finden Sie im Leitfaden zur On-Device-Inferenz.
| Android | iOS / macOS | Web | Linux | Windows | IoT | |
|---|---|---|---|---|---|---|
| CPU | XNNPACK | XNNPACK | XNNPACK | XNNPACK | XNNPACK | XNNPACK |
| GPU | OpenGL OpenCL |
Metal WebGPU |
WebGPU | WebGPU OpenCL |
WebGPU OpenCL |
WebGPU |
| NPU | MediaTek Qualcomm |
- | - | Qualcomm | - | Qualcomm |
Zusätzliche Dokumentation und Support
GitHub-Repository mit LiteRT-Beispielen für weitere LiteRT-Beispiel-Apps.
Für bestehende TensorFlow Lite-Nutzer: siehe Migrationsleitfaden.
Seite mit LiteRT-Tools für Leistung, Profilerstellung, Fehlerberichte usw.