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

Ich kenne viele Datenwissenschaftler – und ich bin wahrscheinlich selbst einer von ihnen –, die an lokalen oder virtuellen GPU-Maschinen arbeiten, die sich in der Cloud befinden, entweder über ein Jupyter-Notebook oder über eine Art Python-Entwicklungsumgebung. Während meiner zweijährigen Tätigkeit als erfahrener KI/ML-Entwickler habe ich genau das getan, während ich Daten auf einem normalen Server oder einer Workstation vorbereitete und Schulungen auf einer virtuellen Maschine mit einer GPU in Azure durchführte.

Natürlich haben wir alle davon gehört Azure Machine Learning — eine spezielle Cloud-Plattform für maschinelles Lernen. Doch nach einem ersten Blick auf Einführungsartikel, es scheint, dass Azure ML Ihnen mehr Probleme bereiten als lösen wird. Im oben genannten Tutorial wird beispielsweise das Training zu Azure ML von einem Jupyter-Notebook aus gestartet, während vorgeschlagen wird, das Trainingsskript selbst als Textdatei in einer der Zellen zu erstellen und zu bearbeiten – ohne die Syntax der automatischen Vervollständigung zu verwenden Hervorhebung und andere Vorteile einer normalen Entwicklungsumgebung. Aus diesem Grund nutzen wir Azure ML schon lange nicht mehr ernsthaft in unserer Arbeit.

Allerdings habe ich kürzlich eine Möglichkeit entdeckt, Azure ML effektiv in meiner Arbeit zu nutzen! Interessiert an den Details?

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

Das Hauptgeheimnis ist Visual Studio Code-Erweiterung für Azure ML. Damit können Sie Trainingsskripte direkt in VS Code entwickeln und dabei die Umgebung optimal nutzen – und Sie können das Skript sogar lokal ausführen und es dann einfach mit wenigen Klicks an das Training in einem Azure ML-Cluster senden. Praktisch, nicht wahr?

Dabei profitieren Sie durch den Einsatz von Azure ML von folgenden Vorteilen:

  • Sie können die meiste Zeit lokal auf Ihrem Computer in einer praktischen IDE arbeiten Verwenden Sie die GPU nur für das Modelltraining. Gleichzeitig kann sich der Pool an Trainingsressourcen automatisch an die erforderliche Auslastung anpassen, und indem Sie die Mindestanzahl der Knoten auf 0 setzen, können Sie die virtuelle Maschine automatisch „auf Abruf“ starten, wenn Trainingsaufgaben vorliegen.
  • Sie können Speichern Sie alle Lernergebnisse an einem Ort, einschließlich der erreichten Metriken und der daraus resultierenden Modelle – es ist nicht erforderlich, ein System oder eine Reihenfolge zur Speicherung aller Ergebnisse zu entwickeln.
  • In diesem Fall Es können mehrere Personen am selben Projekt arbeiten - Sie können denselben Computercluster verwenden, alle Experimente werden in die Warteschlange gestellt und sie können auch die Ergebnisse der Experimente der anderen sehen. Ein solches Szenario ist Verwendung von Azure ML beim Unterrichten von Deep LearningWenn Sie nicht jedem Schüler eine virtuelle Maschine mit einer GPU zur Verfügung stellen, können Sie einen Cluster erstellen, der von allen zentral genutzt wird. Darüber hinaus kann eine allgemeine Ergebnistabelle mit Modellgenauigkeit als gutes Wettbewerbselement dienen.
  • Mit Azure ML können Sie problemlos eine Reihe von Experimenten durchführen, z Hyperparameteroptimierung - 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 Workspace und Azure ML Portal

Azure ML ist rund um das Konzept organisiert Arbeitsplatz – Arbeitsbereich. Daten können im Arbeitsbereich gespeichert werden, Experimente werden zum Training dorthin gesendet, auch Trainingsergebnisse werden dort gespeichert – die daraus resultierenden Metriken und Modelle. Sie können sehen, was sich im Arbeitsbereich befindet Azure ML-Portal – und von dort aus können Sie viele Vorgänge ausführen, vom Laden von Daten über die Überwachung von Experimenten bis hin zur Bereitstellung von Modellen.

Sie können über die Weboberfläche einen Arbeitsbereich erstellen Azure-Portal (Siehe. Schritt für Schritt Anweisungen) oder über die Azure CLI-Befehlszeile (Anleitung):

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

Mit dem Arbeitsbereich sind auch einige verbunden Rechenressourcen (Berechnen). Sobald Sie ein Skript zum Trainieren des Modells erstellt haben, können Sie dies tun Experiment zur Ausführung senden zum Arbeitsbereich hinzufügen und angeben Ziel berechnen - In diesem Fall wird das Skript gepackt, in der gewünschten Computerumgebung ausgeführt und anschließend werden alle Ergebnisse des Experiments zur weiteren Analyse und Verwendung im Arbeitsbereich gespeichert.

Lernskript für MNIST

Betrachten Sie das klassische Problem handschriftliche Ziffernerkennung unter Verwendung des MNIST-Datensatzes. Ebenso können Sie in Zukunft jedes Ihrer Trainingsskripte ausführen.

In unserem Repository befindet sich ein Skript train_local.py, mit dem wir das einfachste lineare Regressionsmodell mithilfe der SkLearn-Bibliothek trainieren. Natürlich verstehe ich, dass dies nicht der beste Weg ist, das Problem zu lösen – wir verwenden ihn als Beispiel, da er der einfachste ist.

Das Skript lädt zunächst die MNIST-Daten von OpenML herunter und verwendet dann die Klasse LogisticRegression um das Modell zu trainieren und dann die resultierende Genauigkeit auszudrucken:

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 erhalten das Ergebnis in wenigen Sekunden.

Führen Sie das Skript in Azure ML aus

Wenn wir das Trainingsskript über Azure ML ausführen, haben wir zwei Hauptvorteile:

  • Ausführen des Trainings auf einer beliebigen Rechenressource, die in der Regel produktiver ist als der lokale Computer. Gleichzeitig kümmert sich Azure ML selbst darum, unser Skript mit allen Dateien aus dem aktuellen Verzeichnis in einen Docker-Container zu packen, die erforderlichen Abhängigkeiten zu installieren und zur Ausführung zu senden.
  • Schreiben Sie Ergebnisse in eine einzelne Registrierung innerhalb eines Azure ML-Arbeitsbereichs. Um diese Funktion nutzen zu können, 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 wird aufgerufen train_universal.py (Es ist etwas raffinierter als oben geschrieben, aber nicht viel). Dieses Skript kann sowohl lokal als auch auf einer Remote-Rechnerressource ausgeführt werden.

Um es in Azure ML aus VS Code auszuführen, müssen Sie Folgendes tun:

  1. Stellen Sie sicher, dass die Azure-Erweiterung mit Ihrem Abonnement verbunden ist. Wählen Sie im Menü links das Azure-Symbol aus. Wenn Sie nicht verbunden sind, wird in der unteren rechten Ecke eine Benachrichtigung angezeigt (so was), durch Anklicken können Sie diese über den Browser eingeben. Sie können auch klicken Strg-Umschalt-P um die VS-Code-Befehlszeile aufzurufen und einzugeben Azure-Anmeldung.

  2. Suchen Sie anschließend im Abschnitt „Azure“ (Symbol links) den Abschnitt MASCHINELLES LERNEN:

So überwinden Sie Ängste und beginnen mit der Nutzung von Azure Machine Learning
Hier sollten Sie verschiedene Gruppen von Objekten im Arbeitsbereich sehen: Rechenressourcen, Experimente usw.

  1. Gehen Sie zur Dateiliste und klicken Sie mit der rechten Maustaste auf das Skript train_universal.py und dann Azure ML: Als Experiment in Azure ausführen.

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

  1. Darauf folgt eine Reihe von Dialogen im Befehlszeilenbereich von VS Code: Bestätigen Sie das von Ihnen verwendete Abonnement und den Azure ML-Arbeitsbereich und wählen Sie aus Neues Experiment erstellen:

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

  1. Wählen Sie die Option zum Erstellen einer neuen Rechenressource Neues Computing erstellen:

    • Berechnen bestimmt die Rechenressource, auf der das Training stattfindet. Sie können einen lokalen Computer oder einen AmlCompute-Cloud-Cluster wählen. Ich empfehle die Erstellung eines skalierbaren Maschinenclusters STANDARD_DS3_v2, mit einer Mindestanzahl von 0 Maschinen (und einem Maximum von 1 oder mehr, je nach Ihrem Appetit). Dies kann über die VS Code-Schnittstelle oder zuvor über erfolgen ML-Portal.

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

  2. Als nächstes müssen Sie eine Konfiguration auswählen Compute-Konfiguration, das die Parameter des für das Training erstellten Containers definiert, insbesondere alle erforderlichen Bibliotheken. Da wir in unserem Fall Scikit Learn verwenden, wählen wir aus SkLearn, und bestätigen Sie dann einfach die vorgeschlagene Liste der Bibliotheken, indem Sie die Eingabetaste drücken. Sollten Sie weitere Bibliotheken nutzen, müssen diese hier angegeben werden.

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

  3. Dadurch wird ein Fenster mit einer JSON-Datei geöffnet, die das Experiment beschreibt. Darin können Sie einige Parameter korrigieren – zum Beispiel den Namen des Experiments. Klicken Sie anschließend auf den Link Experiment einreichen direkt in dieser Datei:

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

  1. Nachdem Sie ein Experiment erfolgreich über VS Code übermittelt haben, sehen Sie auf der rechten Seite des Benachrichtigungsbereichs einen Link zu Azure ML-Portal, wo Sie den Status und die Ergebnisse des Experiments verfolgen können.

So überwinden Sie Ängste und beginnen mit der Nutzung von Azure Machine Learning
Anschließend können Sie es jederzeit in der Rubrik finden Experimente Azure ML-Portal, oder im Abschnitt Azure Machine Learning in der Liste der Experimente:

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

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

So überwinden Sie Ängste und beginnen mit der Nutzung von Azure Machine Learning
Sie können die Ergebnisse der Metriken aller Starts immer im Azure ML-Portal finden, es ist nicht nötig, sie aufzuschreiben.

Jetzt wissen Sie, dass die Durchführung von Experimenten mit Azure ML einfach und schmerzlos ist und dass Sie dadurch eine Reihe netter Vorteile erhalten.

Man sieht aber auch die Nachteile. Beispielsweise dauerte die Ausführung des Skripts deutlich länger. Natürlich dauert es einige Zeit, das Skript in einen Container zu packen und auf dem Server bereitzustellen. Wenn gleichzeitig der Cluster auf eine Größe von 0 Knoten reduziert wurde, dauert es noch länger, die virtuelle Maschine zu starten, und das alles macht sich deutlich bemerkbar, wenn wir mit einfachen Aufgaben wie MNIST experimentieren, die in wenigen Sekunden gelöst werden . Im wirklichen Leben, wenn das Training jedoch mehrere Stunden oder sogar Tage oder Wochen dauert, wird diese zusätzliche Zeit unbedeutend, insbesondere vor dem Hintergrund der viel höheren Leistung, die ein Rechencluster bieten kann.

Was kommt als nächstes?

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

Innerhalb des Arbeitsbereichs können Sie Daten speichern und so ein zentrales Repository für alle Ihre Aufgaben erstellen, auf das Sie leicht zugreifen können. Darüber hinaus können Sie Experimente nicht über Visual Studio Code, sondern über die API ausführen. Dies kann besonders nützlich sein, wenn Sie eine Hyperparameteroptimierung durchführen und das Skript viele Male mit unterschiedlichen Parametern ausführen müssen. Darüber hinaus ist in Azure ML eine spezielle Technologie integriert Hyperantrieb, was Ihnen eine kompliziertere Suche und Optimierung von Hyperparametern ermöglicht. Über diese Möglichkeiten werde ich in meinem nächsten Beitrag sprechen.

Nützliche Ressourcen

Um mehr über Azure ML zu erfahren, könnten die folgenden Microsoft Learn-Kurse hilfreich sein:

Source: habr.com

Kommentar hinzufügen