Trénování modelů pomocí rozhraní příkazového řádku Azure Machine Learning, sady SDK a rozhraní REST API

APPLIES TO:Azure CLI ml extension v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Azure Machine Learning nabízí několik způsobů, jak odesílat trénovací úlohy ML. V tomto článku se dozvíte, jak odesílat úlohy pomocí následujících metod:

  • rozšíření Azure CLI pro strojové učení: rozšíření ml, označované také jako CLI v2.
  • Python SDK v2 pro Azure Machine Learning.
  • REST API: API, na které je CLI a SDK postaveno.

Požadavky

Pokud chcete použít SDK, nainstalujte Azure Machine Learning SDK v2 pro Python.

Klonování úložiště příkladů

Fragmenty kódu v tomto článku vycházejí z příkladů v Azure Machine Learning GitHub repozitáři. Pokud chcete úložiště naklonovat do vývojového prostředí, použijte následující příkaz:

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

Tip

Použijte --depth 1 ke klonování pouze nejnovějšího commitu do úložiště, což zkracuje čas potřebný k provedení operace.

Ukázková úloha

Příklady v tomto článku používají datovou sadu květin iris k trénování modelu MLFlow.

Trénink v cloudu

Při trénování v cloudu se musíte připojit ke svému Azure Machine Learning pracovnímu prostoru a vybrat výpočetní prostředek, který spustí trénovací úlohu.

1. Připojení k pracovnímu prostoru

Tip

Pomocí následujících karet vyberte metodu, kterou chcete použít k trénování modelu. Když vyberete kartu, automaticky se přepne všechny karty v tomto článku na stejnou kartu. Kdykoli můžete vybrat jinou kartu.

Pokud se chcete připojit k pracovnímu prostoru, potřebujete parametry identifikátoru – předplatné, skupinu prostředků a název pracovního prostoru. Pomocí těchto podrobností v MLClient z oboru názvů azure.ai.ml získejte referenci na požadovaný pracovní prostor Azure Machine Learning. K ověření použijte výchozí ověřování Azure. Další informace o konfiguraci přihlašovacích údajů a připojení k pracovnímu prostoru najdete v tomto 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. Vytvoření výpočetního prostředku pro trénování

Poznámka

Pokud chcete vyzkoušet bezserverové výpočetní prostředky, přeskočte tento krok a pokračujte na 3. Odešlete trénovací úlohu.

Výpočetní cluster Azure Machine Learning je plně spravovaný výpočetní prostředek, který můžete použít ke spuštění úlohy trénování. V následujících příkladech vytvoříte výpočetní cluster s názvem 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. Odešlete trénovací úlohu.

Ke spuštění tohoto skriptu použijte command, který spustí skript main.py Python umístěný v ./sdk/python/jobs/single-step/lightgbm/iris/src/. Příkaz odešlete jako job do Azure Machine Learning.

Poznámka

Pokud chcete používat bezserverové výpočetní prostředky, odstraňte compute="cpu-cluster" ho v tomto kódu.

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

V předchozích příkladech jste nakonfigurovali:

  • code – cesta, kde se nachází kód ke spuštění příkazu.
  • command - příkaz, který je potřeba spustit.
  • environment – prostředí potřebné ke spuštění trénovacího skriptu. V tomto příkladu použijte kurátorované nebo připravené prostředí poskytované Azure Machine Learning s názvem AzureML-lightgbm-3.3@latest. Vlastní prostředí můžete také použít zadáním základní image Dockeru a zadáním conda yaml nad ní.
  • inputs - slovník vstupů používajících páry hodnot názvů k příkazu. Klíč je název vstupu v kontextu úlohy a hodnota je vstupní hodnota. Odkazujte na vstupy v command pomocí výrazu ${{inputs.<input_name>}}. Pokud chcete jako vstupy použít soubory nebo složky, použijte Input třídu. Další informace najdete v tématu Výrazy SDK a CLI v2.

Další informace najdete v referenční dokumentaci.

Když úlohu odešlete, služba vrátí adresu URL stavu úlohy v studio Azure Machine Learning. K zobrazení průběhu úlohy použijte uživatelské rozhraní studia. Můžete také použít returned_job.status ke kontrole aktuálního stavu úlohy.

Důležité

Azure Machine Learning trénovací úlohy a příkazové úlohy nepodporují Azure registr kontejnerů (ACR), které používají přizpůsobená označení názvů domén. Úlohy, které odkazují na takový registr, mohou selhat při spuštění kvůli chybám při stažení image nebo vyhodnocení prostředí. Chcete-li se tomuto problému vyhnout:

  • Použijte výchozí formát přihlašovacího serveru (<registry-name>.azurecr.io) pro službu ACR.
  • Při vytváření registru nastavte obor popisku názvu domény na Nezabezpečený.

Registrace natrénovaného modelu

Následující příklady ukazují, jak zaregistrovat model v pracovním prostoru Azure Machine Learning.

Tip

Výukový úkol vrátí vlastnost name. Tento název použijte jako součást cesty k modelu.

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)

Další kroky

Teď, když máte natrénovaný model, se dozvíte, jak ho nasadit pomocí online koncového bodu.

Další příklady najdete v úložišti Azure Machine Learning GitHub.

Další informace o příkazech Azure CLI, třídách Python SDK nebo rozhraních REST API používaných v tomto článku najdete v následující referenční dokumentaci: