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é.
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 a curl -d "key=val" -X POST uri stává se 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. Tento nástroj slouží k extrakci hodnot z dokumentů JSON vrácených z 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:
Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště, což zkracuje dobu 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ý 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. 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. Tyto podrobnosti použijete v MLClientazure.ai.ml oboru názvů k získání popisovače požadovaného pracovního prostoru Azure Machine Learning. K ověření použijete výchozí ověřování Azure. V tomto příkladu najdete další podrobnosti o konfiguraci přihlašovacích údajů a připojení k pracovnímu prostoru.
#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é, skupina prostředků a název pracovního prostoru. I když můžete pro každý příkaz zadat tyto parametry, můžete také nastavit výchozí hodnoty, které se použijí pro všechny příkazy. K nastavení výchozích hodnot použijte následující příkazy. Nahraďte <subscription ID>hodnotu a <resource group><Azure Machine Learning workspace name>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.
Rest pro správu vyžaduje ověřovací token instančního objektu. Token můžete načíst pomocí následujícího příkazu. Token je uložený v $TOKEN proměnné prostředí:
Poskytovatel služeb používá api-version argument k zajištění kompatibility. Argument api-version se liší od služby po službu. Nastavte verzi rozhraní API jako proměnnou tak, aby vyhovovala budoucím verzím:
API_VERSION="2022-05-01"
Při trénování pomocí rozhraní REST API se data a trénovací skripty musí nahrát 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, abychom je mohli použít později:
Výpočetní cluster Azure Machine Learning je plně spravovaný výpočetní prostředek, který lze 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 .
Ke spuštění tohoto skriptu použijete command skript, který spustí main.py skript Pythonu umístěný ve složce ./sdk/python/jobs/single-step/lightgbm/iris/src/. Příkaz se spustí tak, že ho job odešlete jako službu Azure Machine Learning.
# 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ží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. Pomocí direktivy @latest používáme nejnovější verzi tohoto prostředí. 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. Vstupy jsou odkazovány ve 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 tématu Výrazy SDK a CLI v2.
Když úlohu odešlete, vrátí se adresa 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 použitý v tomto příkladu vyžaduje definiční soubor úlohy YAML. Obsah souboru použitého v tomto příkladu:
$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.
Ve výše uvedeném příkladu 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. Vstupy jsou odkazovány ve 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žíváme kurátorované nebo připravené prostředí poskytované službou Azure Machine Learning s názvem AzureML-lightgbm-3.3. Pomocí direktivy @latest používáme nejnovější verzi tohoto prostředí. 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)
Uložené ID spuštění můžete použít k vrácení informací o úloze. 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
V rámci odesílání úloh se trénovací skripty a data musí nahrát 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, přečtěte si referenční informace k 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:
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é:
Vytvořte prostředí, které cluster použije 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. Následující příkaz načte seznam verzí prostředí s nejnovější verzí v horní části kolekce. jq slouží k načtení ID nejnovější ([0]) verze, která se pak uloží do $ENVIRONMENT proměnné.
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 se uloží do $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.
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)
Tip
Název (uložený v $run_id proměnné) se používá jako součást cesty k modelu.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
Tip
Název (uložený v $run_id proměnné) se používá jako součást cesty k modelu.
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: