In diesem Tutorial soll es darum gehen, wie ein eigenes Modell veröffentlicht werden kann, um beispielsweise über eine API aus einer App darauf zugreifen zu können. In diesem ersten Teil werden wir zunächst ein eigenes kleines Modell erstellen und trainieren, das wir in den folgenden Teilen dann veröffentlichen. Dazu werden verschiedene Dienste und Frameworks genutzt, die abhängig von den eigenen Bedürfnissen natürlich ausgetauscht werden können.

Inhaltsverzeichnis

<aside> ⚠️ Es handelt sich hier um keinen Anfängerkurs zur Erstellung von eigenen Machine Learning Modellen. Zum Folgen des Tutorials werden mindestens Kenntnisse in Python und Git vorausgesetzt sowie Erfahrungen mit Konsole/Terminal und der Installation von Programmen. In diesem Beispiel wird zudem ein sehr kleines Modell verwendet, das kostenlos mit Heroku gehostet werden kann. Größere Modelle erfordern eventuell einen kostenpflichtigen Plan. Ein solcher ist insbesondere auch beim produktiven Einsatz mit einer potentiell wachsenden Zugriffszahl ratsam. In dem Fall sollten zudem weitere ausführlichere Tutorials zur Rate gezogen werden, um Schwachstellen zu identifizieren und Sicherheitslücken zu schließen.

</aside>

Was ist PhotonAI?

PHOTONAI

PhotonAI ist eine high-level Python API mit der schnell und einfach Machine Learning Pipelines erstellt werden können. Als Basis dienen bekannte Frameworks wie Scikit-learn und Keras. Durch die sogenannten Hyperpipes kann die Optimierung der Hyperparameter automatisiert werden und weitere Funktionen bietet die Möglichkeit verschiedene Verfahren zu vergleichen oder zu kombinieren. Der Wizard ermöglicht zudem die Generierung von PhotonAI Code über eine Weboberfläche und macht dadurch den Einstieg besonders einfach.

Installiert werden kann das Package mit:

pip install photonai

<aside> 📌 Um das Deployment später einfacher zu machen und Kompatibilitätsprobleme zu vermeiden, ist es immer ratsam innerhalb einer virtuellen Umgebung zu arbeiten. Python bietet hierfür viele Möglichkeiten. Wir verwenden Virtualenv bzw. das seit Python 3.3 mitgelieferte Modul venv. Eine andere bekannte Alternative ist Anaconda.

</aside>

Erstellung der Pipeline

Wir nutzen zur Erstellung unseres Modells zunächst den PhotonAI Wizard und entwerfen dort eine neue eigene Pipeline.

2021-11-18 14_02_02-Mail.png

In unserem Beispiel haben wir uns für einen frei verfügbaren Datensatz von Kaggle entschieden, welcher Daten und Preis zu gebrauchten Autos enthält (100,000 UK Used Car Data set). Wir werden uns auf einen Autohersteller (VW) beschränken und versuchen den Preis vorherzusagen. Die ersten Einstellungen sind direkt abhängig vom Aufbau unseres Datensatzes und unserer Aufgabe. Sie können sich deshalb bei anderen Daten unterscheiden. Die vereinfachte Bedienung von PhotonAI und insbesondere dem Wizard führt allerdings dazu, dass einige Daten und Aufgaben (noch) nicht unterstützt werden. So stehen im Wizard bisher nur tabellarische und Nifti Daten zur Auswahl. Außerdem gibt es nur die Möglichkeit eine Regression oder Klassifikation durchzuführen. Für andere Daten- oder Analysetypen muss deshalb doch auf TensorFlow, PyTorch oder ähnliche Packages zurückgegriffen werden.

2021-11-18 17_26_19-PHOTONAI WIZARD - Brave.png

Während man die verschiedenen Einstellungen vornimmt, kann man live auf der rechten Seite den entsprechenden Programmcode betrachten. Dadurch eignet sich der Wizard auch, um die Benutzung des PhotonAI Packages zu lernen. Wir fügen in unserem Beispiel zwei unterschiedliche Estimator hinzu, deren Performance von PhotonAI später automatisch verglichen wird.

Screenshot_20211122_120854.png

Im letzten Schritt können wir die komplette Datei herunterladen bzw. den Code in eine vorhandene Python-Datei kopieren. Falls relative Pfade angegeben wurden, muss darauf geachtet werden, dass ihre Struktur genau eingehalten wird, damit die Daten gefunden werden können. Wir verwenden den folgenden Aufbau für unser Projekt. Die Datei train.py enthält unseren generierten PhotonAI Code. Der Ordner project/ wird von PhotonAI dazu verwendet Logs und Modelle zu speichern.

car-price-estimator/
	app/
		train.py
	data/
		vw.csv
	project/

Anpassung der Pipeline

Der Wizard geht bei tabellarischen Daten von einer Excel-Tabelle aus. In unserem Fall haben wir jedoch eine CSV-Datei. Da PhotonAI ein Pandas-Dataframe erwartet, können wir einfach die Methode read_excel() durch read_csv() ersetzen. Mit Pandas können wir zudem einfach unsere Daten betrachten:

>> import pandas as pd
>> df = pd.read_csv('../data/vw.csv')
>> df.head()
    model  year  price transmission  mileage fuelType  tax   mpg  engineSize
0   T-Roc  2019  25000    Automatic    13904   Diesel  145  49.6         2.0
1   T-Roc  2019  26883    Automatic     4562   Diesel  145  49.6         2.0
2   T-Roc  2019  20000       Manual     7414   Diesel  145  50.4         2.0
3   T-Roc  2019  33492    Automatic     4825   Petrol  145  32.5         2.0
4   T-Roc  2019  22900    Semi-Auto     6500   Petrol  150  39.8         1.5