Blog

Python Summit 2020
Das große Trainingsevent für Python
22. - 24. April 2020 | München
3
Mrz

„TensorFlow bringt Machine-Learning-Modelle auf jedes Gerät“

Machine Learning und Deep Learning werden inzwischen nicht mehr nur auf Desktop-PCs betrieben, sondern finden auch auf leistungsschwächeren Geräten wie Smartphones, Tablets oder gar Smartwatches Anwendung. Im Interview geben Meike Hammer und Maksim Moiseikin (arconsis IT-Solutions GmbH) Einblicke in diesen neueren ML-Bereich. Sie zeigen auf, was es dabei zu beachten gilt, welche Schwierigkeiten auftreten können, und weshalb sich TensorFlow besonders gut dafür eignet.

Python Summit: Machine Learning hat inzwischen auch den Weg zu Nutzeranwendungen auf Geräten wie Smartwatches, Smartphones und Tablets gefunden. In welchen Fällen wird dort ML eingesetzt?

Meike Hammer und Maksim Moiseikin: Machine Learning (ML) wird auf mobilen Geräten immer wichtiger. Viele Menschen sind es bereits gewöhnt, Apps mit ML-Technologien zu benutzen, obwohl sie es meist nicht wissen. Beispielsweise nutzen die letzten Android-Versionen Machine Learning, um die Batterielaufzeit zu verbessern: Je nach Verwendung der Anwendung sind sie in mehrere Klassen unterteilt und jede Klasse hat ihre eigenen Beschränkungen für die Hintergrundaktivitäten. Fitness-Apps lesen Informationen von Accelerometer und anderen Handy-Sensoren aus und benutzen Machine Learning, um aus diesen Daten Aktivitäten zu identifizieren und Schritte zu zählen.

Im Natural-Language-Processing-Bereich sind zwei Anwendungsszenarien besonders verbreitet. Sprachassistenten benutzen Deep-Learning-Modelle, um die natürliche Sprache zu verstehen und sinnvolle Antworten zu finden. Intelligente Tastaturen können die nächsten Wörter basierend auf Benutzereingaben vorhersagen, Tippfehler korrigieren und somit die Eingabegeschwindigkeit beschleunigen. In all diesen Use Cases zeigen Machine-Learning/Deep-Learning-Modelle bessere Ergebnisse als klassische Algorithmen, weshalb sie auf mobilen Geräten eingesetzt werden.

Des Weiteren gibt es sehr viele Anwendungen im Bereich Computer Vision und Computational Photography. Kamera-Apps nutzen ML beispielsweise, um Fotos in Umgebungen mit wenig Licht heller und stabiler zu machen und um Bildrauschen zu unterdrücken. Aus diesem Grund werden Bilder von High-End-Smartphones heute oft mit DSLR-Bildern verglichen. Soziale Netzwerke bieten Apps, die in Echtzeit nach bestimmten Kontrollpunkten auf Selfies suchen, um verschiedene Filter oder Masken anzuwenden.

Python Summit: Worin liegen die besonderen Schwierigkeiten von ML auf diesen Geräten?

Hammer und Moiseikin: In vielen Szenarien wäre es einfacher, Daten an einen leistungsfähigen Server zu schicken und sie dort zu bearbeiten. Dies ist natürlich nicht immer möglich und gewünscht: Einige Daten dürfen niemals an den Server geschickt werden, um die Privatsphäre der Benutzer zu schützen. Zudem gibt es manchmal zu viele Daten, um sie schnell genug auf den Server schicken zu können. Außerdem sollten einige Berechnungen offline laufen, wenn keine Internetverbindung vorhanden ist. Deswegen ist on-device Machine Learning heutzutage sehr wichtig.

Die größte Herausforderung liegt in der Leistung der Geräte. Smartphones sind mit energieeffizienten Prozessoren ausgestattet, die eine wesentlich geringere Leistung als PCs oder Notebooks haben. Die Größe des RAMs ist ebenfalls sehr begrenzt und die ML-Modelle und -Algorithmen sind sehr ressourcenintensiv. Es muss ein Gleichgewicht zwischen der Vorhersagequalität und der Performance auf allen Geräten gefunden werden, welches nicht nur für High-End-Geräte gut funktioniert. Während der Entwicklung mussten wir beispielsweise sehr mit der Überhitzung von Smartwatches kämpfen und die Testgeräte stets im Kühlschrank herunterkühlen.

Python Summit: Sind bestimmte Machine Learning Frameworks für Smartwatch & Co. besonders gut geeignet, und wenn ja, weshalb?

Hammer und Moiseikin: Aktuell sehen wir TensorFlow als die beste Library für Deployments von ML/DL-Modellen auf Smartphones. TensorFlow bietet Möglichkeiten, ML-Modelle auf jedes Gerät zu bringen. Oft werden auch bestimmte Werkzeuge und Optimierungen bereitgestellt, um Modelle zu komprimieren und zu beschleunigen. TensorFlow Lite auf Android und iOS kann sogar die Smartphone-GPU für Berechnungen nutzen. Zusätzlich können Modelle aus Keras/TensorFlow in ein CoreML-Format konvertiert werden.

Die letzten PyTorch-Versionen bieten auch experimentelle Unterstützung für Android- und iOS-Geräte an und sehen vielversprechend aus. Bisher konnten wir hier aber noch keine Erfahrungen im Produktiveinsatz gewinnen.

Python Summit: Welche Erfahrungen haben Sie in der praktischen Anwendung von TensorFlow auf Smartphones und Smartwatches sammeln können?

Hammer und Moiseikin: TensorFlow ist eine gute Library und hilft, die ML-Modelle zu trainieren und sie auf Endgeräten auszuführen. Allerdings ist TensorFlow auch nicht perfekt. Viele APIs sind zu komplex, werden mehrfach in verschiedenen Paketen definiert (tf.layers, tf.nn, tf.slim, tf.keras, …) und sind teilweise nicht miteinander kompatibel. Das macht sowohl die Entwicklung als auch die Code-Wiederverwendung schwieriger. Einige Operatoren werden nicht für alle Umgebungen (GPU, TPU) unterstützt.

Die Arbeitsweise der Library besteht darin, dass zunächst ein Graph definiert wird, welcher erst später mit Werten befüllt wird. Das macht die Analyse und das Debugging sehr schwierig. Darüber hinaus gab es Inkompatibilitäten mit externen Libraries: Mit einer alten Version des CoreML-Converter konnten wir Modelle neuerer TensorFlow-Versionen nicht konvertieren und daher TensorFlow nicht aktualisieren.

TensorFlow 2 hat viele dieser Probleme gelöst. Keras wurde als empfohlenes API sowie als Teil der TensorFlow Library bereitgestellt und alte APIs wurden aufgeräumt. Eine wichtige Änderung ist Eager Execution, die jetzt standardmäßig aktiviert ist. Die Operationen werden gleich bei der Ausführung evaluiert und liefern die korrekten Werte zurück, nicht nur die Graph-Definitionen. Das vereinfacht die Entwicklung und ermöglicht die Verwendung des Standard-Python-Debuggers.

Python Summit: Möchte man nun selbst Machine Learning in eine Nutzeranwendung integrieren, was sind Ihrer Meinung nach die wichtigsten Punkte, die man dabei beachten sollte?

Hammer und Moiseikin: Beim Machine Learning ist es sehr leicht, die Komplexität der Aufgabe zu unterschätzen. Mit Hilfe von modernen Bibliotheken und Entwicklungswerkzeugen können Sie sehr schnell einen Prototyp Ihres Modells entwickeln, was vorher unmöglich war. Allerdings erfordert es viel Zeit, Änderungen, Experimente und Optimierungen, um aus dieser ersten Version ein fertiges Produkt zu erhalten. Starten Sie also mit sehr einfachen Modellen, um Ihre Idee zu verifizieren und verbessern Sie das Modell iterativ. In den meisten Fällen ergibt es keinen Sinn, alles von Grund auf selbständig zu implementieren. Es gibt mittlerweile viele gute Open-Source-Bibliotheken, die bei vielen Aufgaben und Nutzungsszenarien helfen.

Es kann durchaus sinnvoll sein, das Transfer Learning zu verwenden: Ein vortrainiertes Model herunterzuladen, es als Basis zu verwenden und mit einem aufgabenspezifischen Datensatz feiner einzustellen, um bessere Ergebnisse zu erzielen und die Trainingszeit zu reduzieren.

Extrem wichtig sind die Trainingsdaten. Es ist eine große Menge möglichst realistischer Daten nötig, um gute Ergebnisse in der finalen Anwendung zu erzielen.

Python Summit: Vielen Dank für das Interview!

Meike Hammer ist seit 2016 als Software Engineer bei der arconsis IT-Solutions GmbH in Karlsruhe tätig.
Sie ist für die Entwicklung mobiler Apps verantwortlich, deren Realisierung immer häufiger Technologien wie etwa Machine Learning erfordern.
Ihr Fokus liegt insbesondere auf Natural Language Processing, um sprachbasierte Softwarekomponenten als Natural User Interfaces zu verwirklichen.
Dialogflow, Tensorflow und ML Core gehören dabei zu ihrem bevorzugten Toolset.
Maksim Moiseikin unterstützt arconsis bereits seit 2015 als Werkstudent. Seit Februar 2019 ist er fester Bestandsteil des Teams. In seiner Bachelorarbeit befasste er sich mit dem Bereich Deep Learning in Computer Vision. Bei arconsis entwickelt und trainiert Maksim Machine-Learning/Deep-Learning-Modelle und integriert diese in Anwendungen auf verschiedenen Plattformen. Darüber hinaus entwickelt er auch gerne Anwendungen mit Kotlin.

Maika Möbus

 

Geschrieben von: Maika Möbus

Maika Möbus ist seit Januar 2019 Redakteurin bei Software & Support Media. Zuvor studierte sie Soziologie an der Goethe-Universität Frankfurt und an der Johannes Gutenberg-Universität Mainz.

Alle Updates zum Python Summit!