Freigeben über


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 mithilfe der 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

Um das SDK zu verwenden, installieren Sie 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 neuesten Commit in das Repository zu klonen, wodurch die Zeit für den Abschluss des Vorgangs verkürzt wird.

Beispielauftrag

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

Trainieren in der Cloud

Wenn Sie in der Cloud trainieren, müssen Sie eine Verbindung mit Ihrem Azure Machine Learning-Arbeitsbereich herstellen und eine Computeressource auswählen, um den Schulungsauftrag auszuführen.

1. Herstellen einer Verbindung mit dem Arbeitsbereich

Tipp

Verwenden Sie die folgenden Registerkarten, um die Methode auszuwählen, die Sie zum Trainieren eines Modells verwenden möchten. Wenn Sie eine Registerkarte auswählen, werden alle Registerkarten in diesem Artikel automatisch auf dieselbe Registerkarte umgeschaltet. 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. Verwenden Sie diese Details im MLClient im azure.ai.ml-Namespace, um Zugriff auf den erforderlichen Azure Machine Learning-Arbeitsbereich zu erhalten. Verwenden Sie zum Authentifizieren die Azure-Standardauthentifizierung. 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 fort mit 3. Übermitteln des Trainingsauftrags.

Ein Azure Machine Learning-Computecluster ist eine vollständig verwaltete Computeressource, mit der Sie den Schulungsauftrag ausführen können. In den folgenden Beispielen erstellen Sie einen Computecluster mit dem Namen cpu-cluster.

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

Verwenden Sie zum Ausführen dieses Skripts ein command, das das Python-Skript main.py unter ./sdk/python/jobs/single-step/lightgbm/iris/src/ ausführt. Sie übermitteln den Befehl als job an Azure Machine Learning.

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 vorherigen Beispielen haben Sie Folgendes konfiguriert:

  • code - Pfad, in dem sich der Code zum Ausführen des Befehls befindet.
  • command - Befehl, der ausgeführt werden muss.
  • environment: Die Umgebung, die für die Ausführung des Trainingsskripts erforderlich ist. Verwenden Sie in diesem Beispiel eine kuratierte oder vorgefertigte Umgebung, die von Azure Machine Learning aufgerufen wird AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Verwenden Sie die neueste Version dieser Umgebung mithilfe der @latest Direktive. 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. Verweisen Sie auf Eingaben in der command, indem Sie den ${{inputs.<input_name>}}-Ausdruck verwenden. Verwenden Sie die Input Klasse, um Dateien oder Ordner als Eingaben zu verwenden. Weitere Informationen finden Sie unter SDK und CLI v2-Ausdrücke.

Weitere Informationen finden Sie in der Referenzdokumentation.

Wenn Sie den Auftrag übermitteln, gibt der Dienst eine URL zum Auftragsstatus im Azure Machine Learning Studio zurück. 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

Der Schulungsauftrag gibt eine name Eigenschaft zurück. Verwenden Sie diesen Namen als Teil des Pfads zum Modell.

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: