Erstellen und Verwenden eines Computeclusters

Abgeschlossen

Nach dem Experimentieren und entwickeln möchten Sie, dass Ihr Code produktionsbereit sein soll. Wenn Sie Code in Produktionsumgebungen ausführen, ist es besser, Skripts anstelle von Notizbüchern zu verwenden. Wenn Sie ein Skript ausführen, möchten Sie ein skalierbares Computeziel verwenden.

In Azure Machine Learning eignen sich Computecluster ideal zum Ausführen von Skripts. Sie können einen Computecluster im Azure Machine Learning Studio erstellen, indem Sie die Befehlszeilenschnittstelle (CLI) von Azure oder das Python Software Development Kit (SDK) verwenden.

Erstellen eines Computeclusters mit dem Python SDK

Zum Erstellen eines Computeclusters mit dem Python SDK können Sie den folgenden Code verwenden:

from azure.ai.ml.entities import AmlCompute

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

Um zu verstehen, welche Parameter die AmlCompute Klasse erwartet, können Sie die Referenzdokumentation lesen.

Wenn Sie einen Computecluster erstellen, gibt es drei Hauptparameter, die Sie berücksichtigen müssen:

  • size: Gibt den virtuellen Computertyp jedes Knotens innerhalb des Computeclusters an. Basierend auf den Größen für virtuelle Computer in Azure. Neben der Größe können Sie auch angeben, ob Sie CPUs oder GPUs verwenden möchten.
  • max_instances: Gibt die maximale Anzahl von Knoten an, auf die ihr Computecluster skalieren kann. Die Anzahl der parallelen Workloads, die Ihr Computecluster verarbeiten kann, entspricht der Anzahl der Knoten, auf die ihr Cluster skalieren kann.
  • tier: Gibt an, ob Ihre virtuellen Computer mit niedriger Priorität oder dediziert sind. Die Einstellung auf niedrige Priorität kann die Kosten senken, da Sie nicht garantierte Verfügbarkeit haben.

Verwenden Sie einen Computecluster

Es gibt drei Hauptszenarien, in denen Sie einen Computecluster verwenden können:

  • Ausführen eines Pipelineauftrags, den Sie im Designer erstellt haben.
  • Ausführen eines Automatisierten Machine Learning-Auftrags.
  • Ausführen eines Skripts als Aufgabe.

In jedem dieser Szenarien ist ein Computecluster ideal, da ein Computecluster automatisch hochskaliert wird, wenn ein Auftrag übermittelt wird, und automatisch heruntergefahren wird, wenn ein Auftrag abgeschlossen ist.

Ein Computecluster ermöglicht es Ihnen auch, mehrere Modelle parallel zu trainieren, was bei der Verwendung von Automatisiertem Maschinellem Lernen üblich ist.

Sie können einen Designer-Pipelineauftrag und einen Automatisierten Machine Learning-Auftrag über das Azure Machine Learning Studio ausführen. Wenn Sie den Auftrag über Studio übermitteln, können Sie das Computeziel auf den von Ihnen erstellten Computecluster festlegen.

Wenn Sie einen Code-first-Ansatz bevorzugen, können Sie das Computeziel auf Ihren Computecluster festlegen, indem Sie das Python SDK verwenden.

Wenn Sie beispielsweise ein Skript als Befehlsjob ausführen, können Sie das Rechenziel mit dem folgenden Code auf Ihren Compute-Cluster festlegen:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python diabetes-training.py",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="cpu-cluster",
    display_name="train-with-cluster",
    experiment_name="diabetes-training"
    )

# submit job
returned_job = ml_client.create_or_update(job)
aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)

Nach dem Übermitteln eines Auftrags, der einen Rechencluster verwendet, wird der Rechencluster auf ein oder mehrere Knoten skaliert. Die Größenänderung dauert einige Minuten, und Ihr Auftrag wird ausgeführt, sobald die erforderlichen Knoten bereitgestellt wurden. Wenn der Status eines Auftrags vorbereitet wird, wird der Computecluster vorbereitet. Wenn der Status ausgeführt wird, ist der Computecluster bereit, und der Auftrag wird ausgeführt.