So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

Ich kenne viele Data Scientists – und bin wahrscheinlich selbst einer –, die an GPU-Rechnern arbeiten, entweder lokal oder virtuell, gehostet in der Cloud, entweder über ein Jupyter Notebook oder eine Python-IDE. In meinen zwei Jahren als KI/ML-Experte habe ich genau das getan: Ich habe die Daten auf einem regulären Server oder einer Workstation vorbereitet und das Training auf einer GPU-VM in Azure ausgeführt.

Natürlich haben wir alle davon gehört Azure Machine Learning — eine dedizierte Cloud-Plattform für maschinelles Lernen. Nach einem ersten Blick auf EinführungsartikelEs scheint, dass Azure ML mehr Probleme schafft als löst. Im oben erwähnten Trainingsbeispiel wird das Training mit Azure ML beispielsweise von einem Jupyter Notebook aus gestartet, während das Trainingsskript selbst als Textdatei in einer der Zellen erstellt und bearbeitet werden kann – ohne Nutzung von Autovervollständigung, Syntaxhervorhebung und anderen Vorteilen einer normalen Entwicklungsumgebung. Aus diesem Grund haben wir Azure ML lange Zeit nicht ernsthaft in unserer Arbeit eingesetzt.

Ich habe jedoch kürzlich eine Möglichkeit entdeckt, Azure ML effektiv in meiner Arbeit einzusetzen! Interessiert an den Details?

So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

Das Hauptgeheimnis ist dies Visual Studio Code-Erweiterung für Azure ML. Sie können Trainingsskripte 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 Klicks zum Training an einen Azure ML-Cluster senden. Praktisch, oder?

Dabei profitieren Sie durch die Verwendung von Azure ML von folgenden Vorteilen:

  • Sie können die meiste Zeit lokal auf Ihrem Rechner in einer praktischen IDE arbeiten und GPU nur für Modelltraining verwendenGleichzeitig kann sich der Pool der Trainingsressourcen automatisch an die erforderliche Auslastung anpassen und durch die Einstellung der Mindestknotenanzahl auf 0 kann die virtuelle Maschine bei anstehenden Trainingsaufgaben automatisch „on demand“ gestartet werden.
  • Sie können alle Lernergebnisse an einem Ort speichern, einschließlich der erreichten Messgrößen und der erhaltenen Modelle – es ist nicht erforderlich, sich ein System oder eine Reihenfolge für die Speicherung aller Ergebnisse auszudenken.
  • In diesem Fall Mehrere Personen können an einem Projekt arbeiten — Sie können denselben Computercluster verwenden, alle Experimente werden in die Warteschlange gestellt und sie können die Ergebnisse der Experimente der anderen einsehen. Ein solches Szenario ist Verwenden von Azure ML beim Unterrichten von Deep Learning, wo Sie, anstatt jedem Schüler eine virtuelle Maschine mit einer GPU zu geben, einen Cluster erstellen können, der von allen zentral genutzt wird. Auch eine gemeinsame Anzeigetafel mit Modellgenauigkeit kann als gutes Wettbewerbselement dienen.
  • Mit Azure ML können Sie problemlos eine Reihe von Experimenten durchführen, wie zum Beispiel Hyperparameteroptimierung – dies kann mit wenigen Codezeilen erledigt werden, es ist nicht notwendig, manuell eine Reihe von Experimenten durchzuführen.

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

Azure ML Workspace und Azure ML Portal

Azure ML basiert auf dem Konzept Arbeitsbereich — Arbeitsbereich. Der Arbeitsbereich kann Daten speichern, Experimente zum Training dorthin senden und die Trainingsergebnisse – die erhaltenen Metriken und Modelle – dort speichern. Sie können den Inhalt des Arbeitsbereichs sehen über Azure ML-Portal – und von dort aus können Sie eine Vielzahl von Vorgängen ausführen, vom Laden von Daten über das Überwachen von Experimenten bis hin zum Bereitstellen von Modellen.

Sie können einen Arbeitsbereich über die Weboberfläche erstellen Azure-Portal (Siehe. Schritt für Schritt Anweisungen) oder mithilfe der 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

Es gibt auch einige im Zusammenhang mit dem Arbeitsbereich Rechenressourcen (Berechnen). Sobald Sie ein Skript zum Trainieren des Modells erstellt haben, können Sie Experiment zur Ausführung senden zum Arbeitsbereich und geben Sie Computeziel — Das Skript wird verpackt, in der erforderlichen Computerumgebung gestartet und anschließend werden alle Ergebnisse des Experiments zur weiteren Analyse und Verwendung im Arbeitsbereich gespeichert.

Trainingsskript für MNIST

Betrachten wir ein klassisches Problem handschriftliche Ziffernerkennung mithilfe des MNIST-Datensatzes. Ebenso können Sie jedes Ihrer Trainingsskripte weiter ausführen.

Es gibt ein Skript in unserem Repository 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 zur Lösung des Problems ist – wir verwenden es für das Beispiel als den einfachsten.

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

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.

Ausführen des Skripts in Azure ML

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

  • Starten Sie das Training auf einer beliebigen Rechenressource, die in der Regel produktiver ist als ein lokaler Computer. In diesem Fall 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 es zur Ausführung zu senden.
  • Die Ergebnisse werden in ein einzelnes Register im Azure ML-Arbeitsbereich geschrieben. 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 heißt train_universal.py (es ist etwas geschickter gestaltet als oben beschrieben, aber nicht viel). Dieses Skript kann sowohl lokal als auch auf einer Remote-Computerressource ausgeführt werden.

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

  1. Stellen Sie sicher, dass die Azure-Erweiterung mit Ihrem Abonnement verbunden ist. Wählen Sie im linken Menü das Azure-Symbol aus. Wenn keine Verbindung besteht, wird in der unteren rechten Ecke eine Benachrichtigung angezeigt (so was), indem Sie darauf klicken, können Sie sich über den Browser anmelden. Sie können auch auf Strg-Umschalt-P um die VS Code-Befehlszeile zu öffnen, und geben Sie Azure-Anmeldung.

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

So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning
Hier sollten Sie verschiedene Objektgruppen innerhalb des Arbeitsbereichs 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 Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

  1. Daraufhin werden Ihnen im VS Code-Eingabeaufforderungsbereich eine Reihe von Dialogen angezeigt: Bestätigen Sie das von Ihnen verwendete Azure ML-Abonnement und den Arbeitsbereich und wählen Sie Erstellen eines neuen Experiments:

So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning
So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning
So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

  1. Wählen Sie diese Option, um eine neue Computerressource zu erstellen Neuen Computer erstellen:

    • Berechnen Definiert die Rechenressource, auf der das Training stattfinden soll. Sie können einen lokalen Computer oder einen Cloud-AmlCompute-Cluster wählen. Ich empfehle die Erstellung eines skalierbaren Maschinenclusters. STANDARD_DS3_v2, mit mindestens 0 Maschinen (und maximal 1 oder mehr, je nach Bedarf). Dies kann über die VS Code-Oberfläche oder im Voraus über ML-Portal.

    So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

  2. Als nächstes müssen Sie die Konfiguration auswählen Compute-Konfiguration, das die Parameter des für das Training erstellten Containers definiert, insbesondere alle erforderlichen Bibliotheken. Da wir Scikit Learn verwenden, wählen wir in unserem Fall SkLearnund bestätigen Sie die vorgeschlagene Bibliotheksliste anschließend einfach mit der Eingabetaste. Sollten Sie weitere Bibliotheken verwenden, müssen diese hier angegeben werden.

    So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning
    So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

  3. Anschließend öffnet sich ein Fenster mit einer JSON-Datei, 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 Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

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

So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning
Du findest es immer noch im Abschnitt „Später“. Experimente Azure ML-Portaloder im Abschnitt Azure Machine Learning in der Liste der Experimente:

So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning

  1. Wenn Sie danach Korrekturen am Code vorgenommen oder die Parameter geändert haben, ist die erneute Ausführung des Experiments deutlich schneller und einfacher. Wenn Sie mit der rechten Maustaste auf die Datei klicken, wird ein neuer Menüpunkt angezeigt. Letzten Lauf wiederholen - einfach auswählen und das Experiment wird sofort gestartet:

So überwinden Sie Ihre Angst und beginnen mit der Nutzung von Azure Machine Learning
Sie können die Metrikergebnisse aller Läufe immer im Azure ML-Portal finden, es ist nicht erforderlich, sie aufzuzeichnen.

Jetzt wissen Sie, dass das Durchführen von Experimenten mit Azure ML einfach und problemlos ist und dass Sie dabei einige nette Vorteile erhalten.

Möglicherweise sind Ihnen jedoch einige Nachteile aufgefallen. Beispielsweise dauerte die Ausführung des Skripts deutlich länger. Natürlich dauert es Zeit, das Skript in einen Container zu packen und auf dem Server bereitzustellen. Würde der Cluster auf 0 Knoten reduziert, würde der Start der virtuellen Maschine noch länger dauern. All dies macht sich deutlich bemerkbar, wenn wir mit einfachen Problemen wie MNIST experimentieren, die in wenigen Sekunden gelöst werden können. In der Praxis jedoch, wenn das Training Stunden, Tage oder Wochen dauert, ist dieser Zeitaufwand unbedeutend, insbesondere im Vergleich zur deutlich höheren Leistung, die ein Rechencluster bieten kann.

Was kommt als nächstes?

Ich hoffe, dass Sie nach der Lektüre dieses Artikels Azure ML in Ihrer Arbeit nutzen können und werden, um Skripte auszuführen, Rechenressourcen zu verwalten und Ergebnisse zu zentralisieren. Azure ML bietet Ihnen jedoch noch weitere Vorteile!

Sie können Daten in Ihrem Arbeitsbereich speichern und so ein zentrales, leicht zugängliches Repository für alle Ihre Aufgaben erstellen. Sie können Experimente auch nicht über Visual Studio Code, sondern über die API ausführen – dies ist besonders nützlich, wenn Sie Hyperparameteroptimierungen durchführen und das Skript mehrmals mit unterschiedlichen Parametern ausführen müssen. Darüber hinaus verfügt Azure ML über eine spezielle integrierte Technologie. Hyperantrieb, was eine anspruchsvollere Suche und Optimierung von Hyperparametern ermöglicht. Ich werde in meinem nächsten Beitrag auf diese Funktionen eingehen.

Nützliche Ressourcen

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

Source: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster