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 informace o rozhraní REST API , potřebujete následující položky:
Služební identita ve vašem pracovním prostoru. Pro požadavky REST pro správu použijte ověřování služebního principála.
Ověřovací token služebního účtu. Tento token získáte podle kroků v části Načtení ověřovacího tokenu instančního objektu .
Nástroj curl. Program curl je k dispozici v Subsystém Windows pro Linux nebo jakékoli distribuci systému UNIX.
Tip
V PowerShellu curl je alias pro Invoke-WebRequest.
curl -d "key=val" -X POST uri Příkaz se stane Invoke-WebRequest -Body "key=val" -Method POST -Uri uri.
I když je možné volat rozhraní REST API z PowerShellu, příklady v tomto článku předpokládají, že používáte Bash.
Nástroj jq pro zpracování JSON. Pomocí tohoto nástroje extrahujte hodnoty z dokumentů JSON, které vrací volání rozhraní REST API.
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)
Při použití Azure CLI potřebujete parametry identifikátoru – předplatné, skupinu prostředků a název pracovního prostoru. I když pro každý příkaz můžete zadat tyto parametry, můžete také nastavit výchozí hodnoty, které používají všechny příkazy. K nastavení výchozích hodnot použijte následující příkazy. Nahraďte <subscription ID>, <Azure Machine Learning workspace name> a <resource group> hodnotami konfigurace:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Příklady rozhraní REST API v tomto článku používají $SUBSCRIPTION_ID, $RESOURCE_GROUP, $LOCATIONa $WORKSPACE zástupné symboly. Zástupné symboly nahraďte vlastními hodnotami následujícím způsobem:
-
$SUBSCRIPTION_ID: ID vašeho předplatného Azure.
-
$RESOURCE_GROUP: Skupina prostředků Azure, která obsahuje váš pracovní prostor.
-
$LOCATION: Oblast Azure, ve které se nachází váš pracovní prostor.
-
$WORKSPACE: Název pracovního prostoru Azure Machine Learning.
-
$COMPUTE_NAME: Název výpočetního clusteru Azure Machine Learning.
Požadavky REST pro správu vyžadují ověřovací token hlavní služby. Pomocí následujícího příkazu můžete načíst token. Token je uložený v $TOKEN proměnné prostředí:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
Poskytovatel služeb používá api-version argument k zajištění kompatibility. Argument api-version se liší od služby po službu.
Tento článek používá koncové body Azure Resource Manager (management.azure.com). Nastavte API_VERSION na nejnovější verzi Resource Manageru pro Azure Machine Learning:
API_VERSION="2025-09-01"
Pokud používáte rozhraní API roviny dat Azure Machine Learning, můžou používat jinou verzi. Například odkaz na datovou rovinu prostředků Azure AI používá 2024-04-01-preview. Další informace najdete v skupinách operací REST pro Azure Machine Learning (Resource Manager) a Azure prostředky AI (rovina dat).
Při trénování pomocí rozhraní REST API musíte nahrát data a trénovací skripty do účtu úložiště, ke kterému má pracovní prostor přístup. Následující příklad získá informace o úložišti pro váš pracovní prostor a uloží je do proměnných, abyste je mohli později použít:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
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ý 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()
az ml compute create -n cpu-cluster --type amlcompute --min-instances 0 --max-instances 4
curl -X PUT \
"https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/computes/$COMPUTE_NAME?api-version=$API_VERSION" \
-H "Authorization:Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location": "'$LOCATION'",
"properties": {
"computeType": "AmlCompute",
"properties": {
"vmSize": "Standard_D2_V2",
"vmPriority": "Dedicated",
"scaleSettings": {
"maxNodeCount": 4,
"minNodeCount": 0,
"nodeIdleTimeBeforeScaleDown": "PT30M"
}
}
}
}'
Tip
Zatímco operace vrátí odpověď po několika sekundách, tato odpověď označuje pouze, že požadavek na vytvoření je přijat. Vytvoření clusteru může trvat několik minut.
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.
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.
Příkaz az ml job create v tomto příkladu vyžaduje definiční soubor úlohy YAML. Soubor použitý v tomto příkladu obsahuje následující obsah:
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml:AzureML-lightgbm-3.3@latest
compute: azureml:cpu-cluster
display_name: lightgbm-iris-example
experiment_name: lightgbm-iris-example
description: Train a LightGBM model on the Iris dataset.
V předchozím JAZYCE YAML jste nakonfigurovali:
-
code – cesta, kde se nachází kód ke spuštění příkazu.
-
command - příkaz, který je potřeba spustit.
-
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. Na vstupy se odkazuje pomocí command výrazu ${{inputs.<input_name>}} . Další informace najdete v tématu Výrazy SDK a CLI v2.
-
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í.
K odeslání úlohy použijte následující příkaz. ID spuštění (název) trénovací úlohy je uloženo v $run_id proměnné:
run_id=$(az ml job create -f jobs/single-step/lightgbm/iris/job.yml --query name -o tsv)
K vrácení informací o úloze použijte uložené ID spuštění. Parametr --web otevře webové uživatelské rozhraní studio Azure Machine Learning, kde můžete přejít k podrobnostem úlohy:
az ml job show -n $run_id --web
Když odešlete úlohu, musíte nahrát trénovací skripty a data do cloudového úložiště, ke kterému má váš pracovní prostor Azure Machine Learning přístup.
K nahrání trénovacího skriptu použijte následující příkaz Azure CLI. Příkaz určuje adresář , který obsahuje soubory potřebné pro trénování, nikoli jednotlivé soubory. Pokud místo toho chcete k nahrání dat použít REST, podívejte se na odkaz Put Blob :
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/lightgbm/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
Vytvořte verzovanou referenci k trénovacím datům. V tomto příkladu jsou data již v cloudu a nachází se na https://azuremlexamples.blob.core.windows.net/datasets/iris.csvadrese . Další informace o odkazování na data najdete v tématu Data v Azure Machine Learning:
DATA_VERSION=$RANDOM
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/data/iris-data/versions/$DATA_VERSION?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"description\": \"Iris dataset\",
\"dataType\": \"uri_file\",
\"dataUri\": \"https://azuremlexamples.blob.core.windows.net/datasets/iris.csv\"
}
}"
Zaregistrujte odkaz na verzi trénovacího skriptu pro použití s úlohou. V tomto příkladu je výchozím umístěním skriptu účet úložiště a kontejner, do kterého jste nahráli v kroku 1. ID verze trénovacího kódu je předává a ukládá do $TRAIN_CODE proměnné:
TRAIN_CODE=$(curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/codes/train-lightgbm/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"description\": \"Train code\",
\"codeUri\": \"https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/testjob\"
}
}" | jq -r '.id')
Vytvořte prostředí, které cluster používá 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.
Azure Resource Manager nepodporuje zástupce @latest pro ID prostředí. Následující příkaz zobrazí seznam verzí prostředí a vybere naposledy upravené ID verze, které se pak uloží do $ENVIRONMENT proměnné.
ENVIRONMENT_NAME="AzureML-lightgbm-3.3"
ENVIRONMENT=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/environments/$ENVIRONMENT_NAME/versions?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" | jq -r '.value | sort_by(.systemData.lastModifiedAt) | last | .id')
Nakonec odešlete úlohu. Následující příklad ukazuje, jak odeslat úlohu, odkazovat na ID trénovacího kódu, ID prostředí, adresu URL pro vstupní data a ID výpočetního clusteru. Výstupní umístění úlohy je uloženo v $JOB_OUTPUT proměnné:
Tip
Název úlohy musí být jedinečný. V tomto příkladu uuidgen se používá k vygenerování jedinečné hodnoty pro název.
run_id=$(uuidgen)
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/jobs/$run_id?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"jobType\": \"Command\",
\"codeId\": \"$TRAIN_CODE\",
\"command\": \"python main.py --iris-csv \$AZURE_ML_INPUT_iris\",
\"environmentId\": \"$ENVIRONMENT\",
\"inputs\": {
\"iris\": {
\"jobInputType\": \"uri_file\",
\"uri\": \"https://azuremlexamples.blob.core.windows.net/datasets/iris.csv\"
}
},
\"experimentName\": \"lightgbm-iris\",
\"computeId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/computes/$COMPUTE_NAME\"
}
}"
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)
Tip
Jako součást cesty k modelu použijte název uložený v $run_id proměnné.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
Tip
Jako součást cesty k modelu použijte název uložený v $run_id proměnné.
curl --location --request PUT "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/models/sklearn/versions/1?api-version=$API_VERSION" \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--data-raw "{
\"properties\": {
\"modelType\": \"mlflow_model\",
\"modelUri\":\"runs:/$run_id/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: