LiteRT-Übersicht

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

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.

Diagramm zum LiteRT-Entwicklungsworkflow

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 .tflite vorliegt. 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-App
    Generative KI
    (.litertlm Format)
    LiteRT-Seite auf Hugging Face
    z.B. Gemma-Familie
  • Konvertieren 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
    Torchvision
    Link
    TensorFlow Kaggle-Modelle
    Hugging Face
    Link
    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