Zum Hauptinhalt springen

Ray erfreut sich in der Machine-Learning-Community wachsender Beliebtheit. Es unter Windows zum Laufen zu bringen, kann jedoch knifflig sein. Wir zeigen Dir, wie es trotzdem funktioniert.

Warum Du Ray verwenden solltest

Ray ist ein verblüffend vielseitiges Framework für verteiltes Rechnen. Es kommt ohne die Java Virtual Machine aus und setzt stattdessen auf effizienten C++-Code sowie eine elegante und einfache Python-API. Aus der Machine-Learning-Perspektive hat das zwei wesentliche Vorteile:

Erstens kann man es benutzen, um beliebte Tools wie Spark und Tensorflow/Pytorch in einem einzigen Cluster zusammenzubringen – mit eleganten Optionen für den Datentransfer zwischen den beiden. Seit Neuestem wird auch verteiltes XGBoost Training unterstützt. Wann immer man also verteilte Rechenleistung für Machine Learning im Allgemeinen und Deep Learning im Besonderen benötigt, ist Ray eine große Hilfe.

Rays zweiter großer Vorteil ist die großartige Unterstützung im Bereich Reinforcement Learning (auch in Verbindung mit Tensorflow und/oder Pytorch). Wenn Du mehr über Reinforcement Learning und seine zahlreichen Anwendungen einschließlich Recommendation Engines erfahren willst, klicke hier.

Was macht es schwierig, Ray unter Windows zu nutzen?

Zunächst einmal ist die Windows-Unterstützung für Ray in der Alpha-Phase und wird daher nicht für den produktiven Einsatz empfohlen. Nichtsdestotrotz werden einige von Euch lieber Ray auf ihrem Windows-Laptop installieren wollen, anstatt Linux zu verwenden. Ein Blick auf die offiziellen Installationsanweisungen zeigt, dass die Installation nicht nur unter Linux, sondern auch unter Windows ein Kinderspiel ist: Aktualisiere Deine Visual C++ Runtime, führe eine einfache Installation mit pip durch und schon kann es losgehen.

Einen Haken gibt’s allerdings: Da wir heutzutage alle versuchen, unsere Python-Umgebungen sauber zu trennen, wird man statt pip normalerweise einen Paketmanager wie venv/virtualenv, pipenv, pew oder conda benutzen. Und da fängt der Spaß an. Die Verwendung von conda mit Ray ist technisch eine funktionierende Option. Sie sorgt jedoch unter Umständen für rechtliche Schwierigkeiten. Die Nutzungsbedingungen für das Code-Repository, das mit conda verwendet wird, wurden nämlich kürzlich geändert, so dass man als Unternehmen mit 200 oder mehr Mitarbeiter:innen eine kommerzielle Lizenz benötigt.

Seit dieser Änderung sind viele in der Machine-Learning-Community zu anderen Package-Managern gewechselt. Leider funktionieren grundlegende Werkzeuge wie venv (seit Version 3.3 Teil der Python-Standardbibliothek) und virtualenv mit Ray unter Windows nicht. Erschwerend kommt hinzu, dass pipenv „under the hood“ auch venv verwendet, so dass es ebenfalls nicht funktioniert. Unter den beliebtesten conda-Alternativen gibt es also kaum eine, die mit Ray zusammenspielt.

Was ist der beste Workaround?

Natürlich könnten wir das Dependency Management einfach vergessen und pip verwenden, um Ray direkt in die Site-Pakete unserer Python-Installation zu installieren. Unglücklicherweise führt dieser „dirty hack“ früher oder später in die Dependency-Hölle – und das ist ein Ort, den wir definitiv vermeiden wollen. Also versuchen wir, die Ursache des Problems zu finden, in der Hoffnung, dass wir auf dem Weg dorthin einen weniger plumpen Workaround finden. Es stellt sich heraus, dass ein Fehler in der Windows-Version von venv das Problem verursacht. Ironischerweise ist hier also nicht das junge Framework Ray schuld, sondern eine viel reifere Software. Wenn man sich die Details des Fehlers ansieht, stellt man fest, dass er in Python 3.7.3 eingeführt wurde (und anscheinend komplex genug ist, um nicht in naher Zukunft behoben zu werden). Die Fehlerbeschreibung sagt auch, dass Python 3.6 noch korrekt funktioniert. Wenn Du also vor der Wahl stehst, entweder überhaupt keinen Package-Manager zu verwenden (sofern conda aus Lizenzgründen ausgeschlossen ist) oder eine ältere Python-Version zu verwenden, ist Letzteres in der Regel das kleinere Übel. Möglicherweise möchtest Du an dieser Stelle doch nochmal eine Installation unter Linux erwägen, denn wirklich taufrisch ist Python 3.6 ja leider nicht mehr.

Die Lösung für die Windows-Installation ist also folgende (mit pipenv, venv ist ähnlich):

  • Installiere eine Version von Python 3.6 von der offiziellen Python-Downloadseite. Ich empfehle 3.6.8, da dies die neueste Version ist, die derzeit zum Download bereitsteht.
  • Verwende gitbash oder die Windows-Kommandozeile, um zum Verzeichnis Deines Python-Projekts zu navigieren.
  • Gib den Befehl „pipenv --python 3.6.8“ ein, um eine pipenv-Umgebung zu erstellen, die Python 3.6.8 (oder die von Dir gewählte Version von Python 3.6) verwendet.
  • Führe ein schnelles „pipenv install ray“ aus, um Ray zu installieren.

Jetzt sollte es funktionieren und Du kannst loslegen! Wirf zu Beginn am besten noch einen Blick auf die großartigen Tutorials auf der Ray-Website und starte Deine Entdeckungstour in die Welt von Ray.

 

 

 

Du hast Fragen zur Installation oder den Vorteilen von Ray unter Windows? Ich freue mich darauf, mich mit Dir auszutauschen!

Jetzt Kontakt aufnehmen

 

 

 

 

Dr. Michael Allgöwer
Dr. Michael Allgöwer
Management Consultant
Machine Learning ist Michaels langjährige Spielwiese. Michael ist überzeugt, dass gutes Machine Learning eine Menge Branchenverständnis voraussetzt, und er liebt es, sich dieses Verständnis immer wieder zu erarbeiten. Sein neuestes Lieblingsthema ist Reinforcement Learning.
#MachineLearning #ReinforcementLearning #HumanIntelligence