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

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Sada Python SDK azure-ai-ml v2 (aktuální)

Azure Machine Learning nabízí několik způsobů odesílání trénovacích úloh 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í označované ml také jako CLI v2.
  • Python SDK v2 pro Azure Machine Learning.
  • REST API: Rozhraní API, na které je rozhraní příkazového řádku a sada SDK postavené.

Požadavky

Pokud chcete použít informace o sadě SDK , nainstalujte sadu Azure Machine Learning SDK v2 pro Python.

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

Fragmenty kódu v tomto článku jsou založené na příkladech v úložišti GitHub s příklady služby Azure Machine Learning. Pokud chcete naklonovat úložiště do vývojového prostředí, použijte následující příkaz:

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

Tip

Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště, což zkracuje dobu dokončení operace.

Příklad úlohy

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

Trénujte v cloudu

Při trénování v cloudu se musíte připojit k pracovnímu prostoru Azure Machine Learning a vybrat výpočetní prostředek, který se použije ke spuštění trénovací úlohy.

1. Připojení k pracovnímu prostoru

Tip

Pomocí karet níže vyberte metodu, kterou chcete použít k trénování modelu. Výběrem karty automaticky přepnete 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 MLClientazure.ai.ml oboru názvů získáte popisovač požadovaného pracovního prostoru Služby Azure Machine Learning. K ověření použijete výchozí ověřování Azure. Další podrobnosti o konfiguraci přihlašovacích údajů a připojení k pracovnímu prostoru najdete v tomto příkladu .

#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í

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

4. Odešlete trénovací úlohu.

Ke spuštění tohoto skriptu použijete command skript, který spustí main.py skript Pythonu umístěný v umístění ./sdk/python/jobs/single-step/lightgbm/iris/src/. Příkaz se spustí tak, že ho job odešlete do Azure ML.

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

Ve výše uvedených příkladech jste nakonfigurovali:

  • code – cesta, kde se nachází kód pro 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žíváme kurátorované nebo připravené prostředí poskytované službou Azure Machine Learning s názvem AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Používáme nejnovější verzi tohoto prostředí pomocí direktivy @latest . Můžete také použít vlastní prostředí tak, že zadáte základní image Dockeru a nad ní zadáte conda yaml.
  • inputs – slovník vstupů používajících páry hodnot názvů k příkazu. Klíč je název pro vstup v kontextu úlohy a hodnota je vstupní hodnota. Na vstupy se odkazuje pomocí command výrazu ${{inputs.<input_name>}} . Pokud chcete jako vstupy použít soubory nebo složky, můžete použít Input třídu .

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

Když úlohu odešlete, vrátí se do stavu úlohy v studio Azure Machine Learning adresa URL. 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.

Registrace natrénovaného modelu

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

Tip

Vlastnost name vrácená trénovací úlohou se používá 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 vytrénovaný model, se dozvíte, jak ho nasadit pomocí online koncového bodu.

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

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