Erstellen eines Computeclusters für Azure Machine Learning

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

In diesem Artikel wird erläutert, wie Sie einen Computecluster in Ihrem Azure Machine Learning-Arbeitsbereich erstellen und verwalten.

Sie können Azure Machine Learning-Computecluster verwenden, um einen Trainings- oder Batchrückschlussprozess in einem Cluster von CPU- oder GPU-Computeknoten in der Cloud zu verteilen. Weitere Informationen zu den VM-Größen mit GPUs finden Sie unter Für GPU optimierte VM-Größen.

In diesem Artikel werden folgende Themen erläutert:

  • Erstellen Sie einen Computecluster.
  • Verringern Sie Ihre Kosten für Computecluster mit VMs mit niedriger Priorität.
  • Richten Sie eine verwaltete Identität für den Cluster ein.

Hinweis

Anstatt einen Computecluster zu erstellen, verwenden Sie serverloses Computing, um das Compute-Lifecycle-Management an Azure Machine Learning auszulagern.

Voraussetzungen

  • Ein Azure Machine Learning-Arbeitsbereich. Weitere Informationen finden Sie unter Verwalten von Azure Machine Learning-Arbeitsbereichen.

  • Die Azure CLI-Erweiterung für Machine Learning Service (v2), das Azure Machine Learning Python SDK oder die Visual Studio Code-Erweiterung für Azure Machine Learning

  • Wenn Sie das Python SDK verwenden, richten Sie Ihre Entwicklungsumgebung mit einem Arbeitsbereich ein. Sobald Ihre Umgebung eingerichtet ist, fügen Sie sie an den Arbeitsbereich in Ihrem Python-Skript an:

    GILT FÜR: Python SDK azure-ai-ml v2 (aktuell)

    Führen Sie diesen Code aus, um eine Verbindung mit Ihrem Azure ML-Arbeitsbereich herzustellen.

    Ersetzen Sie Ihre Abonnement-ID, den Namen der Ressourcengruppe und den Namen des Arbeitsbereichs in dem unten stehenden Code. So finden Sie diese Werte:

    1. Melden Sie sich bei Azure Machine Learning Studio an.
    2. Öffnen Sie den Arbeitsbereich, den Sie verwenden möchten.
    3. Wählen Sie auf der oben rechts angezeigten Azure Machine Learning Studio-Symbolleiste den Namen Ihres Arbeitsbereichs aus.
    4. Kopieren Sie den Wert für Arbeitsbereich, Ressourcengruppe und Abonnement-ID in den Code.
    5. Wenn Sie ein Notebook innerhalb von Studio verwenden, müssen Sie einen Wert kopieren, den Bereich schließen und einfügen und dann für den nächsten Wert zurückkehren.
    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client ist ein Handler für den Arbeitsbereich, den Sie für die Verwaltung anderer Ressourcen und Aufträge verwenden.

Was ist ein Computecluster?

Ein Azure Machine Learning-Computecluster ist eine verwaltete Computeinfrastruktur, die Ihnen das einfache Erstellen von Computezielen mit einem oder mehreren Knoten ermöglicht. Der Computecluster ist eine Ressource, die für andere Benutzer in Ihrem Arbeitsbereich freigegeben werden kann. Es wird automatisch zentral hochskaliert, wenn ein Auftrag übermittelt wird, und kann in einem virtuellen Azure-Netzwerk platziert werden kann. Computecluster unterstützen auch keine Bereitstellung öffentlicher IP-Adressen im virtuellen Netzwerk. Das Computeziel wird in einer Containerumgebung ausgeführt und packt die Abhängigkeiten Ihres Modells in einem Docker-Container.

Computecluster können Aufträge sicher in einem verwalteten virtuellen Netzwerk oder einem virtuellen Azure-Netzwerk ausführen, ohne dass Unternehmen SSH-Ports öffnen müssen. Der Auftrag wird in einer Containerumgebung ausgeführt und packt die Abhängigkeiten Ihres Modells in einen Docker-Container.

Einschränkungen

  • Computecluster können in einer anderen Region als der Ihres Arbeitsbereichs erstellt werden. Diese Funktionalität ist nur für Computecluster und nicht für Compute-Instanzen verfügbar.

    Warnung

    Wenn Sie einen Computecluster in einer anderen Region als der Ihres Arbeitsbereichs oder Ihrer Datenspeicher nutzen, können möglicherweise erhöhte Netzwerklatenz und Datenübertragungskosten die Folge sein. Latenz und Kosten können beim Erstellen des Clusters und beim Anwenden von Aufträgen auf den Cluster anfallen.

  • Bei Azure Machine Learning Compute gelten Standardgrenzwerte, beispielsweise für die Anzahl von Kernen, die zugeordnet werden können. Weitere Informationen finden Sie unter Verwalten und Anfordern von Kontingenten für Azure-Ressourcen.

  • Azure ermöglicht es Ihnen, Ressourcen zu sperren, sodass sie nicht gelöscht werden können oder schreibgeschützt sind. Wenden Sie keine Ressourcensperren auf die Ressourcengruppe an, die Ihren Arbeitsbereich enthält. Wenn Sie eine Sperre auf die Ressourcengruppe anwenden, die Ihren Arbeitsbereich enthält, werden Skalierungsvorgänge für Azure Machine Learning-Computecluster verhindert. Weitere Informationen zum Sperren von Ressourcen finden Sie unter Sperren von Ressourcen, um unerwartete Änderungen zu verhindern.

Erstellen

Geschätzter Zeitaufwand: Ca. fünf Minuten.

Hinweis

Wenn Sie serverloses Computing verwenden, müssen Sie keinen Computecluster erstellen.

Azure Machine Learning Compute kann in mehreren Ausführungen wiederverwendet werden. Compute kann für andere Benutzer*innen im Arbeitsbereich freigegeben werden und wird zwischen den Ausführungen beibehalten. Dabei werden Knoten basierend auf der Anzahl der übermittelten Ausführungen und der Einstellung max_nodes für Ihren Cluster automatisch hoch- oder herunterskaliert. Die Einstellung min_nodes steuert die Mindestanzahl verfügbarer Knoten.

Das Kontingent dedizierter Kerne pro Region pro VM-Familie und gesamte regionale Kontingent, das für die Erstellung von Computeclustern gilt, ist einheitlich und wird mit dem Kontingent für Azure Machine Learning-Trainingcompute-Instanzen gemeinsam genutzt.

Wichtig

Zum Vermeiden von Gebühren, wenn keine Aufträge ausgeführt werden, legen Sie die minimale Anzahl von Knoten auf 0 fest. Durch diese Einstellung kann Azure Machine Learning die Zuordnung der Knoten aufheben, wenn diese nicht verwendet werden. Bei jedem Wert größer 0 wird die entsprechende Anzahl von Knoten weiter ausgeführt, auch wenn sie nicht verwendet werden.

Die Computeressource skaliert automatisch auf Null herunter, wenn sie nicht benötigt wird. Dedizierte VMs werden erstellt, um Ihre Aufträge bei Bedarf auszuführen.

Verwenden Sie die folgenden Beispiele, um einen Computecluster zu erstellen:

Um eine persistente Azure Machine Learning Compute-Ressource in Python zu erstellen, geben Sie die Eigenschaften size und max_instances an. Azure Machine Learning verwendet dann für die restlichen Eigenschaften intelligente Standardwerte.

  • size: Die VM-Familie der von Azure Machine Learning Compute erstellten Knoten.
  • max_instances: Die maximale Anzahl von Knoten, auf die das Computeziel bei der Ausführung eines Auftrags in Azure Machine Learning Compute automatisch hochskaliert wird.

GILT FÜR: Python SDK azure-ai-ml v2 (aktuell)

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()

Sie können beim Erstellen von Azure Machine Learning Compute auch mehrere erweiterte Eigenschaften konfigurieren. Mithilfe der Eigenschaften können Sie einen persistenten Cluster mit einer festen Größe oder in einem vorhandenen virtuellen Azure-Netzwerk in Ihrem Abonnement erstellen. Weitere Informationen finden Sie in der AmlCompute-Klasse.

Warnung

Wenn Sie den Parameter location auf eine andere Region als die Ihres Arbeitsbereichs oder Ihrer Datenspeicher festlegen, können möglicherweise erhöhte Netzwerklatenz und Datenübertragungskosten die Folge sein. Latenz und Kosten können beim Erstellen des Clusters und beim Anwenden von Aufträgen auf den Cluster anfallen.

Verringern Sie Ihre Kosten für Computecluster mit VMs mit niedriger Priorität

Sie können sich auch dafür entscheiden, virtuelle Computer mit niedriger Priorität zu verwenden, um einige oder alle Ihre Workloads auszuführen. Diese VMs haben keine garantierte Verfügbarkeit und können möglicherweise während der Verwendung vorzeitig beendet werden. Sie müssen einen vorgezogenen Job neu starten.

Wenn Sie Azure Virtual Machines mit niedriger Priorität verwenden, profitieren Sie von der ungenutzten Kapazität von Azure und erzielen erhebliche Kosteneinsparungen. Wenn zu einem beliebigen Zeitpunkt die Kapazität von Azure wieder benötigt wird, werden die Azure-VMs mit niedriger Priorität durch die Azure-Infrastruktur entfernt. Daher eignen sich Azure-VMs mit niedriger Priorität hervorragend für Workloads, bei denen Unterbrechungen keine Rolle spielen. Die verfügbare Kapazität kann abhängig von der Größe, Region, Tageszeit usw. variieren. Beim Bereitstellen von Azure-VMs mit niedriger Priorität weist Azure die VMs zu, wenn Kapazität verfügbar ist, aber es gibt keine SLA für diese VMs. Eine Azure Virtual Machine mit niedriger Priorität bietet keine Garantien für Hochverfügbarkeit. Wenn zu einem beliebigen Zeitpunkt die Kapazität von Azure wieder benötigt wird, werden die Azure-VMs mit niedriger Priorität durch die Azure-Infrastruktur entfernt.

Verwenden Sie eine der folgenden Methoden, um einen virtuellen Computer mit niedriger Priorität anzugeben:

GILT FÜR: Python SDK azure-ai-ml v2 (aktuell)

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

Einrichten einer verwalteten Identität

Informationen zum Konfigurieren einer verwalteten Identität mit Ihrem Computecluster finden Sie unter Einrichten der Authentifizierung zwischen Azure Machine Learning und anderen Diensten.

Problembehandlung

Es besteht die Möglichkeit, dass einige Benutzer, die ihren Azure Machine Learning-Arbeitsbereich vor der GA-Version über das Azure-Portal erstellt haben, AmlCompute in diesem Arbeitsbereich möglicherweise nicht erstellen können. In einem solchen Fall können Sie entweder eine Supportanfrage für den Dienst erstellen oder über das Portal oder das SDK einen neuen Arbeitsbereich erstellen und die Blockierung dadurch umgehend aufheben.

Wichtig

Wenn Ihre Compute-Instanz oder Ihr Computecluster auf einer dieser Serien basiert, erstellen Sie die Instanz/den Cluster vor dem Datum der Außerbetriebnahme mit einer anderen VM-Größe neu, um Dienstunterbrechungen zu vermeiden.

Diese Serien werden am 31. August 2023 außer Betrieb genommen:

Diese Serien werden am 31. August 2024 außer Betrieb genommen:

Bei der Größenänderung hängen geblieben

Wenn Ihr Azure Machine Learning-Computecluster bei der Größenänderung (0 > 0) für den Knotenstatus zu hängen scheint, könnten Azure-Ressourcensperren die Ursache hierfür sein.

Azure ermöglicht Ihnen das Einrichten von Sperren für Ressourcen, damit diese nicht gelöscht werden können oder schreibgeschützt sind. Das Sperren einer Ressource kann zu unerwarteten Ergebnissen führen. Bei einigen Vorgängen, die die Ressource nicht zu ändern scheinen, sind tatsächlich Aktionen erforderlich, die von der Sperre blockiert werden.

Wenn Sie mit Azure Machine Learning eine Löschsperre auf die Ressourcengruppe für Ihren Arbeitsbereich anwenden, werden Skalierungsvorgänge für Azure ML-Computecluster unterbunden. Um dieses Problem zu umgehen, empfehlen wir, die Sperre aus der Ressourcengruppe zu entfernen und sie stattdessen auf einzelne Elemente in der Gruppe anzuwenden.

Wichtig

Wenden Sie die Sperre nicht auf die folgenden Ressourcen an:

Ressourcenname Ressourcentyp
<GUID>-azurebatch-cloudservicenetworksecurityggroup Netzwerksicherheitsgruppe
<GUID>-azurebatch-cloudservicepublicip Öffentliche IP-Adresse
<GUID>-azurebatch-cloudserviceloadbalancer Load Balancer

Diese Ressourcen werden verwendet, um mit dem Computecluster zu kommunizieren und Vorgänge wie das Skalieren auf dem Computecluster durchzuführen. Wenn Sie die Ressourcensperre von diesen Ressourcen entfernen, sollte die automatische Skalierung für Ihre Computecluster gestatten.

Weitere Informationen zum Sperren von Ressourcen finden Sie unter Sperren von Ressourcen, um unerwartete Änderungen zu verhindern.

Nächster Schritt

Verwenden Sie Ihren Computecluster für Folgendes: