TensorFlow auf Apple Silicon Macs installieren
Als erstes installieren wir TensorFlow auf dem M1, dann lassen wir einen kleinen Funktionstest laufen und zum Schluss kommt ein Benchmark-Vergleich mit einem AWS-System.
#
Die Installation von TensorFlow ist sehr einfachInstalliere Dir eine ARM-Version von Python. Zu empfehlen (03.2021) Python 3.8. Version 3.9 ist aktuell noch nicht kompatibel. Du kannst dazu zum Beispiel einfach PyCharm (kostenlose Community-Version für M1 Mac) installieren. Damit bekommst du eine voll funktionsfähige Python-Installation mitgeliefert.
#
Sobald du Python installiert hast, gehe folgendermaßen vorÖffne ein Terminal auf deinem Mac und kopiere folgende Code-Zeile hinein. Damit wird TensorFlow heruntergeladen und in einem Ordner deiner Wahl installiert. Alternatv kannst du auch den Default-Ordner belassen.
Default-Ordner: /Users/customer/tensorflow_macos_venv/
Du solltest danach folgende Meldung erhalten:
Der nächste Schritt ist, dein bereits erstelltes Virtual Environment
zu aktivieren. Kopiere dazu folgendes Kommando in dein Terminal:
Wichtig: nicht den Punkt
am Anfang vergessen!
Dein Prompt sollte sich jetzt so verändert haben:
Nun kannst du python
aufrufen und mit import tensorflow as tf
TensorFlow importieren. Ob alles geklappt hat, siehst du mit dem Befehl tf.__version__
. Deine Ausgabe sollte nun so ähnlich ausschauen:
Damit ist die Basisinstallation von TensorFlow schon fertig
Weitere Information zu dem aktuellen Stand des TensorFlow-Release und welche Funktion noch nicht unterstützt werden findest du auf der Repository-Seite: https://github.com/tensorflow/tensorflow
#
Eine kleine Basisanwendung, um zu sehen ob alles richtig funktioniertDafür verwenden wir das MNIST-Dataset mit handgeschriebenen Zahlen. Eines der populärsten DataSets um in die Welt des Machine Learning und Image Classification einzusteigen. Das zugehörige Jupyter-Notebook mit weiteren Details gibt es hier:
https://www.tensorflow.org/tutorials/quickstart/beginner
Output: (Die ausgegeben Werte können etwas abweichen, da die Vorhersage natürlich neu erstellt wird)
Output:
Möglicherweise bekommt du eine Warnmeldung:
tensorflow/core/platform/profile_utils/cpu_utils.cc:126] Failed to get CPU frequency: 0 Hz
TensorFlow für Apple Silicon ist aktuell (März 2021) noch in einer Alpha-Version und der ein oder andere Bug sicher noch enthalten. Jedoch funktioniert das meiste bereits sehr gut und sehr schnell. Oftmals werden mit Intel CPU und GPU pro Epoche mehr als 3s benötigt.
Output:
Output:
Output:
Perfekt!
#
Der BenchmarkJetzt wird es richtig spannend! Wie schneidet unser kleines Modell mit 8 GB RAM im Benchmark ab?
Wir nehmen als Vergleich den Benchmark von https://www.neuraldesigner.com/blog/training-speed-comparison-gpu-approximation
Die Daten des Vergleichscomputers bei AWS:
Theoretisch müsste unser kleiner Mac deutlich schlechter abschneiden, da es sich hier um ein echtes ML Monster handelt, wir sind gespannt!
Die Daten unseres Mac Mini M1:
Um das Beispiel auszuführen muss Pandas
und Numpyy
installiert sein.
Die Installation von Pandas
schlägt fehl, wenn man sie über pip install pandas
vornehmen möchte. Für eine erfolgreiche Installation ist numpy cython
Notwendig. Hier die Anleitung:
Die verwendeten Daten sind unter dem obigen Link herunterladbar und hier der verwendete Code, identisch zum Benchmark:
Als erstes die Werte des AWS Windows-PC:
Trainigszeit bei 1000 Epochen war 3714 Sekunden mit einem Fehler von 0.0003857 und einer durchschnittlen CPU-Nutzung von 45%. Das ist ziemlich schnell!
Jetzt lassen wir mal unseren kleinen Mac Mini trainieren:
Für seine Spezifikation ist das Ergebnis nicht übel, aber eigentlich habe ich mir mehr von dem neuen Chip erwartet. Trainingszeit bei 1000 Epochen war 11814 Sekunden. Anscheinend gibt es noch etwas Optimierungsbedarf, was große Trainigssets angeht. Die gleiche Erfahrung wurde in diesem Blog auch gemacht: https://medium.com/analytics-vidhya/m1-mac-mini-scores-higher-than-my-nvidia-rtx-2080ti-in-tensorflow-speed-test-9f3db2b02d74
Dann lass uns doch mal das kleine Trainigsset aus obigem Blog probieren:
Das Ergebnis ist ähnlich wie in dem Blog, ein bischen langsamer da ich Ausnahmsweise noch ein paar andere Anwendungen offen hatte:
Diese Werte können sich durchaus sehen lassen und TensorFlow auf ARM ist erst in der Anfangsphase. Ich bin sehr zuversichtlich, dass die Performance noch deutlich besser wird. Insbesondere bei großen Trainingssets. Und ganz wichtig: Der Stromverbrauch und die Hitzeentwicklung ist minimal! Das ist ein riesiger Vorteil für die Umwelt und nicht zuletzt für den Geldbeutel!