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

APPLIES TO:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Azure Machine Learning tillhandahåller flera sätt att skicka ML-utbildningsjobb. 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 installerar du Azure Machine Learning SDK v2 för Python.

Klona exempellagringsplatsen

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

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

Tips

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 irisblommans datamängd för att träna en modell i MLFlow.

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 för att köra träningsjobbet.

1. Anslut till arbetsytan

Tips

Använd följande flikar 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. Använd den här informationen i MLClient från namnområdet azure.ai.ml för att få en referens till den Azure Machine Learning arbetsyta som krävs. Om du vill autentisera använder du default Azure-autentisering. Mer information om hur du konfigurerar autentiseringsuppgifter och ansluter till en arbetsyta finns i den här example.

#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

Observera

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 du kan använda för att köra träningsjobbet. I följande exempel skapar du ett beräkningskluster med namnet 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. Skicka in utbildningsjobbet

Om du vill köra det här skriptet använder du en command som kör det main.py Python skriptet som finns under ./sdk/python/jobs/single-step/lightgbm/iris/src/. Du skickar kommandot som en job till Azure Machine Learning.

Observera

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 föregående exempel har du konfigurerat:

  • code – sökväg där koden för att 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 du en kuraterad eller färdig miljö som tillhandahålls av Azure Machine Learning med namnet AzureML-lightgbm-3.3@latest. Du kan också använda anpassade miljöer genom att ange en bas docker-avbildning och ange en conda yaml ovanpå den.
  • inputs – en ordlista över indata som använder namn-värdepar till kommandot. Nyckeln är ett namn på indata i jobbets kontext och värdet är indatavärdet. Referera till input i genom att använda uttrycket . Om du vill använda filer eller mappar som indata använder du Input klassen . Mer information finns i SDK- och CLI v2-uttryck.

Mer information finns i referensdokumentationen.

När du skickar jobbet returnerar tjänsten 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.

Viktigt

Azure Machine Learning tränings- och kommandojobb stöder inte Azure Container Registries (ACR) som använder anpassade domännamnsetiketter. Jobb som refererar till ett sådant register kan misslyckas vid start på grund av fel vid avbildningshämtning eller miljömatchning. Undvik det här problemet:

  • Använd standardformatet för inloggningsservern (<registry-name>.azurecr.io) för din ACR.
  • När du skapar registret anger du Domännamnsetikettomfång till Oskyddad.

Registrera den tränade modellen

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

Tips

Träningsjobbet returnerar en name attribut. Använd det här namnet 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 lagringsplatsen Azure Machine Learning GitHub.

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: