Trainieren von Modellen mit dem Python-SDK (v1) für Azure Machine Learning

GILT FÜR: Python SDK azureml v1

Hier erfahren Sie, wie Sie Azure-Computeressourcen mit dem SDK (v1) an Ihren Azure Machine Learning-Arbeitsbereich anfügen. Anschließend können Sie diese Ressourcen als Computeziele für Rückschlüsse und das Training in Ihren Machine Learning-Tasks verwenden.

In diesem Artikel erfahren Sie, wie Sie Ihren Arbeitsbereich für die Verwendung dieser Computeressourcen einrichten:

  • Ihr lokaler Computer
  • Virtuelle Remotecomputer
  • Apache Spark-Pools (powered by Azure Synapse Analytics)
  • Azure HDInsight
  • Azure Batch
  • Azure Databricks: wird nur in Machine Learning-Pipelines als Computeziel beim Training verwendet.
  • Azure Data Lake Analytics
  • Azure Container Instances
  • Azure Machine Learning Kubernetes

Informationen zur Verwendung von Computezielen, die von Azure Machine Learning verwaltet werden, finden Sie unter den folgenden Links:

Wichtig

Die in diesem Artikel als „Vorschau“ markierten Elemente sind aktuell in der öffentlichen Vorschau. Die Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Voraussetzungen

Einschränkungen

  • Erstellen Sie nicht mehrere gleichzeitige Verknüpfungen für die gleichen Compute-Ressourcen in Ihrem Arbeitsbereich. Verknüpfen Sie beispielsweise einen Azure Kubernetes Service-Clusters nicht unter zwei verschiedenen Namen mit einem Arbeitsbereich. Jede neue Verknüpfung führt zu einem Fehler der vorherigen vorhandenen Verknüpfungen.

    Falls Sie ein Computeziel erneut verknüpfen möchten (etwa zum Ändern der TLS-Einstellung oder einer anderen Clusterkonfigurationseinstellung), müssen Sie zunächst die vorhandene Verknüpfung entfernen.

Was ist ein Computeziel?

Mit Azure Machine Learning können Sie Ihr Modell auf verschiedenen Ressourcen oder Umgebungen trainieren, die zusammenfassend als Computeziele bezeichnet werden. Ein Computeziel kann ein lokaler Computer oder eine Cloudressource sein, wie beispielsweise Azure Machine Learning Compute, Azure HDInsight oder ein virtueller Remotecomputer. Ebenso können Sie Computeziele für die Modellimplementierung erstellen. Dies wird unter Bereitstellen von Modellen mit Azure Machine Learning beschrieben.

Lokalem Computer

Wenn Sie Ihren lokalen Computer für das Training verwenden, ist es nicht erforderlich, ein Computeziel zu erstellen. Übermitteln Sie einfach die Trainingsausführung von Ihrem lokalen Computer aus.

Wenn Sie Ihren lokalen Computer für Rückschlüsse verwenden, muss Docker installiert sein. Zum Ausführen der Bereitstellung definieren Sie den vom Webdienst verwendeten Port in LocalWebservice.deploy_configuration(). Folgen Sie dann dem normalen Bereitstellungsprozess, wie in Bereitstellen von Modellen mit Azure Machine Learning beschrieben.

Virtuelle Remotecomputer

Azure Machine Learning unterstützt auch das Anfügen einer Azure-VM. Die VM muss eine Azure-DSVM (Data Science Virtual Machine) sein. Die VM bietet eine zusammengestellte Auswahl an Tools und Frameworks für die Entwicklung des maschinellen Lernens über den gesamten Lebenszyklus. Weitere Informationen zum Verwenden der DSVM mit Azure Machine Learning finden Sie unter Konfigurieren einer Entwicklungsumgebung.

Tipp

Anstelle eines Remote VMs, empfiehlt es sich, die Azure Machine Learning Compute-Instanzzu verwenden. Dabei handelt es sich um eine vollständig verwaltete, cloudbasierte Compute-Lösung, die für Azure Machine Learning spezifisch ist. Weitere Informationen hierzu finden Sie unter Erstellen und Verwalten einer Azure Machine Learning-Compute-Instanz.

  1. Erstellen: Azure Machine Learning kann keine Remote-VM für Sie erstellen. Stattdessen müssen Sie die VM erstellen und sie dann Ihrem Arbeitsbereich hinzufügen. Informationen zum Erstellen einer DSVM finden Sie in Bereitstellen der Data Science Virtual Machine für Linux (Ubuntu).

    Warnung

    Von Azure Machine Learning werden nur virtuelle Computer unterstützt, auf denen Ubuntu ausgeführt wird. Wenn Sie eine VM erstellen oder eine vorhandene VM auswählen, müssen Sie eine VM auswählen, die Ubuntu verwendet.

    Von Azure Machine Learning wird außerdem vorausgesetzt, dass der virtuelle Computer über eine öffentliche IP-Adresse verfügt.

  2. Anfügen: Fügen Sie die DSVM über Azure Machine Learning Studio an Ihren Arbeitsbereich an.

    Warnung

    Erstellen Sie nicht mehrere gleichzeitige Verknüpfungen für die gleichen DSVM in Ihrem Arbeitsbereich. Jede neue Verknüpfung führt zu einem Fehler der vorherigen vorhandenen Verknüpfungen.

  3. Konfigurieren: Erstellen Sie eine Ausführungskonfiguration für das DSVM-Computeziel. Zum Erstellen und Konfigurieren der Trainingsumgebung in der DSVM werden Docker und Conda verwendet.

    from azureml.core import ScriptRunConfig
    from azureml.core.environment import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    # Create environment
    myenv = Environment(name="myenv")
    
    # Specify the conda dependencies
    myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    
    # If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used
    # To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image:
    # myenv.docker.enabled = True
    # myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE
    
    # Configure the run configuration with the Linux DSVM as the compute target and the environment defined above
    src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv) 
    

Tipp

Wenn Sie eine VM aus Ihrem Arbeitsbereich entfernen (trennen) wollen, verwenden Sie die Methode RemoteCompute.detach().

Azure Machine Learning löscht die VM nicht für Sie. Sie müssen die VM manuell löschen, indem Sie das Azure-Portal, die CLI oder das SDK für die Azure-VM verwenden.

Apache Spark-Pools

Die Integration von Azure Synapse Analytics in Azure Machine Learning (Vorschau) ermöglicht Ihnen das Anfügen eines von Azure Synapse unterstützten Apache Spark-Pools für die interaktive Datenuntersuchung und -aufbereitung. Diese Integration bietet Ihnen eine dedizierte Computing-Ressource für Data Wrangling im großen Stil. Weitere Informationen finden Sie unter Anfügen von Apache Spark-Pools (powered by Azure Synapse Analytics).

Azure HDInsight

Azure HDInsight ist eine beliebte Plattform für Big Data-Analysen. Die Plattform stellt Apache Spark bereit, das zum Training Ihres Modells verwendet werden kann.

  1. Erstellen: Azure Machine Learning kann keinen HDInsight-Cluster für Sie erstellen. Stattdessen müssen Sie den Cluster erstellen und ihn dann Ihrem Azure Machine Learning Arbeitsbereich hinzufügen. Weitere Informationen finden Sie unter Erstellen eines Spark-Clusters in HDInsight.

    Warnung

    Von Azure Machine Learning wird vorausgesetzt, dass der HDInsight-Cluster über eine öffentliche IP-Adresse verfügt.

    Beim Erstellen des Clusters müssen Sie einen SSH-Benutzernamen und ein Kennwort angeben. Notieren Sie diese Werte, da Sie sie benötigen, wenn Sie HDInsight als Computeziel verwenden.

    Nach Erstellen des Clusters stellen Sie eine Verbindung mit dem Hostnamen „<clustername>-ssh.azurehdinsight.net“ her, wobei <clustername> der Name ist, den Sie für den Cluster angegeben haben.

  2. Anfügen: Fügen Sie den HDInsight-Cluster über Azure Machine Learning Studio an Ihren Arbeitsbereich an.

    Warnung

    Erstellen Sie nicht mehrere gleichzeitige Verknüpfungen für den gleichen HDInsight in Ihrem Arbeitsbereich. Jede neue Verknüpfung führt zu einem Fehler der vorherigen vorhandenen Verknüpfungen.

  3. Konfigurieren: Erstellen Sie eine Ausführungskonfiguration für das HDI-Computeziel.

    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    
    
    # use pyspark framework
    run_hdi = RunConfiguration(framework="pyspark")
    
    # Set compute target to the HDI cluster
    run_hdi.target = hdi_compute.name
    
    # specify CondaDependencies object to ask system installing numpy
    cd = CondaDependencies()
    cd.add_conda_package('numpy')
    run_hdi.environment.python.conda_dependencies = cd
    

Tipp

Wenn Sie einen HDInsight-Cluster aus dem Arbeitsbereich entfernen (trennen) möchten, verwenden Sie die HDInsightcompute.detach ()-Methode.

Der HDInsight-Cluster wird von Azure Machine Learning nicht für Sie gelöscht. Sie müssen es manuell über das Azure-Portal, die CLI oder das SDK für Azure HDInsight löschen.

Azure Batch

Azure Batch wird verwendet, um umfangreiche, auf Parallelverarbeitung ausgelegte HPC-Anwendungen effizient in der Cloud auszuführen. AzureBatchStep kann in einer Azure Machine Learning-Pipeline verwendet werden, um Aufträge an einen Azure Batch Pool von Computern zu übermitteln.

Um Azure Batch als Computeziel anzufügen, müssen Sie das Azure Machine Learning SDK verwenden und die folgenden Informationen angeben:

  • Azure Batch-Computename: Ein Computeanzeigename, der innerhalb des Arbeitsbereichs verwendet wird.
  • Azure Batch-Kontoname: Der Name des Azure Batch-Kontos.
  • Ressourcengruppe: Die Ressourcengruppe, die das Azure Batch-Konto enthält.

Der folgende Code veranschaulicht, wie Azure Batch als Computeziel angefügt wird:

from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException

# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'

# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>"  # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"

try:
    # check if the compute is already attached
    batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
    print('Attaching Batch compute...')
    provisioning_config = BatchCompute.attach_configuration(
        resource_group=batch_resource_group, account_name=batch_account_name)
    batch_compute = ComputeTarget.attach(
        ws, batch_compute_name, provisioning_config)
    batch_compute.wait_for_completion()
    print("Provisioning state:{}".format(batch_compute.provisioning_state))
    print("Provisioning errors:{}".format(batch_compute.provisioning_errors))

print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))

Warnung

Erstellen Sie nicht mehrere gleichzeitige Verknüpfungen für den gleichen Azure Batch in Ihrem Arbeitsbereich. Jede neue Verknüpfung führt zu einem Fehler der vorherigen vorhandenen Verknüpfungen.

Azure Databricks

Azure Databricks ist eine Apache Spark-basierte Umgebung in der Azure-Cloud. Sie kann mit einer Azure Machine Learning-Pipeline als Computeziel verwendet werden.

Wichtig

Azure Machine Learning kann kein Azure Databricks-Computeziel erstellen. Stattdessen müssen Sie einen Azure Databricks-Arbeitsbereich erstellen und ihn dann Ihren Azure Machine Learning-Arbeitsbereich anfügen. Informationen zum Erstellen einer Arbeitsbereichsressource finden Sie im Dokument Ausführen eines Spark-Auftrags in Azure Databricks.

Um einen Azure Databricks-Arbeitsbereich aus einem anderen Azure-Abonnement anfügen zu können, muss Ihnen (Ihrem Microsoft Entra-Konto) die Rolle Mitwirkender für den Azure Databricks-Arbeitsbereich erteilt werden. Überprüfen Sie Ihren Zugriff im Azure-Portal.

Geben Sie zum Anfügen von Azure Databricks als Computeziel die folgenden Informationen an:

  • Databricks-Computename: Der Name, der dieser Computeressource zugewiesen werden soll.
  • Name des Databricks-Arbeitsbereichs: Der Name des Azure Databricks-Arbeitsbereichs.
  • Databricks-Zugriffstoken: Das zur Authentifizierung bei Azure Databricks verwendete Zugriffstoken. Informationen zum Generieren eines Zugriffstokens finden Sie im Dokument Authentifizierung.

Der folgende Code veranschaulicht, wie Azure Databricks mit dem Azure Machine Learning-SDK als Computeziel angefügt wird:

import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException

databricks_compute_name = os.environ.get(
    "AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
    "AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
    "AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
    "AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")

try:
    databricks_compute = ComputeTarget(
        workspace=ws, name=databricks_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('databricks_compute_name {}'.format(databricks_compute_name))
    print('databricks_workspace_name {}'.format(databricks_workspace_name))
    print('databricks_access_token {}'.format(databricks_access_token))

    # Create attach config
    attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
                                                           workspace_name=databricks_workspace_name,
                                                           access_token=databricks_access_token)
    databricks_compute = ComputeTarget.attach(
        ws,
        databricks_compute_name,
        attach_config
    )

    databricks_compute.wait_for_completion(True)

Ein ausführlicheres Beispiel finden Sie in einem Beispiel-Notebook auf GitHub.

Warnung

Erstellen Sie nicht mehrere gleichzeitige Verknüpfungen für den gleichen Azure Databricks in Ihrem Arbeitsbereich. Jede neue Verknüpfung führt zu einem Fehler der vorherigen vorhandenen Verknüpfungen.

Azure Data Lake Analytics

Azure Data Lake Analytics ist eine umfangreiche Datenanalyseplattform in der Azure-Cloud. Sie kann mit einer Azure Machine Learning-Pipeline als Computeziel verwendet werden.

Erstellen Sie vor der Verwendung ein Azure Data Lake Analytics-Konto. Informationen zum Erstellen dieser Ressource finden Sie im Dokument Erste Schritte mit Azure Data Lake Analytics.

Um Data Lake Analytics als Computeziel anzufügen, müssen Sie das Azure Machine Learning SDK verwenden und die folgenden Informationen angeben:

  • Computename: Der Name, der dieser Computeressource zugewiesen werden soll.
  • Ressourcengruppe: Die Ressourcengruppe, die das Data Lake Analytics-Konto enthält.
  • Kontoname: Der Name des Data Lake Analytics-Kontos.

Der folgende Code veranschaulicht, wie Data Lake Analytics als Computeziel angefügt wird:

import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException


adla_compute_name = os.environ.get(
    "AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
    "AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
    "AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")

try:
    adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('adla_compute_name {}'.format(adla_compute_name))
    print('adla_resource_id {}'.format(adla_resource_group))
    print('adla_account_name {}'.format(adla_account_name))
    # create attach config
    attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
                                                     account_name=adla_account_name)
    # Attach ADLA
    adla_compute = ComputeTarget.attach(
        ws,
        adla_compute_name,
        attach_config
    )

    adla_compute.wait_for_completion(True)

Ein ausführlicheres Beispiel finden Sie in einem Beispiel-Notebook auf GitHub.

Warnung

Erstellen Sie nicht mehrere gleichzeitige Verknüpfungen für das gleiche ADLA in Ihrem Arbeitsbereich. Jede neue Verknüpfung führt zu einem Fehler der vorherigen vorhandenen Verknüpfungen.

Tipp

Azure Machine Learning-Pipelines können nur ausgeführt werden, wenn die Daten im Standarddatenspeicher des Data Lake Analytics-Kontos gespeichert werden. Wenn die Daten, die Sie verwenden möchten, in einem nicht standardmäßigen Speicher gespeichert sind, können Sie die Daten mithilfe von DataTransferStep vor dem Trainieren kopieren.

Azure Container Instances

Azure Container Instances (ACI) werden dynamisch erstellt, wenn Sie ein Modell bereitstellen. Es gibt keine andere Möglichkeit, ACI zu erstellen und an Ihren Arbeitsbereich anzufügen. Weitere Informationen finden Sie unter Bereitstellen eines Modells in Azure Container Instances.

Kubernetes

Azure Machine Learning ermöglicht das Anfügen eigener Kubernetes-Cluster für Training und Rückschlüsse. Weitere Informationen finden Sie unter Konfigurieren von Kubernetes-Clustern für Azure Machine Learning.

Verwenden Sie eine der folgenden Methoden, um einen Kubernetes-Cluster von Ihrem Arbeitsbereich zu trennen:

compute_target.detach()

Warnung

Beim Trennen eines Clusters wird der Cluster nicht gelöscht. Informationen zum Löschen eines Azure Kubernetes Service-Clusters finden Sie unter Verwenden der Azure-Befehlszeilenschnittstelle mit AKS. Informationen zum Löschen eines Kubernetes-Clusters mit Azure Arc-Unterstützung finden Sie im Azure Arc-Schnellstart.

Notebook-Beispiele

Beispiele für das Training mit verschiedenen Computeziele finden Sie in diesen Notebooks:

Informationen zum Ausführen von Notebooks finden Sie im Artikel Verwenden von Jupyter-Notebooks zum Erkunden des Azure Machine Learning-Diensts.

Nächste Schritte