In diesem Artikel wird die verteilte Hyperparameteroptimierung für Python-Machine Learning-Modelle beschrieben. Hyperparameter sind anpassbare Parameter, die das Training von Machine Learning-Modellen steuern. Die Leistung von Machine Learning-Modellen hängt stark von den Hyperparametern ab.
Bei der Hyperparameteroptimierung geht es darum, die Hyperparameterkonfigurationen zu finden, die beim Training des Modells die beste Leistung erzielen. Azure Machine Learning kann dazu beitragen, die Optimierung der Hyperparameter zu automatisieren und zu verteilen.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Workflow
Das Machine Learning-Ökosystem erfasst Daten aus Azure Data Lake Storage.
Mit Python oder YAML können Sätze von Hyperparametern konfiguriert werden.
Bei der verteilten Hyperparameteroptimierung werden Modellinstanzen auf mehreren CPUs und GPUs trainiert, um das leistungsstärkste Modell zu ermitteln.
Eine Azure Container Registry-Modellregistrierung speichert die trainierten Modelle. Durch die Registrierung der Modelle in der Modellregistrierung lassen sich diese leicht organisieren und nachverfolgen.
Das leistungsstärkste Modell wird bei Machine Learning registriert und über die von Machine Learning verwalteten Endpunkte bereitgestellt.
Azure Cosmos DB speichert das Modell, damit es durch die Web- oder mobile Anwendung genutzt werden kann.
Azure Monitor überwacht und protokolliert Aktivitäten im gesamten Prozess.
Komponenten
Azure Data Lake Storage bietet einen hochgradig skalierbaren und sicheren Data Lake für Hochleistungs-Analyseworkloads.
Microsoft Data Science Virtual Machine (DSVM) stellt VM-Images für Windows Server und Linux bereit, die mit Tools für Datenanalyse und maschinelles Lernen konfiguriert sind. Die Szenarien in diesem Artikel verwenden DSVM-Instanzen für Ubuntu Linux.
Azure Machine Learning trainiert, testet, implementiert, automatisiert und verwaltet Machine Learning- und KI-Modelle auf Cloudebene. Machine Learning Compute weist nach Bedarf und basierend auf einer Option für die automatische Skalierung Knoten als Computeziele zu. Jeder Computeknoten ist eine VM, die einen Trainingsauftrag für einen bestimmten Hyperparametersatz ausführt.
Azure Container Registry speichert Images für Docker-Containerbereitstellungen. Bei dieser Workload führen Container auf jedem Computeknoten Python-Trainingsskripts aus, die sie aus Container Registry abrufen.
Azure Cosmos DB ist eine vollständig verwaltete, serverlose NoSQL-Datenbank für Hochleistungsanwendungen beliebiger Größe und Skalierung.
Azure Monitor erfasst, analysiert und verarbeitet Telemetriedaten aus Azure und lokalen Umgebungen. Azure Monitor trägt dazu bei, die Leistung und Verfügbarkeit von Anwendungen zu maximieren und Probleme proaktiv zu erkennen.
Szenariodetails
Anpassbare Trainingsparameter oder Hyperparameter steuern das Training von Machine Learning-Modellen. Zu den Hyperparametern für neuronale Deep Learning-Netzwerke gehören zum Beispiel die Anzahl der verborgenen Ebenen und die Anzahl der Knoten in jeder Ebene. Es ist wichtig, den Satz von Hyperparametern zu bestimmen, der die beste Leistung beim Training des Modells liefert.
Der Prozess der Abstimmung bzw. Optimierung von Hyperparametern erfolgt in der Regel manuell, ist rechenintensiv und zeitaufwendig. Mit Machine Learning können Sie die Hyperparameteroptimierung automatisieren und parallel Experimente durchführen, um Hyperparameter effizient zu optimieren.
In den folgenden Abschnitten werden Szenarien zur Hyperparameteroptimierung für Scikit-learn- und Deep Learning-Modelle mit Grafikprozessoren (GPUs) beschrieben. Informationen zur Operationalisierung dieser Szenarien finden Sie unter MLOps für Python-Modelle, die Azure Machine Learning verwenden.
Szenario: Abgleich von häufig gestellten Fragen zu Stack Overflow
In diesem Szenario wird eine Scikit-learn-Pipeline für den Abgleich häufig gestellter Fragen (FAQ) optimiert. Das Szenario verwendet eine Teilmenge der Stack Overflow-Fragedaten, die die ursprünglichen Fragen, die zugehörigen doppelten Fragen und Antworten umfasst. Das Modell sagt die Wahrscheinlichkeit vorher, dass eine doppelte Frage einer der ursprünglichen Fragen entspricht. Das Ziel besteht darin, ein Modell zu entwickeln, das Ähnlichkeiten zwischen doppelten Fragen findet.
In diesem Szenario wird das Rastersampling verwendet, eine Technik zur Hyperparameteroptimierung, die auf der Grundlage eines festgelegten Bereichs und Inkrements eine einfache Rastersuche über Werte durchführt. Mit dieser Technik kann der gesamte Suchbereich vollständig durchsucht werden. Das Rastersampling unterstützt diskrete Hyperparameter und die frühzeitige Beendigung von Aufträgen mit geringer Leistung.
Szenario: Fehlmengenerkennung
In diesem Szenario wird ein als Webdienst bereitgestelltes Objekterkennungsmodell optimiert, um vergriffene Produkte in den Regalen eines Geschäfts zu ermitteln. Das Modell nutzt Bilder von mit Produkten gefüllten Regalen, um Leerstände vorherzusagen, und kombiniert Leerstandsvorhersagen mit anderen Informationsquellen, wie z. B. Planogrammen und Datenbanken. Dieses Modell verwendet ein im Rahmen der CC-BY 4.0-Lizenz bereitgestelltes Dataset und deckt nur die Vorhersage von Leerständen ab.
Sie können die Hyperparameteroptimierung in neuronalen Netzwerken verteilen, indem Sie mehrere Sätze von Hyperparametern konfigurieren, z. B. die Anzahl der verborgenen Ebenen und die Lernrate, und diese parallel auf GPU-fähigen Computeclustern ausführen. Weitere Informationen über moderne Algorithmen zur Objekterkennung finden Sie unter A Survey of Modern Deep Learning-based Object Detection Models.
Überlegungen
Diese Überlegungen setzen die Säulen des Azure Well-Architected Framework um, das eine Reihe von Leitprinzipien enthält, die zur Verbesserung der Qualität eines Workloads verwendet werden können. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.
Sicherheit
Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.
Implementieren Sie die folgenden Verfahren, um die Sicherheit von Machine Learning in Azure zu verbessern:
- Einschränken des Zugriffs auf Ressourcen und Vorgänge nach Benutzerkonto oder Gruppen
- Einschränken der eingehenden und ausgehenden Netzwerkkommunikation
- Verschlüsseln von Daten während der Übertragung und im Ruhezustand
- Überprüfen auf Sicherheitsrisiken
- Anwenden und Überwachen von Konfigurationsrichtlinien
Weitere Informationen zur Sicherheit von Machine Learning finden Sie unter Sicherheit und Governance in Unternehmen für Azure Machine Learning.
Kostenoptimierung
Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.
Die Kosten für die Ausführung einer Hyperparameteroptimierung hängen davon ab, welche VM-Größe für Machine Learning Compute gewählt wurde, ob Knoten mit niedriger Priorität verwendet werden und wie viele Knoten im Cluster maximal zulässig sind.
Die laufenden Kosten für einen Cluster im Leerlauf richten sich danach, wie viele Knoten der Cluster mindestens benötigt. Bei der automatischen Clusterskalierung fügt das System bei Bedarf automatisch Knoten bis zur zulässigen Höchstgrenze hinzu und entfernt Knoten bis zur gewünschten Mindestgrenze, wenn sie nicht mehr benötigt werden. Wenn der Cluster automatisch auf 0 Knoten herunterskaliert werden kann, entstehen keine Kosten, wenn er nicht genutzt wird.
Weitere Informationen zu den Kosten für Azure Machine Learning finden Sie unter Planen der Kostenverwaltung für Azure Machine Learning.
Optimaler Betrieb
Die Säule „Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Übersicht über die Säule „Optimaler Betrieb“.
Für diese Workloads kann Azure Monitor Trainings-, Registrierungs- und Bereitstellungsaktivitäten protokollieren. Monitor trägt außerdem dazu bei, Experimente nachzuverfolgen und Protokolle zu analysieren.
Effiziente Leistung
Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen. Weitere Informationen finden Sie unter Übersicht über die Säule „Leistungseffizienz“.
Jeder Satz von Hyperparametern wird auf einem Machine Learning-Computeknoten ausgeführt. Für das Szenario des FAQ-Abgleichs kann es sich bei jedem Knoten um eine Standard_D4_v5-VM handeln, die über vier Kerne verfügt. In diesem Szenario wird ein LightGBM-Klassifizierer verwendet, ein Gradient-Boosting-Framework für maschinelles Lernen. Als Ergebnis wird zur Ausführung der Hyperparameteroptimierung ein Viertel der ursprünglichen Zeit benötigt, um alle Sätze auf einem einzigen Knoten zu durchsuchen. Je nach Anwendungsfall und Datensatz können sich die Computeanforderungen ändern.
Für Deep Learning-Anwendungsfälle wie etwa das Szenario zur Erkennung von Leerständen können Sie GPU-fähige Computeknoten wie z. B. Standard_NC6s_v3 verwenden. Bei jeder Ausführung einer Hyperparameteroptimierung wird eine einzelne GPU auf jeder Standard_NC6s_v3-VM verwendet. Die Computeanforderungen können sich je nach Anwendungsfall ändern.
Das Hinzufügen weiterer Knoten kann zwar die Laufzeit erheblich verkürzen, aber die längeren Startzeiten führen in der Regel zu einem Mehraufwand von mehreren Minuten. Wählen Sie eine Konfiguration mit angemessener Computekapazität aus, um die Laufzeit im Verhältnis zu Kosten pro Einheit und Startzeiten zu minimieren.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautoren:
- Mario Bourgoin | Senior Data Scientist
- Fidan Boylu Uz | Principal D&AS Manager
- Ashish Chauhan | Senior Cloud Solution Architect
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.
Nächste Schritte
- Optimierung der Hyperparameter eines Modells
- Leitfaden zum verteilten GPU-Training
- Microsoft Neural Network Intelligence
- Trainieren und Auswerten von Deep-Learning-Modellen
- Optimieren von Hyperparametern mit Azure Machine Learning