PLATÍ PRO:
Rozšíření Azure CLI ml 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: Rozhraní API, na které je rozhraní příkazového řádku a sada SDK postavené.
Požadavky
Pokud chcete použít sadu SDK, nainstalujte sadu Azure Machine Learning SDK v2 pro Python.
Pokud chcete použít informace o rozhraní REST API , potřebujete následující položky:
Instanční objekt ve vašem pracovním prostoru. Pro administrativní požadavky REST použijte ověřování služební identity.
Ověřovací token instančního objektu. Tento token získáte podle kroků v části Načtení ověřovacího tokenu služebního principálu.
Nástroj curl . Program curl je k dispozici v Subsystém Windows pro Linux nebo jakékoli distribuci systému UNIX.
Návod
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 jsou založené na příkladech v úložišti GitHub s příklady v úložišti Azure Machine Learning. 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
Návod
Pomocí --depth 1 klonujte pouze nejnovější commit do úložiště, což zkracuje dobu potřebnou k dokončení operace.
Ukázková úloha
Příklady v tomto článku používají datovou sadu iris k trénování modelu MLFlow.
Trénovat v cloudu
Při trénování v cloudu se musíte připojit ke svému pracovnímu prostoru Azure Machine Learning a vybrat výpočetní prostředek, který spustí trénovací úlohu.
1. Připojení k pracovnímu prostoru
Návod
Pomocí následujících karet vyberte metodu, kterou chcete použít k trénování modelu. Když vyberete kartu, automaticky se přepnou všechny karty v tomto článku na stejnou záložku. 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 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 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)
Pokud používáte 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>hodnotu a <Azure Machine Learning workspace name><resource group>nahraďte hodnotami pro vaši konfiguraci:
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 služebního principálu. Token můžete načíst pomocí následujícího příkazu. 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 Manageru (management.azure.com). Nastavte API_VERSION na aktuální verzi Azure Machine Learning Resource Manageru:
API_VERSION="2025-09-01"
Pokud používáte rozhraní API datové roviny Azure Machine Learning, mohou používat jinou verzi. Například odkaz na datovou rovinu Azure AI Assets používá 2024-04-01-preview. Další informace najdete ve skupinách operací REST pro Azure Machine Learning (Resource Manager) a prostředky Azure 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í trénovací úlohy. 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"
}
}
}
}'
Návod
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 skript, který spustí Python skript main.py umístěný v adresáři ./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é službou 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. Odkazy 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 nástroji Azure Machine Learning Studio. 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 ve command pomocí 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é službou 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 odkaz na verze trénovacích dat. 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 ve službě 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 umístěním skriptu výchozí účet úložiště a kontejner, do které jste nahráli v kroku 1. ID trénovacího kódu s verzí se vrátí a uloží 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é službou Azure Machine Learning s názvem AzureML-lightgbm-3.3.
Azure Resource Manager nepodporuje @latest zkratku 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é:
Návod
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\"
}
}"
Registrace natrénovaného modelu
Následující příklady ukazují, jak zaregistrovat model v pracovním prostoru Azure Machine Learning.
Návod
Trénovací úloha vrátí name vlastnost. 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)
Návod
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
Návod
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 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žívaných v tomto článku najdete v následující referenční dokumentaci: