Trainieren von Modellen mit der CLI, dem SDK und der REST-API von Azure Machine Learning

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

Azure Machine Learning bietet mehrere Möglichkeiten zum Übermitteln von ML-Trainingsaufträgen. In diesem Artikel erfahren Sie, wie Sie Aufträge mit den folgenden Methoden übermitteln:

  • Azure CLI-Erweiterung für maschinelles Lernen: Die Erweiterung ml, auch als CLI v2 bezeichnet
  • Python SDK v2 für Azure Machine Learning
  • REST-API: Die API, auf der die CLI und das SDK basieren

Voraussetzungen

Installieren Sie zur Verwendung der SDK-Informationen das Azure Machine Learning SDK v2 für Python.

Klonen des Beispielrepositorys

Die Codeschnipsel in diesem Artikel basieren auf Beispielen aus dem GitHub-Repository mit Azure Machine Learning-Beispielen. Verwenden Sie den folgenden Befehl, um das Repository in Ihrer Entwicklungsumgebung zu klonen:

git clone --depth 1 https://github.com/Azure/azureml-examples

Tipp

Verwenden Sie --depth 1, um nur den letzten Commit in das Repository zu klonen, wodurch das Abschließen des Vorgangs beschleunigt wird.

Beispielauftrag

Die Beispiele in diesem Artikel verwenden das Schwertlilien-Dataset, um ein MLFlow-Modell zu trainieren.

Trainieren in der Cloud

Beim Trainieren in der Cloud müssen Sie eine Verbindung mit Ihrem Azure Machine Learning-Arbeitsbereich herstellen und eine Computeressource auswählen, die zum Ausführen des Trainingsauftrags verwendet wird.

1. Herstellen einer Verbindung mit dem Arbeitsbereich

Tipp

Wählen Sie über die Registerkarten unten die Methode aus, die Sie zum Trainieren eines Modells verwenden möchten. Wenn Sie eine Registerkarte auswählen, werden automatisch alle Registerkarten in diesem Artikel auf die gleiche Registerkarte umgestellt. Sie können jederzeit eine andere Registerkarte auswählen.

Um eine Verbindung mit dem Arbeitsbereich herzustellen, benötigen Sie Bezeichnerparameter – ein Abonnement, eine Ressourcengruppe und einen Arbeitsbereichsnamen. Sie verwenden diese Details im ML-Client (MLClient) aus dem Namespace azure.ai.ml, um ein Handle für den erforderlichen Azure Machine Learning-Arbeitsbereich zu erhalten. Zum Authentifizieren verwenden Sie die Standardauthentifizierung von Azure. Weitere Informationen zum Konfigurieren von Anmeldeinformationen und Herstellen einer Verbindung mit einem Arbeitsbereich finden Sie in diesem Beispiel.

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

2. Erstellen einer Computeressource für das Training

Hinweis

Um serverloses Computing zu testen, überspringen Sie diesen Schritt, und fahren Sie mit 3 fort. Übermitteln des Trainingsauftrags.

Ein Azure Machine Learning-Computecluster ist eine vollständig verwaltete Computeressource, die zum Ausführen des Trainingsauftrags verwendet werden kann. In den folgenden Beispielen wird ein Computecluster mit dem Namen cpu-compute erstellt.

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

3. Übermitteln des Trainingsauftrags

Um dieses Skript auszuführen, verwenden Sie einen command, welcher das Python-Skript „main.py“ ausführt, das sich unter ./sdk/python/jobs/single-step/lightgbm/iris/src/ befindet. Der Befehl wird ausgeführt, indem er als job an Azure Machine Learning übermittelt wird.

Hinweis

Wenn Sie serverloses Computing verwenden möchten, löschen Sie compute="cpu-cluster" in diesem Code.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

In den obigen Beispielen haben Sie Folgendes konfiguriert:

  • code: Der Pfad, in dem sich der Code zur Ausführung des Befehls befindet.
  • command: Der auszuführende Befehl.
  • environment: Die Umgebung, die für die Ausführung des Trainingsskripts erforderlich ist. In diesem Beispiel verwenden wir eine von Azure Machine Learning bereitgestellte kuratierte bzw. vorgefertigte Umgebung mit der Bezeichnung AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Wir verwenden die neueste Version dieser Umgebung mithilfe der @latest-Anweisung. Sie können auch benutzerdefinierte Umgebungen verwenden, indem Sie ein Docker-Basisimage und zusätzlich Conda-YAML-Code angeben.
  • inputs: Ein Wörterbuch der Eingaben mit Schlüssel-Wert-Paaren für den Befehl. Der Schlüssel ist ein Name für die Eingabe im Kontext des Auftrags, und der Wert ist der Eingabewert. Auf Eingaben wird im command mit dem Ausdruck ${{inputs.<input_name>}} verwiesen. Wenn Sie Dateien oder Ordner als Eingaben verwenden möchten, können Sie die Klasse Input verwenden. Weitere Informationen finden Sie unter SDK und CLI v2-Ausdrücke.

Weitere Informationen finden Sie in der Referenzdokumentation.

Wenn Sie den Auftrag übermitteln, wird eine URL an den Auftragsstatus in Azure Machine Learning Studio zurückgegeben. Verwenden Sie die Studio-Benutzeroberfläche, um den Auftragsfortschritt anzuzeigen. Sie können auch returned_job.status verwenden, um den aktuellen Status des Auftrags zu überprüfen.

Registrieren des trainierten Modells

Die folgenden Beispiele veranschaulichen das Registrieren eines Modells in Ihrem Azure Machine Learning-Arbeitsbereich.

Tipp

Die vom Trainingsauftrag zurückgegebene Eigenschaft name wird als Teil des Pfads zum Modell verwendet.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

Nächste Schritte

Sie verfügen nun über ein trainiertes Modell. Informieren Sie sich anschließend über das Bereitstellen des Modells mithilfe eines Onlineendpunkts.

Weitere Beispiele finden Sie im GitHub-Repository mit Azure Machine Learning-Beispielen.

Weitere Informationen zu den Azure CLI-Befehlen, Python SDK-Klassen oder REST-APIs, die in diesem Artikel verwendet werden, finden Sie in der folgenden Referenzdokumentation: