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 — eine dedizierte Cloud-Plattform für maschinelles Lernen. Nach einem ersten Blick auf Es 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?

Das Hauptgeheimnis ist dies . 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:
- Stellen Sie sicher, dass Sie es installiert haben sowie Erweiterungen и
- Klonen Sie das Repository – es enthält Democode zum Trainieren eines Modells zur Erkennung handschriftlicher Ziffern auf dem MNIST-Datensatz.
- Öffnen Sie das geklonte Repository in Visual Studio Code.
- Weiter lesen!
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 – 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 (Siehe. ) oder mithilfe der Azure CLI-Befehlszeile ():
az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazmlEs 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 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:
passDie 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:
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 (), 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.
Suchen Sie anschließend im Abschnitt Azure (Symbol links) den Abschnitt MASCHINELLES LERNEN:

Hier sollten Sie verschiedene Objektgruppen innerhalb des Arbeitsbereichs sehen: Rechenressourcen, Experimente usw.
- Gehen Sie zur Dateiliste und klicken Sie mit der rechten Maustaste auf das Skript
train_universal.pyund dann Azure ML: Als Experiment in Azure ausführen.

- 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:



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 .

- 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.
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.


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:

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

Du findest es immer noch im Abschnitt „Später“. Experimente oder im Abschnitt Azure Machine Learning in der Liste der Experimente:

- 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:

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. , 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



