Bereitstellen der Azure Machine Learning-Erweiterung auf Azure Kubernetes Service (AKS) oder einem Azure Arc-fähigen Kubernetes-Cluster

Um Ihren Azure Kubernetes Service (AKS)- oder Azure Arc-aktivierten Kubernetes-Cluster zum Ausführen von Schulungsaufträgen oder Rückschlussarbeitsauslastungen zu aktivieren, stellen Sie zuerst die Azure Machine Learning Erweiterung bereit. Die Azure Machine Learning-Erweiterung ist eine AKS-Standard-Clustererweiterung und eine Clustererweiterung für Azure Arc-fähiges Kubernetes. Sie können den Lebenszyklus mithilfe von Azure CLI k8s-extension verwalten.

In diesem Artikel lernen Sie Folgendes:

  • Voraussetzungen
  • Einschränkungen
  • Überprüfen der Konfigurationseinstellungen der Azure Machine Learning-Erweiterung
  • Szenarien für die Bereitstellung der Azure Machine Learning-Erweiterung
  • Überprüfen der Bereitstellung der Azure Machine Learning-Erweiterung
  • Überprüfen der Komponenten der Azure Machine Learning-Erweiterung
  • Verwalten der Azure Machine Learning-Erweiterung

Voraussetzungen

  • Ein in Azure ausgeführter AKS-Cluster. Wenn Sie zuvor keine Clustererweiterungen verwendet haben, müssen Sie den KubernetesConfiguration-Dienstanbieter registrieren.
  • Oder ein für Azure Arc aktivierter Kubernetes-Cluster, der betriebsbereit ist. Befolgen Sie die Anweisungen in Verbinden eines vorhandenen Kubernetes-Clusters mit Azure Arc.
    • Wenn es sich bei dem Cluster um einen Azure RedHat OpenShift Service (ARO)-Cluster oder einen OpenShift Container Platform (OCP)-Cluster handelt, müssen Sie weitere Voraussetzungen erfüllen, wie im Artikel Referenz für die Konfiguration von Kubernetes-Clustern dokumentiert.
  • Für Produktionszwecke muss der Kubernetes-Cluster über mindestens 4 vCPU-Kerne und 14 GB Arbeitsspeicher verfügen. Weitere Informationen zu Ressourcendetails und Clustergrößenempfehlungen finden Sie unter Empfohlene Ressourcenplanung.
  • Ein Cluster, der hinter einem ausgehenden Proxyserver oder einer Firewall ausgeführt wird, benötigt zusätzliche Netzwerkkonfigurationen.
  • Installieren oder aktualisieren Sie Azure CLI auf Version 2.51.0 oder höher.
  • Installieren Sie die Azure CLI-Erweiterung k8s-extension, oder aktualisieren Sie sie auf Version 1.2.3 oder höher.

Einschränkungen

Überprüfen der Konfigurationseinstellungen der Azure Machine Learning-Erweiterung

Verwenden Sie den befehl Azure CLI az k8s-extension create, um die Azure Machine Learning Erweiterung bereitzustellen. Der az k8s-extension create-Befehl akzeptiert Konfigurationseinstellungen als durch Leerzeichen getrennte key=value-Paare über den Parameter --config oder --config-protected. In der folgenden Tabelle sind die verfügbaren Konfigurationseinstellungen aufgeführt, die Sie während der Bereitstellung angeben können.

Schlüsselname der Konfigurationseinstellung BESCHREIBUNG Ausbildung Rückschluss Training und Rückschluss
enableTraining True oder False, Standard False. Muss für die Bereitstellung der Azure Machine Learning-Erweiterung mit Unterstützung für Machine-Learning-Modelltraining und Batchbewertung auf True festgelegt werden.
enableInference True oder False, Standard False. Muss für die Bereitstellung der Azure Machine Learning-Erweiterung mit Unterstützung für Machine-Learning-Rückschlüssen auf True festgelegt werden.
allowInsecureConnections True oder False, Standard False. Kann für die Verwendung von HTTP-Rückschlussendpunkten oder für Testzwecke auf True festgelegt werden. Wahlfrei Wahlfrei
inferenceRouterServiceType loadBalancer, nodePort oder clusterIP. Erforderlich, wenn enableInference=True.
internalLoadBalancerProvider Diese Konfiguration gilt derzeit nur für Azure Kubernetes Service-Cluster (AKS). Legen Sie sie auf azure fest, um dem Rückschlussrouter die Verwendung eines internen Lastenausgleichs zu ermöglichen. Wahlfrei Wahlfrei
sslSecret Der Name des Kubernetes-Geheimnisses im azureml-Namespace. Diese Konfiguration wird verwendet, um cert.pem (PEM-codiertes TLS/SSL-Zertifikat) und key.pem (PEM-codierter TLS/SSL-Schlüssel) zu speichern, die für die Unterstützung des HTTPS-Endpunkts für Rückschlüsse erforderlich sind, wenn allowInsecureConnections auf False festgelegt ist. Eine YAML-Beispieldefinition von sslSecret finden Sie unter Konfigurieren von sslSecret. Verwenden Sie diese Konfiguration oder eine Kombination aus mittels sslCertPemFile und sslKeyPemFile geschützten Konfigurationseinstellungen. Wahlfrei Wahlfrei
sslCname Ein TLS/SSL-CNAME-Eintrag wird vom HTTPS-Endpunkt für Rückschlüsse verwendet. Erforderlich, wenn allowInsecureConnections=False. Wahlfrei Wahlfrei
inferenceRouterHA True oder False, Standard True. Standardmäßig stellt die Azure Machine Learning-Erweiterung drei Rückschlussrouterreplikate für Hochverfügbarkeit bereit, wofür mindestens drei Workerknoten in einem Cluster erforderlich sind. Legen Sie False fest, wenn Ihr Cluster weniger als drei Workerknoten aufweist. In diesem Fall wird nur ein Rückschlussrouterdienst bereitgestellt. Wahlfrei Wahlfrei
nodeSelector Standardmäßig werden die bereitgestellten Kubernetes-Ressourcen und Ihre Machine Learning-Workloads nach dem Zufallsprinzip auf mindestens einem Knoten im Cluster bereitgestellt, und DaemonSet-Ressourcen werden auf ALLEN Knoten bereitgestellt. Wenn Sie die Bereitstellung der Erweiterung und Ihre Trainings-/Rückschlussworkloads auf bestimmte Knoten mit der Bezeichnung key1=value1 und key2=value2 beschränken möchten, verwenden Sie nodeSelector.key1=value1 und nodeSelector.key2=value2 entsprechend. Wahlfrei Wahlfrei Wahlfrei
installNvidiaDevicePlugin True oder False, Standard False. Das NVIDIA-Geräte-Plug-In ist für ML-Workloads auf NVIDIA GPU-Hardware erforderlich. Standardmäßig wird bei der Bereitstellung der Azure Machine Learning-Erweiterung das NVIDIA-Geräte-Plug-In nicht installiert, unabhängig davon, ob der Kubernetes-Cluster über GPU-Hardware verfügt. Der Benutzer kann für diese Einstellung True angeben, um es zu installieren, muss aber sicherstellen, dass die Voraussetzungen erfüllt sind. Wahlfrei Wahlfrei Wahlfrei
installPromOp True oder False, Standard True. Für die Azure Machine Learning-Erweiterung ist der Prometheus-Operator zum Verwalten von Prometheus erforderlich. Legen Sie diese Einstellung auf False fest, um den vorhandenen Prometheus-Operator wiederzuverwenden. Weitere Informationen zur Wiederverwendung des vorhandenen Prometheus-Operators finden Sie unter Wiederverwendung des Prometheus-Operators Wahlfrei Wahlfrei Wahlfrei
installVolcano True oder False, Standard True. Azure Machine Learning-Erweiterung benötigt „volcano-scheduler“, um den Auftrag zu planen. Legen Sie False fest, um den vorhandenen „volcano-scheduler“ wiederzuverwenden. Weitere Informationen zur Wiederverwendung des vorhandenen Volcano-Zeitplans finden Sie unter Wiederverwendung des Volcano-Zeitplans. Wahlfrei Wahlfrei
installDcgmExporter True oder False, Standard False. „dcgm-exporter“ kann GPU-Metriken für Azure Machine Learning-Workloads verfügbar machen, die im Azure-Portal überwacht werden können. Legen Sie installDcgmExporter auf True fest, um dcgm-exporter zu installieren. Wenn Sie aber Ihren eigenen dcgm-Exporter nutzen möchten, finden Sie Informationen hierzu unter DCGM-Exporter. Wahlfrei Wahlfrei Wahlfrei
Schlüsselname der geschützten Konfigurationseinstellung BESCHREIBUNG Ausbildung Rückschluss Training und Rückschluss
sslCertPemFile, sslKeyPemFile Pfad zum TLS/SSL-Zertifikat und zur Schlüsseldatei (PEM-codiert), die für die Bereitstellung der Azure Machine Learning-Erweiterung mit Unterstützung für Rückschluss-HTTPS-Endpunkte erforderlich sind, wenn allowInsecureConnections auf „False“ festgelegt ist. Hinweis Durch Passphrase geschützte PEM-Dateien werden nicht unterstützt. Wahlfrei Wahlfrei

Wie Sie aus der obigen Tabelle der Konfigurationseinstellungen ersehen können, ermöglichen Ihnen die Kombinationen der verschiedenen Konfigurationseinstellungen die Bereitstellung der Azure Machine Learning-Erweiterung für verschiedene ML-Workloadszenarien:

  • Geben Sie für den Trainingsauftrag und die Batchrückschlussworkload entsprechend enableTraining=True an.
  • Geben Sie nur für Rückschlussworkloads enableInference=True an.
  • Geben Sie für alle Arten von ML-Workloads sowohl enableTraining=True als auch enableInference=True an.

Wenn Sie die Bereitstellung der Azure Machine Learning-Erweiterung für Rückschlussworkloads in Echtzeit planen und enableInference=True angeben möchten, beachten Sie die folgenden Konfigurationseinstellungen für Rückschlussworkloads in Echtzeit:

  • Der azureml-fe-Routerdienst ist für die Unterstützung von Rückschlüssen in Echtzeit erforderlich, und Sie müssen die Konfigurationseinstellung inferenceRouterServiceType für azureml-fe festlegen. azureml-fe kann mit einem der folgenden inferenceRouterServiceType bereitgestellt werden:
    • Geben Sie loadBalancerein. Macht azureml-fe extern über den Lastenausgleich eines Cloudanbieters verfügbar. Um diesen Wert anzugeben, müssen Sie sicherstellen, dass Ihr Cluster die Bereitstellung eines Lastenausgleichs unterstützt. Beachten Sie, dass die meisten lokalen Kubernetes-Cluster möglicherweise keinen externen Lastenausgleich unterstützen.
    • Geben Sie nodePortein. Macht azureml-fe die IP-Adresse jedes Knotens an einem statischen Port verfügbar. Sie können von außerhalb des Clusters aus Kontakt mit azureml-fe aufnehmen, indem Sie <NodeIP>:<NodePort> anfordern. Mit nodePort können Sie außerdem eine eigene Lösung für den Lastenausgleich und den TLS/SSL-Abschluss für azureml-fe einrichten. Weitere Informationen zum Einrichten Ihres eigenen Eingangs finden Sie unter Integrieren eines anderen Eingangscontrollers mit Azure Machine Learning Erweiterung über HTTP oder HTTPS.
    • Geben Sie clusterIPein. Macht azureml-fe für eine clusterinterne IP-Adresse verfügbar und sorgt dafür, dass azureml-fe nur aus dem Cluster erreichbar ist. Damit azureml-fe Rückschlussanforderungen von außerhalb des Clusters bedienen kann, müssen Sie eine eigene Lösung für den Lastenausgleich und den TLS/SSL-Abschluss für azureml-fe einrichten. Weitere Informationen zum Einrichten Ihres eigenen Eingangs finden Sie unter Integrieren eines anderen Eingangscontrollers mit Azure Machine Learning Erweiterung über HTTP oder HTTPS.
  • Um die Hochverfügbarkeit des azureml-fe-Routingdiensts sicherzustellen, werden bei der Bereitstellung der Azure Machine Learning-Erweiterung standardmäßig drei Replikate von azureml-fe für Cluster mit drei oder mehr Knoten erstellt. Wenn Ihr Cluster weniger als 3 Knoten aufweist, legen Sie inferenceRouterHA=False fest.
  • Sie sollten zudem die Verwendung von HTTPS in Betracht ziehen, um den Zugriff auf Modellendpunkte zu beschränken und die von den Clients übermittelten Daten zu schützen. Zu diesem Zweck müssen Sie entweder die Konfigurationseinstellung sslSecret oder eine Kombination aus den konfigurationsgeschützten Einstellungen sslKeyPemFile und sslCertPemFile angeben.
  • Standardmäßig erwartet die Bereitstellung der Azure Machine Learning-Erweiterung Konfigurationseinstellungen für die HTTPS-Unterstützung. Zu Entwicklungs- oder Testzwecken wird die HTTP-Unterstützung benutzerfreundlich über die Konfigurationseinstellung allowInsecureConnections=True unterstützt.

Bereitstellung der Azure Machine Learning-Erweiterung – CLI-Beispiele und das Azure-Portal

Um die Azure Machine Learning Erweiterung mithilfe der CLI bereitzustellen, verwenden Sie den Befehl az k8s-extension create und geben Werte für die obligatorischen Parameter an.

In der folgenden Liste werden vier typische Erweiterungsbereitstellungsszenarien beschrieben. Um die Erweiterung für Ihre Produktionsverwendung bereitzustellen, lesen Sie sorgfältig die vollständige Liste der Konfigurationseinstellungen.

  • Verwenden Sie einen AKS-Cluster in Azure für einen schnellen Proof of Concept, um alle Arten von ML-Workloads auszuführen, beispielsweise um Trainingsaufträge auszuführen oder Modelle als Online-/Batchendpunkte bereitzustellen

    Geben Sie für die Bereitstellung der Azure Machine Learning-Erweiterung im AKS-Cluster den Wert managedClusters für den Parameter --cluster-type an. Führen Sie den folgenden Azure CLI-Befehl aus, um die Azure Machine Learning-Erweiterung bereitzustellen:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=loadBalancer allowInsecureConnections=True inferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Verwenden Sie einen Azure Arc-fähigen Kubernetes-Cluster außerhalb von Azure für einen schnellen Machbarkeitsnachweis, um nur Schulungsaufträge auszuführen

    Geben Sie für die Bereitstellung der Azure Machine Learning-Erweiterung auf einem für Azure Arc aktivierten Kubernetes-Cluster den Wert connectedClusters für den Parameter --cluster-type an. Führen Sie den folgenden Azure CLI-Befehl aus, um die Azure Machine Learning-Erweiterung bereitzustellen:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Aktivieren Sie einen AKS-Cluster in Azure für Produktionsworkloads für Training und Inferenz Geben Sie für die Bereitstellung der Azure Machine Learning-Erweiterung auf AKS den Wert managedClusters für den Parameter --cluster-type an. Es wird vorausgesetzt, dass Ihr Cluster über mehr als drei Knoten verfügt, und Sie einen öffentlichen Azure-Lastenausgleich und HTTPS für die Unterstützung von Rückschlussworkloads verwenden. Führen Sie den folgenden Azure CLI-Befehl aus, um die Azure Machine Learning-Erweiterung bereitzustellen:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=loadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Aktivieren eines Azure Arc-fähigen Kubernetes-Clusters überall für Produktionsschulungen und -ableitungsworkloads mithilfe von NVIDIA GPUs

    Geben Sie für die Bereitstellung der Azure Machine Learning-Erweiterung auf einem Azure Arc-fähigen Kubernetes-Cluster den Wert connectedClusters für den Parameter --cluster-type an. Davon ausgehend, dass Ihr Cluster über mehr als drei Knoten verfügt und Sie den NodePort-Diensttyp und HTTPS für die Unterstützung von Rückschlussworkloads verwenden, führen Sie den folgenden Azure CLI-Befehl aus, um die Azure Machine Learning-Erweiterung bereitzustellen:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=nodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Überprüfen der Bereitstellung der Azure Machine Learning-Erweiterung

  1. Führen Sie den entsprechenden CLI-Befehl aus, um die Details der Azure Machine Learning-Erweiterung zu überprüfen:

    AKS

    az k8s-extension show --name <extension-name> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <resource-group>
    

    Azure Arc-fähiges Kubernetes

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. Suchen Sie in der Antwort nach "name" und "provisioningState": "Succeeded". In den ersten paar Minuten wird möglicherweise "provisioningState": "Pending" angezeigt.

  3. Wenn provisioningState den Wert Succeeded anzeigt, führen Sie den folgenden Befehl auf Ihrem Computer mit der kubeconfig-Datei aus, die auf Ihren Cluster verweist, um zu überprüfen, ob alle Pods im Namespace azureml den Status Running haben:

     kubectl get pods -n azureml
    

Überprüfen der Komponenten der Azure Machine Learning-Erweiterung

Wenn die bereitstellung der Azure Machine Learning Erweiterung abgeschlossen ist, verwenden Sie kubectl get deployments -n azureml, um die Liste der im Cluster erstellten Ressourcen anzuzeigen. Die Liste besteht in der Regel aus einer Teilmenge der folgenden Ressourcen, abhängig von den von Ihnen angegebenen Konfigurationseinstellungen.

Ressourcenname Ressourcentyp Ausbildung Rückschluss Training und Rückschluss BESCHREIBUNG Kommunikation mit der Cloud
relayserver Kubernetes-Bereitstellung Die Bereitstellung erstellt den Relayserver nur für Azure Arc-fähige Kubernetes-Cluster und nicht in AKS-Clustern. Relayserver verwenden Azure Relay für die Kommunikation mit den Clouddiensten. Empfangen der Anforderung zur Auftragserstellung, Modellimplementierung vom Clouddienst, Synchronisieren des Auftragsstatus mit dem Clouddienst.
gateway Kubernetes-Bereitstellung Das Gateway wird für die Kommunikation und die bidirektionale Übertragung von Daten verwendet. Senden von Knoten- und Clusterressourceninformationen an die Azure Machine Learning-Dienste.
aml-operator Kubernetes-Bereitstellung Verwalten des Lebenszyklus von Trainingsaufträgen. Tokenaustausch mit dem Cloudtokendienst für Authentifizierung und Autorisierung von Azure Container Registry.
metrics-controller-manager Kubernetes-Bereitstellung Verwalten der Konfiguration für Prometheus
{EXTENSION-NAME}-kube-state-metrics Kubernetes-Bereitstellung Exportieren von clusterbezogenen Metriken nach Prometheus.
{EXTENSION-NAME}-prometheus-operator Kubernetes-Bereitstellung Wahlfrei Wahlfrei Wahlfrei Bereitstellen der nativen Kubernetes-Bereitstellung und Verwaltung von Prometheus und den zugehörigen Überwachungskomponenten.
amlarc-identity-controller Kubernetes-Bereitstellung Anfordern und Erneuern eines Blob-/Azure Container Registry-Tokens über eine verwaltete Identität. Tokenaustausch mit dem Cloudtokendienst für Authentifizierung und Autorisierung von Azure Container Registry und Azure-Blob, die für Rückschlüsse/Modellimplementierung verwendet werden.
amlarc-identity-proxy Kubernetes-Bereitstellung Anfordern und Erneuern eines Blob-/Azure Container Registry-Tokens über eine verwaltete Identität. Tokenaustausch mit dem Cloudtokendienst für Authentifizierung und Autorisierung von Azure Container Registry und Azure-Blob, die für Rückschlüsse/Modellimplementierung verwendet werden.
azureml-fe-v2 Kubernetes-Bereitstellung Die Front-End-Komponente, die eingehende Rückschlussanforderungen an bereitgestellte Dienste weiter leitet. Senden von Dienstprotokollen an Azure Blob.
inference-operator-controller-manager Kubernetes-Bereitstellung Verwalten des Lebenszyklus von Rückschlussendpunkten.
volcano-admission Kubernetes-Bereitstellung Wahlfrei Wahlfrei volcano-admission-Webhook.
Vulkan-Kontrollsysteme Kubernetes-Bereitstellung Wahlfrei Wahlfrei Verwalten des Lebenszyklus von Azure Machine Learning-Trainingsauftragspods.
volcano-scheduler Kubernetes-Bereitstellung Wahlfrei Wahlfrei Wird für die Planung von Aufträgen in Clustern verwendet.
fluent-bit Kubernetes-Daemonset Erfassen des Systemprotokolls der Komponenten. Hochladen des Systemprotokolls der Komponenten in die Cloud.
{ERWEITERUNGSNAME}-dcgm-exporter Kubernetes-Daemonset Wahlfrei Wahlfrei Wahlfrei „dcgm-exporter“ macht GPU-Metriken für Prometheus verfügbar.
nvidia-device-plugin-daemonset Kubernetes-Daemonset Wahlfrei Wahlfrei Wahlfrei „nvidia-device-plugin-daemonset“ macht GPUs für alle Knoten im Cluster verfügbar.
prometheus-prom-prometheus Kubernetes-StatefulSet Erfassen und Senden von Auftragsmetriken an die Cloud. Senden von Auftragsmetriken wie CPU-/GPU-/Arbeitsspeicherauslastung an die Cloud.

Wichtig

  • Die Azure Relay Ressource befindet sich in derselben Ressourcengruppe wie die Arc-Clusterressource. Es wird verwendet, um mit dem Kubernetes-Cluster zu kommunizieren. Wenn dies geändert wird, funktionieren zugeordnete Computeziele nicht mehr.
  • Standardmäßig werden die Bereitstellungsressourcen zufällig auf einem oder mehreren Knoten des Clusters bereitgestellt, und Daemonset-Ressourcen werden für alle Knoten bereitgestellt. Verwenden Sie nodeSelector die in der Konfigurationseinstellungstabelle beschriebene Konfigurationseinstellung, um die Erweiterungsbereitstellung auf bestimmte Knoten zu beschränken.

Hinweis

  • {EXTENSION-NAME}: ist der erweiterungsname, den Sie mithilfe des az k8s-extension create --name CLI-Befehls angeben.

Verwalten der Azure Machine Learning-Erweiterung

Aktualisieren, Auflisten, Anzeigen und Löschen einer Azure Machine Learning Erweiterung.

Nächste Schritte