Trainierte Modelle in mobilen Apps einsetzen

Smartphones besitzen inzwischen eine ausreichend hohe Rechenleistung, um trainierte ML-Modelle direkt ausführen können. Mit CoreML und TensorFlow Lite existieren Frameworks, um Machine Learning auf mobile iOS- und Android-Geräte zu bringen.

Know-how  –  9 Kommentare
Trainierte Modelle in mobilen Apps einsetzen

(Bild: Canstock)

Die Hauptgründe, ein Machine-Learning-Modell innerhalb einer mobilen Anwendung laufen zu lassen, liegen in der Privatsphäre, Geschwindigkeit und Verfügbarkeit. Fotos und Texte müssen nicht mehr das Gerät verlassen, um beispielsweise Personen oder Gegenstände auf einem Bild zu erkennen. Die Internetverbindung und deren Verfügbarkeit spielen keine Rolle, da die Anwendung keine Daten überträgt und somit nicht auf ein Ergebnis wartet. Das wirkt sich auf die Geschwindigkeit aus und ermöglicht Anwendungen, die große Datenmengen oder Videos mit Machine Learning verarbeiten. Zusätzlich erübrigt sich eine skalierbare Serverfarm, die für die Erkennung zuständig ist. Jedoch sollte man die Größe der Modelle und die benötigte Rechenleistung auf dem mobilen Endgerät beachten.

Sonderheft iX Developer – Machine Learning

Mehr Artikel zu Machine und Deep Learning sowie zur Künstlichen Inteligenz sind im Sonderheft "iX Developer – Verstehen, verwenden, verifizieren" zu finden, das unter anderem im heise Shop erhältlich ist.

Ein mit leistungsstarker Hardware ausgestatteter Rechner trainiert das Modell anhand von Trainings- und Zieldaten. Das Ergebnis lässt sich testen und weiterverwenden. Das kann entweder auf einem Server erfolgen oder als konvertiertes Modell auf dem Smartphone. Sowohl Android als auch iOS bieten die Möglichkeit, bereits trainierte oder eigens erstellte Modelle in eine Anwendung einzubinden. CoreML ist nur für iOS verfügbar, während TensorFlow Mobile und TensorFlow Lite beide Welten unterstützen.

Kern und Apfel

Apple hat 2017 auf der Entwicklerkonferenz WWDC 2017 mit den CoreML-Tools eine Software zum Umwandeln trainierter Modelle für CoreML vorgestellt. Zudem existieren bereits trainierte Modelle zum Verwenden in eigenen Anwendungen. Neben iOS lässt sich die Bibliothek unter macOS, watchOS und tvOS nutzen.

Die Architektur von CoreML (Abb. 1)

Zwischen CoreML und der Hardware liegen das Accelerate Framework mit den Basic Neural Network Subroutines (BNNS) und die Metal Performance Shaders (s. Abb. 1). Letztere sind die Schnittstelle zur Grafikkarte (GPU), während das Accelerate Framework Vektorrechnungen auf der CPU ausführt. iOS entscheidet, welcher Layer eines Machine-Learning-Modells auf der CPU oder GPU läuft. Die Anwendung wiederum muss nicht direkt auf CoreML zugreifen, sondern kann verschiedene Frameworks nutzen: das Vision Framework zur Bildanalyse, Natural Language für die Verarbeitung natürlicher Sprache und das GameplayKit-Framework für die Auswertung von Entscheidungsbäumen.

Schlankes TensorFlow

Im Moment gibt es mit TensorFlow Mobile und TensorFlow Lite zwei für mobile und Embedded-Geräte zugeschnittene Versionen des Frameworks, die auf Android, iOS und auch auf einem Raspberry Pi laufen. TensorFlow Lite ist seit Dezember 2017 die Weiterentwicklung von TensorFlow Mobile und steht im Fokus dieses Artikels. Da es sich noch in der Entwicklung befindet, deckt es im Gegensatz zum Vorgänger noch nicht alle Anwendungsfälle ab und kennt nicht alle TensorFlow-Operatoren. Jedoch sind die Applikationen kleiner, haben weniger Abhängigkeiten und eine bessere Leistung. Zusätzlich unterstützt TensorFlow Lite ab Android 8.1 (API Level 27) die Hardwarebeschleunigung mit der Android Neural Networks API.

Architektur von TensorFlow Lite unter Android und iOS (Abb. 2)


Der TensorFlow Lite Optimizing Converter (TOCO) konvertiert ein trainiertes TensorFlow-Modell in ein TensorFlow-Lite-Modell (.tflite). Für Android existiert eine Java-Schnittstelle zum Einbinden der C++-API. Die C++-Bibliothek existiert sowohl für Android als auch iOS. Sie lädt das TensorFlow-Lite-Modell und ruft den Interpreter auf, der das Modell und die TensorFlow-Operatoren ausführt. Auf bestimmten Android-Geräten nutzt der Interpreter die Hardwarebeschleunigung über die Android Neural Network API.