Träna modeller med Azure Machine Learning CLI, SDK och REST API

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Azure Machine Learning tillhandahåller flera sätt att skicka ML-träningsjobb. I den här artikeln får du lära dig hur du skickar jobb med hjälp av följande metoder:

  • Azure CLI-tillägg för maskininlärning: Tillägget ml , även kallat CLI v2.
  • Python SDK v2 för Azure Machine Learning.
  • REST API: DET API som CLI och SDK bygger på.

Förutsättningar

Om du vill använda SDK-informationen installerar du Azure Machine Learning SDK v2 för Python.

Klona exempellagringsplatsen

Kodfragmenten i den här artikeln baseras på exempel i GitHub-lagringsplatsen för Azure Machine Learning-exempel. Om du vill klona lagringsplatsen till utvecklingsmiljön använder du följande kommando:

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

Dricks

Använd --depth 1 för att endast klona den senaste incheckningen till lagringsplatsen, vilket minskar tiden för att slutföra åtgärden.

Exempeljobb

Exemplen i den här artikeln använder irisblomsdatamängden för att träna en MLFlow-modell.

Träna i molnet

När du tränar i molnet måste du ansluta till din Azure Machine Learning-arbetsyta och välja en beräkningsresurs som ska användas för att köra träningsjobbet.

1. Anslut till arbetsytan

Dricks

Använd flikarna nedan för att välja den metod som du vill använda för att träna en modell. Om du väljer en flik växlar du automatiskt alla flikar i den här artikeln till samma flik. Du kan välja en annan flik när som helst.

För att ansluta till arbetsytan behöver du identifierarparametrar – en prenumeration, en resursgrupp och ett arbetsytenamn. Du använder den här informationen i MLClient från azure.ai.ml namnområdet för att få ett handtag till den Azure Machine Learning-arbetsyta som krävs. Om du vill autentisera använder du azure-standardautentiseringen. I det här exemplet finns mer information om hur du konfigurerar autentiseringsuppgifter och ansluter till en arbetsyta.

#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. Skapa en beräkningsresurs för träning

Kommentar

Om du vill prova serverlös beräkning hoppar du över det här steget och fortsätter till 3. Skicka träningsjobbet.

Ett Azure Machine Learning-beräkningskluster är en fullständigt hanterad beräkningsresurs som kan användas för att köra träningsjobbet. I följande exempel skapas ett beräkningskluster med namnet cpu-compute .

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. Skicka in utbildningsjobbet

Om du vill köra det här skriptet använder du ett command som kör main.py Python-skript som finns under ./sdk/python/jobs/single-step/lightgbm/iris/src/. Kommandot körs genom att skicka det som en job till Azure Machine Learning.

Kommentar

Om du vill använda serverlös beräkning tar du bort compute="cpu-cluster" i den här koden.

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

I exemplen ovan har du konfigurerat:

  • code – sökväg där koden som ska köra kommandot finns
  • command - kommando som måste köras
  • environment – den miljö som krävs för att köra träningsskriptet. I det här exemplet använder vi en kuraterad eller färdig miljö som tillhandahålls av Azure Machine Learning med namnet AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Vi använder den senaste versionen av den här miljön med hjälp @latest av direktivet. Du kan också använda anpassade miljöer genom att ange en bas docker-avbildning och ange en conda yaml ovanpå den.
  • inputs – ordlista med indata med namnvärdepar till kommandot. Nyckeln är ett namn på indata i jobbets kontext och värdet är indatavärdet. Indata refereras i command med uttrycket ${{inputs.<input_name>}} . Om du vill använda filer eller mappar som indata kan du använda Input klassen . Mer information finns i SDK- och CLI v2-uttryck.

Mer information finns i referensdokumentationen.

När du skickar jobbet returneras en URL till jobbstatusen i Azure Machine Learning-studio. Använd studiogränssnittet för att visa jobbets förlopp. Du kan också använda returned_job.status för att kontrollera jobbets aktuella status.

Registrera den tränade modellen

Följande exempel visar hur du registrerar en modell på din Azure Machine Learning-arbetsyta.

Dricks

Egenskapen name som returneras av träningsjobbet används som en del av sökvägen till modellen.

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ästa steg

Nu när du har en tränad modell lär du dig hur du distribuerar den med hjälp av en onlineslutpunkt.

Fler exempel finns i GitHub-lagringsplatsen för Azure Machine Learning-exempel.

Mer information om Azure CLI-kommandon, Python SDK-klasser eller REST-API:er som används i den här artikeln finns i följande referensdokumentation: