So überwinden Sie Ängste und beginnen mit der Verwendung von Azure Machine Learning

Ich kenne viele Data Scientists - und wahrscheinlich bin ich mit ihnen selbst verwandt -, die auf Computern mit lokalen oder virtuellen GPUs arbeiten, die sich in der Cloud befinden, entweder über das Jupyter Notebook oder über eine Python-Entwicklungsumgebung. Ich habe 2 Jahre als AI / ML-Entwicklungsexperte gearbeitet und dabei die Daten auf einem regulären Server oder einer Workstation aufbereitet. Anschließend habe ich mit einer GPU in Azure auf einer virtuellen Maschine trainiert.


Natürlich haben wir alle von Azure Machine Learning gehört - einer speziellen cloudbasierten Plattform für maschinelles Lernen. Nach einem ersten Blick auf die einleitenden Artikel scheint Azure ML jedoch mehr Probleme für Sie zu schaffen als zu lösen. In dem oben erwähnten Trainingsbeispiel wird das Azure ML-Training beispielsweise über das Jupyter-Notizbuch gestartet, während vorgeschlagen wird, dass das Trainingsskript selbst als Textdatei in einer der Zellen erstellt und bearbeitet wird - ohne die automatische Vervollständigung, Syntaxhervorhebung und andere Vorteile einer normalen Entwicklungsumgebung. Aus diesem Grund setzen wir Azure ML seit langem nicht mehr ernsthaft in unserer Arbeit ein.


Vor kurzem habe ich jedoch eine Möglichkeit gefunden, Azure ML in meiner Arbeit effektiv einzusetzen. Interessante Details?



Das Hauptgeheimnis ist die Visual Studio Code-Erweiterung für Azure ML . Sie können Schulungsskripte direkt in VS Code entwickeln und dabei alle Vorteile der Umgebung nutzen. Sie können das Skript sogar lokal ausführen und es dann mit wenigen Mausklicks zum Training im Azure ML-Cluster senden. Praktisch, nicht wahr?


Auf diese Weise erhalten Sie die folgenden Vorteile von Azure ML:


  • Sie können die meiste Zeit lokal auf Ihrem Computer in einer praktischen IDE arbeiten und die GPU nur zum Trainieren des Modells verwenden . Gleichzeitig kann sich der Pool der Schulungsressourcen automatisch an die erforderliche Last anpassen. Wenn Sie die Mindestanzahl der Knoten auf 0 setzen, können Sie die virtuelle Maschine bei Vorhandensein von Schulungsaufgaben automatisch "on demand" starten.
  • Sie können alle Lernergebnisse an einem Ort speichern , einschließlich der erzielten Metriken und der daraus resultierenden Modelle. Es ist nicht erforderlich, ein System oder eine Prozedur zum Speichern aller Ergebnisse zu erfinden.
  • Gleichzeitig können mehrere Personen an einem Projekt arbeiten - sie können denselben Computercluster verwenden, alle Experimente werden in einer Reihe aufgeführt und sie können auch die Ergebnisse der Experimente des jeweils anderen sehen. Ein solches Szenario ist die Verwendung von Azure ML beim Unterrichten von Deep Learning . Anstatt jedem Schüler eine virtuelle Maschine mit einer GPU zuzuweisen, können Sie einen Cluster erstellen, den alle zentral verwenden. Darüber hinaus kann eine allgemeine Ergebnistabelle mit Modellgenauigkeit als gutes Wettbewerbselement dienen.
  • Mit Azure ML können Sie auf einfache Weise eine Reihe von Experimenten durchführen, um beispielsweise die Hyperparameter zu optimieren. Dies kann mit wenigen Codezeilen durchgeführt werden. Es ist nicht erforderlich, eine Reihe von Experimenten manuell durchzuführen.

Ich hoffe, ich habe Sie überzeugt, Azure ML auszuprobieren! So fangen Sie an:



Azure ML-Arbeitsbereich und Azure ML-Portal


Azure ML ist nach dem Konzept des Arbeitsbereichs (Workspace) organisiert. Daten können im Arbeitsbereich gespeichert werden, Experimente werden zum Training an diesen gesendet, Lernergebnisse werden am selben Ort gespeichert - den erhaltenen Metriken und Modellen. Über das Azure ML-Portal können Sie sehen, was sich im Arbeitsbereich befindet. Von dort aus können Sie zahlreiche Vorgänge ausführen, von Datenladen über Überwachungsexperimente bis hin zur Modellbereitstellung.


Sie können einen Arbeitsbereich über die Azure Portal -Weboberfläche (siehe schrittweise Anweisungen ) oder über die Azure CLI-Befehlszeile ( Anweisungen ) erstellen:


az extension add -n azure-cli-ml az group create -n myazml -l northeurope az ml workspace create -w myworkspace -g myazml 

Es gibt auch einige Computerressourcen, die dem Arbeitsbereich zugeordnet sind. Nachdem Sie ein Skript zum Trainieren des Modells erstellt haben, können Sie das Experiment an den Arbeitsbereich senden und das Berechnungsziel angeben. Dadurch wird das Skript gepackt, in der gewünschten Computerumgebung ausgeführt und alle Ergebnisse des Experiments werden im Arbeitsbereich zur weiteren Analyse und Verwendung gespeichert.


Schulungsskript für MNIST


Betrachten Sie das klassische Problem der Handschrifterkennung anhand des MNIST-Datensatzes. Ebenso können Sie in Zukunft jedes Ihrer Trainingsskripte ausführen.


Unser Repository verfügt über ein Skript train_local.py , das train_local.py einfachste lineare Regressionsmodell mithilfe der SkLearn-Bibliothek trainiert. Ich verstehe natürlich, dass dies nicht der beste Weg ist, um das Problem zu lösen - wir verwenden es als Beispiel, als den einfachsten.


Das Skript lädt zuerst die MNIST-Daten von OpenML herunter und verwendet dann die LogisticRegression Klasse, um das Modell zu trainieren. Anschließend wird die resultierende Genauigkeit ausgegeben:


 mnist = fetch_openml('mnist_784') mnist['target'] = np.array([int(x) for x in mnist['target']]) shuffle_index = np.random.permutation(len(mist['data'])) X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42) lr = LogisticRegression() lr.fit(X_train, y_train) y_hat = lr.predict(X_test) acc = np.average(np.int32(y_hat == y_test)) print('Overall accuracy:', acc) 

Sie können das Skript auf Ihrem Computer ausführen und in wenigen Sekunden erhalten Sie das Ergebnis.


Führen Sie das Skript in Azure ML aus


Wenn wir das Skript für das Training über Azure ML ausführen, haben wir zwei Hauptvorteile:


  • Starten des Trainings auf einer beliebigen Computerressource, die in der Regel produktiver ist als ein lokaler Computer. Gleichzeitig packt Azure ML unser Skript mit allen Dateien aus dem aktuellen Verzeichnis in den Docker-Container, installiert die erforderlichen Abhängigkeiten und sendet es zur Ausführung.
  • Erfassen Sie die Ergebnisse in einer einzelnen Registrierung im Azure ML-Arbeitsbereich. Um diese Gelegenheit zu nutzen, müssen wir unserem Skript einige Codezeilen hinzufügen, um die resultierende Genauigkeit aufzuzeichnen:

 from azureml.core.run import Run ... try: run = Run.get_submitted_run() run.log('accuracy', acc) except: pass 

Die entsprechende Version des Skripts heißt train_universal.py (es ist etwas train_universal.py als die oben beschriebene, aber nicht viel). Dieses Skript kann sowohl lokal als auch auf einer Remote-Computerressource ausgeführt werden.


Führen Sie die folgenden Schritte aus, um es in Azure ML über VS Code auszuführen:


  1. Stellen Sie sicher, dass die Azure-Erweiterung mit Ihrem Abonnement verbunden ist. Wählen Sie das Azure-Symbol im Menü auf der linken Seite. Wenn Sie nicht verbunden sind, wird in der unteren rechten Ecke ( diese ) eine Benachrichtigung angezeigt, auf die Sie über den Browser klicken können. Sie können auch Strg-Umschalt-P drücken, um die VS Code-Befehlszeile aufzurufen, und Azure Sign In eingeben .


  2. Danach finden Sie im Azure-Bereich (Symbol links) den Bereich MASCHINENLERNEN :



Azure ML-Arbeitsbereich in VS-Code
Hier sollten Sie verschiedene Gruppen von Objekten im Arbeitsbereich sehen: Rechenressourcen, Experimente usw.


  1. train_universal.py Sie zur Dateiliste, klicken Sie mit der rechten train_universal.py auf das Skript train_universal.py und wählen Sie Azure ML: Als train_universal.py in Azure train_universal.py .

Azure ML-Arbeitsbereich in VS-Code


  1. Daraufhin wird im Befehlszeilenbereich von VS Code eine Reihe von Dialogfeldern angezeigt: Bestätigen Sie das verwendete Abonnement und den Azure ML-Arbeitsbereich, und wählen Sie außerdem Neuen Test erstellen aus :

Azure ML-Arbeitsbereich in VS-Code
Azure ML-Arbeitsbereich in VS-Code
Azure ML-Arbeitsbereich in VS-Code


  1. Wählen Sie Create New Compute :


    • Compute definiert die Rechenressource, auf der das Training stattfinden soll. Sie können einen lokalen Computer oder einen AmlCompute-Cloud-Cluster auswählen. Ich empfehle, ein skalierbares Cluster von Maschinen STANDARD_DS3_v2 mit einer Mindestanzahl von Maschinen 0 zu erstellen (und das Maximum kann je nach Appetit 1 oder mehr betragen). Dies kann über die VS-Code-Schnittstelle oder zuvor über das ML-Portal erfolgen .

    Azure ML-Arbeitsbereich in VS-Code


  2. Als Nächstes müssen Sie die Compute Configuration- Konfiguration auswählen, die die Parameter des für das Training erstellten Containers bestimmt, insbesondere alle erforderlichen Bibliotheken. Da wir in unserem Fall Scikit Learn verwenden, wählen Sie SkLearn und bestätigen Sie die vorgeschlagene Liste der Bibliotheken einfach mit der Eingabetaste. Wenn Sie zusätzliche Bibliotheken verwenden, müssen Sie diese hier angeben.


    Azure ML-Arbeitsbereich in VS-Code
    Azure ML-Arbeitsbereich in VS-Code


  3. Danach öffnet sich ein Fenster mit einer JSON-Datei, die das Experiment beschreibt. Darin können Sie einige Parameter festlegen, z. B. den Namen des Experiments. Klicken Sie anschließend direkt in dieser Datei auf den Link " Test einreichen":



Azure ML-Arbeitsbereich in VS-Code


  1. Nach dem erfolgreichen Senden des Tests über VS-Code wird rechts im Infobereich ein Link zum Azure ML-Portal angezeigt , über den Sie den Status und die Ergebnisse des Tests verfolgen können.

Azure ML-Testergebnis im Azure ML-Portal
Anschließend finden Sie es immer im Abschnitt " Azure ML-Portal für Experimente" oder im Abschnitt " Azure Machine Learning " in der Liste der Experimente:


Azure ML-Arbeitsbereich in VS-Code


  1. Wenn Sie danach einige Korrekturen am Code vorgenommen oder die Parameter geändert haben, ist der Neustart des Experiments viel schneller und einfacher. Wenn Sie mit der rechten Maustaste auf die Datei klicken, wird ein neuer Menüpunkt angezeigt. Letzten Lauf wiederholen - wählen Sie ihn einfach aus und der Test wird sofort gestartet:

Azure ML-Arbeitsbereich in VS-Code
Sie können die Ergebnisse von Metriken aus allen Starts immer im Azure ML-Portal finden. Es ist nicht erforderlich, sie aufzuzeichnen.


Jetzt wissen Sie, dass das Ausführen von Experimenten mit Azure ML einfach und schmerzlos ist und Sie eine Reihe von Vorteilen erhalten.


Aber Sie haben vielleicht Fehler bemerkt. Beispielsweise dauerte die Ausführung des Skripts erheblich länger. Natürlich braucht es Zeit, um das Skript in einen Container zu packen und auf dem Server bereitzustellen. Wenn der Cluster gleichzeitig auf eine Größe von 0 Knoten verkleinert wurde, wird der Start der virtuellen Maschine noch länger dauern. Dies wird besonders deutlich, wenn wir mit einfachen Aufgaben wie MNIST experimentieren, die in wenigen Sekunden gelöst werden. Im wirklichen Leben, wenn das Training mehrere Stunden oder sogar Tage oder Wochen dauert, wird diese zusätzliche Zeit jedoch unbedeutend, insbesondere vor dem Hintergrund der viel höheren Leistung, die ein Computercluster bieten kann.


Was weiter?


Ich hoffe, dass Sie nach dem Lesen dieses Artikels Azure ML in Ihrer Arbeit verwenden können, um Skripts auszuführen, Computerressourcen zu verwalten und die Ergebnisse zentral zu speichern. Azure ML bietet Ihnen jedoch noch mehr Vorteile!


Im Arbeitsbereich können Sie Daten speichern und so ein zentrales Repository für alle Ihre Aufgaben erstellen, auf das Sie einfach zugreifen können. Darüber hinaus können Sie Experimente nicht über Visual Studio Code, sondern über die API ausführen. Dies ist besonders hilfreich, wenn Sie Hyperparameter optimieren und das Skript mehrmals mit verschiedenen Parametern ausführen müssen. Darüber hinaus ist in Azure ML eine spezielle Hyperdrive- Technologie integriert , mit der Sie geschickter nach Hyperparametern suchen und diese optimieren können. Ich werde in meinem nächsten Artikel über diese Funktionen sprechen.


Nützliche Ressourcen


Für eine eingehendere Untersuchung von Azure ML können die folgenden Microsoft Learn-Kurse hilfreich sein:


Source: https://habr.com/ru/post/de485338/


All Articles