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.
<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>
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>
Wir nutzen zur Erstellung unseres Modells zunächst den PhotonAI Wizard und entwerfen dort eine neue eigene Pipeline.
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.
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.
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/
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