Mit LiteRT können Sie TensorFlow-, PyTorch- und JAX-Modelle in Ihren Android-Apps ausführen. Das LiteRT-System bietet vorkonfigurierte und anpassbare Ausführungsumgebungen, mit denen Modelle auf Android-Geräten schnell und effizient ausgeführt werden können. Es bietet auch Optionen für die Hardwarebeschleunigung.
Beispiele für Android-Anwendungen, die LiteRT verwenden, finden Sie im Repository LiteRT-Beispiele.
Modelle für maschinelles Lernen
LiteRT verwendet TensorFlow-, PyTorch- und JAX-Modelle, die in ein kleineres, portableres und effizienteres Modellformat für maschinelles Lernen konvertiert werden. Sie können vordefinierte Modelle mit LiteRT auf Android-Geräten verwenden oder eigene Modelle erstellen und in das LiteRT-Format konvertieren.
Auf dieser Seite wird die Verwendung bereits erstellter Modelle für maschinelles Lernen beschrieben. Das Erstellen, Trainieren, Testen oder Konvertieren von Modellen wird nicht behandelt. Weitere Informationen zum Auswählen, Ändern, Erstellen und Konvertieren von Modellen für maschinelles Lernen für LiteRT finden Sie auf der Seite Modelle.
Modelle auf Android-Geräten ausführen
Ein LiteRT-Modell, das in einer Android-App ausgeführt wird, nimmt Daten auf, verarbeitet sie und generiert eine Vorhersage basierend auf der Logik des Modells. Für die Ausführung eines LiteRT-Modells ist eine spezielle Laufzeitumgebung erforderlich. Die an das Modell übergebenen Daten müssen sich in einem bestimmten Datenformat befinden, dem sogenannten Tensor. Wenn ein Modell die Daten verarbeitet, was als Inferenz bezeichnet wird, generiert es Vorhersageergebnisse als neue Tensoren und übergibt sie an die Android-App, damit sie Maßnahmen ergreifen kann, z. B. das Ergebnis einem Nutzer anzeigen oder zusätzliche Geschäftslogik ausführen.
Abbildung 1. Ablauf der Funktionsausführung für LiteRT-Modelle in Android-Apps
Auf der Ebene des funktionalen Designs benötigt Ihre Android-App die folgenden Elemente, um ein LiteRT-Modell auszuführen:
- LiteRT-Laufzeitumgebung für die Ausführung des Modells
- Model Input Handler zum Transformieren von Daten in Tensoren
- Modellausgabe-Handler, um Ausgabeergebnistensoren zu empfangen und als Vorhersageergebnisse zu interpretieren
In den folgenden Abschnitten wird beschrieben, wie die LiteRT-Bibliotheken und -Tools diese funktionalen Elemente bereitstellen.
Apps mit LiteRT entwickeln
In diesem Abschnitt wird der empfohlene, am häufigsten verwendete Weg zur Implementierung von LiteRT in Ihrer Android-App beschrieben. Die Abschnitte Laufzeitumgebung und Entwicklungsbibliotheken sollten Sie dabei besonders beachten. Wenn Sie ein benutzerdefiniertes Modell entwickelt haben, lesen Sie den Abschnitt Wege zur erweiterten Entwicklung.
Optionen für die Laufzeitumgebung
Es gibt mehrere Möglichkeiten, eine Laufzeitumgebung für die Ausführung von Modellen in Ihrer Android-App zu aktivieren. Die bevorzugten Optionen sind:
- LiteRT in der Laufzeitumgebung der Google Play-Dienste (empfohlen)
- Eigenständige LiteRT-Laufzeitumgebung
Im Allgemeinen sollten Sie die von Google Play-Diensten bereitgestellte Laufzeitumgebung verwenden, da sie platzsparender als die Standardumgebung ist, da sie dynamisch geladen wird und die App-Größe so kleiner bleibt. Außerdem wird in Google Play-Diensten automatisch die neueste stabile Version der LiteRT-Laufzeit verwendet. So erhalten Sie im Laufe der Zeit zusätzliche Funktionen und eine verbesserte Leistung. Wenn Sie Ihre App auf Geräten anbieten, die keine Google Play-Dienste enthalten, oder Ihre ML-Laufzeitumgebung genau verwalten müssen, sollten Sie die Standard-LiteRT-Laufzeit verwenden. Bei dieser Option wird zusätzlicher Code in Ihre App eingebunden. So haben Sie mehr Kontrolle über die ML-Laufzeit in Ihrer App, die Downloadgröße Ihrer App wird jedoch größer.
Sie greifen in Ihrer Android-App auf diese Laufzeitumgebungen zu, indem Sie Ihrer App-Entwicklungsumgebung LiteRT-Entwicklungsbibliotheken hinzufügen. Informationen zur Verwendung der Standardlaufzeitumgebungen in Ihrer App finden Sie im nächsten Abschnitt.
Bibliotheken
Sie können über die Google Play-Dienste auf die Interpreter API zugreifen. Sie können den LiteRT-Kern und die Unterstützungsbibliotheken in Ihrer Android-App verwenden. Programmierdetails zur Verwendung von LiteRT-Bibliotheken und Laufzeitumgebungen finden Sie unter Entwicklungstools für Android.
Modelle abrufen
Für das Ausführen eines Modells in einer Android-App ist ein Modell im LiteRT-Format erforderlich. Sie können vorgefertigte Modelle verwenden oder ein Modell erstellen und in das Lite-Format konvertieren. Weitere Informationen zum Abrufen von Modellen für Ihre Android-App finden Sie auf der Seite LiteRT-Modelle.
Eingabedaten verarbeiten
Alle Daten, die Sie in ein ML-Modell übergeben, müssen ein Tensor mit einer bestimmten Datenstruktur sein, die oft als Form des Tensors bezeichnet wird. Damit Daten mit einem Modell verarbeitet werden können, muss Ihr App-Code Daten aus ihrem ursprünglichen Format, z. B. Bild-, Text- oder Audiodaten, in einen Tensor mit der für Ihr Modell erforderlichen Form umwandeln.
Inferenzen ausführen
Die Verarbeitung von Daten durch ein Modell, um ein Vorhersageergebnis zu generieren, wird als Inferenz bezeichnet. Für die Ausführung einer Inferenz in einer Android-App sind eine LiteRT-Laufzeitumgebung, ein Modell und Eingabedaten erforderlich.
Die Geschwindigkeit, mit der ein Modell eine Inferenz auf einem bestimmten Gerät generieren kann, hängt von der Größe der verarbeiteten Daten, der Komplexität des Modells und den verfügbaren Rechenressourcen wie Arbeitsspeicher und CPU oder speziellen Prozessoren, sogenannten Beschleunigern, ab. Mithilfe von LiteRT-Hardwaretreibern, die als Delegierte bezeichnet werden, können Modelle für maschinelles Lernen auf diesen speziellen Prozessoren wie GPUs (Graphics Processing Units) und TPUs (Tensor Processing Units) schneller ausgeführt werden. Weitere Informationen zu Delegating und Hardwarebeschleunigung der Modellverarbeitung finden Sie in der Hardwarebeschleunigung – Übersicht.
Ausgabeergebnisse verarbeiten
Modelle generieren Vorhersageergebnisse als Tensoren, die von Ihrer Android-App verarbeitet werden müssen, indem eine Aktion ausgeführt oder dem Nutzer ein Ergebnis angezeigt wird. Die Modellausgabe kann so einfach wie eine Zahl sein, die einem einzelnen Ergebnis entspricht (0 = Hund, 1 = Katze, 2 = Vogel) für eine Bildklassifizierung, bis hin zu viel komplexeren Ergebnissen, z. B. mehrere Begrenzungsrahmen für mehrere klassifizierte Objekte in einem Bild mit Konfidenzbewertungen zwischen 0 und 1.
Erweiterte Entwicklungspfade
Wenn Sie komplexere und benutzerdefinierte LiteRT-Modelle verwenden, müssen Sie möglicherweise erweiterte Entwicklungsansätze anwenden, die über die oben beschriebenen hinausgehen. In den folgenden Abschnitten werden erweiterte Techniken zum Ausführen von Modellen und zur Entwicklung von Modellen für LiteRT in Android-Apps beschrieben.
Erweiterte Laufzeitumgebungen
Zusätzlich zu den Standardlaufzeit- und Google Play-Dienstlaufzeitumgebungen für LiteRT gibt es weitere Laufzeitumgebungen, die Sie mit Ihrer Android-App verwenden können. Diese Umgebungen eignen sich am ehesten, wenn Sie ein Modell für maschinelles Lernen verwenden, das ML-Vorgänge verwendet, die von der Standardlaufzeitumgebung für LiteRT nicht unterstützt werden.
- Flexible Laufzeit für LiteRT
- Benutzerdefinierte LiteRT-Laufzeit
Mit der Flex-Laufzeit von LiteRT können Sie bestimmte Operatoren einschließen, die für Ihr Modell erforderlich sind. Als erweiterte Option zum Ausführen Ihres Modells können Sie LiteRT für Android erstellen, um Operatoren und andere Funktionen einzubinden, die zum Ausführen Ihres TensorFlow-Modells für maschinelles Lernen erforderlich sind. Weitere Informationen finden Sie unter LiteRT für Android erstellen.
C- und C++-APIs
LiteRT bietet auch eine API zum Ausführen von Modellen mit C und C++. Wenn Ihre App das Android NDK verwendet, sollten Sie diese API verwenden. Sie können diese API auch verwenden, wenn Sie Code für mehrere Plattformen freigeben möchten. Weitere Informationen zu dieser Entwicklungsoption finden Sie auf der Seite Entwicklungstools.
Serverseitige Modellausführung
Im Allgemeinen sollten Sie Modelle in Ihrer App auf einem Android-Gerät ausführen, um von einer geringeren Latenz und einem verbesserten Datenschutz für Ihre Nutzer zu profitieren. Es gibt jedoch Fälle, in denen das Ausführen eines Modells auf einem Cloud-Server, also außerhalb des Geräts, eine bessere Lösung ist. Das ist beispielsweise der Fall, wenn Sie ein großes Modell haben, das sich nicht einfach auf eine Größe komprimieren lässt, die auf die Android-Geräte Ihrer Nutzer passt, oder das auf diesen Geräten nicht mit angemessener Leistung ausgeführt werden kann. Dieser Ansatz kann auch die bevorzugte Lösung sein, wenn eine gleichbleibende Leistung des Modells auf einer Vielzahl von Geräten an erster Stelle steht.
Google Cloud bietet eine umfassende Suite von Diensten für die Ausführung von KI-Modellen. Weitere Informationen finden Sie auf der Seite KI- und Machine-Learning-Produkte von Google Cloud.
Entwicklung und Optimierung benutzerdefinierter Modelle
Zu fortgeschritteneren Entwicklungspfaden gehören wahrscheinlich die Entwicklung benutzerdefinierter Modelle für maschinelles Lernen und die Optimierung dieser Modelle für die Verwendung auf Android-Geräten. Wenn Sie benutzerdefinierte Modelle erstellen möchten, sollten Sie Quantisierungstechniken auf die Modelle anwenden, um Speicher- und Verarbeitungskosten zu senken. Weitere Informationen zum Erstellen leistungsstarker Modelle für die Verwendung mit LiteRT finden Sie im Abschnitt „Modelle“ unter Best Practices für die Leistung.