Freigeben über


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

Wählen Sie die entsprechende Registerkarte für die restlichen Voraussetzungen basierend auf Ihrer bevorzugten Methode zum Erstellen des Computeclusters aus.

  • Wenn Sie Ihren Code nicht auf einer Compute-Instanz ausführen, installieren Sie das Python-SDK für Azure Machine Learning. Dieses SDK ist auf einer Compute-Instanz bereits installiert.

  • Fügen Sie den Arbeitsbereich in Ihrem Python-Skript an:

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

    Ersetzen Sie Ihre Abonnement-ID, den Namen der Ressourcengruppe und den Namen des Arbeitsbereichs im folgenden 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 in der Azure Machine Learning Studio-Symbolleiste oben rechts den Namen Ihres Arbeitsbereichs aus.
    4. Kopieren Sie den Wert für Arbeitsbereich, Ressourcengruppe und Abonnement-ID in den Code.

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

    # 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()

Löschen

Während Ihr Computecluster auf null Knoten herunterskaliert wird, wenn er nicht verwendet wird, tragen nicht bereitgestellte Knoten zur Kontingentnutzung bei. Wenn Sie den Computecluster löschen, wird das Computeziel aus Ihrem Arbeitsbereich entfernt und das Kontingent wird freigegeben.

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

Dadurch wird der grundlegende Computecluster gelöscht, der zuvor in diesem Artikel mit dem create_basic-Objekt erstellt wurde.

from azure.ai.ml.entities import AmlCompute

ml_client.compute.begin_delete(cluster_basic.name).wait()

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 bzw. den Cluster mit einer anderen VM-Größe neu.

Folgende Serien wurden am 31. August 2023 eingestellt:

Folgende Serien wurden am 31. August 2024 eingestellt:

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: