CLI-schema (v2) parallellt jobb YAML
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
Viktigt!
Parallella jobb kan bara användas som ett enda steg i ett Azure Machine Learning-pipelinejobb. Det finns därför inget JSON-källschema för parallella jobb just nu. I det här dokumentet visas giltiga nycklar och deras värden när du skapar ett parallellt jobb i en pipeline.
Kommentar
YAML-syntaxen som beskrivs i det här dokumentet baseras på JSON-schemat för den senaste versionen av ML CLI v2-tillägget. Den här syntaxen är garanterad att endast fungera med den senaste versionen av ML CLI v2-tillägget. Du hittar scheman för äldre tilläggsversioner på https://azuremlschemasprod.azureedge.net/.
YAML-syntax
Nyckel | Typ | Beskrivning | Tillåtna värden | Standardvärde |
---|---|---|---|---|
type |
Const | Obligatoriskt. Typen av jobb. | parallel |
|
inputs |
objekt | Ordlista över indata till det parallella jobbet. Nyckeln är ett namn på indata i jobbets kontext och värdet är indatavärdet. Indata kan refereras i program_arguments med uttrycket ${{ inputs.<input_name> }} . Parallella jobbindata kan refereras till av pipelineindata med uttrycket ${{ parent.inputs.<input_name> }} . Information om hur du binder indata från ett parallellt steg till pipelineindata finns i uttryckssyntaxen för bindning av indata och utdata mellan steg i ett pipelinejobb. |
||
inputs.<input_name> |
tal, heltal, booleskt värde, sträng eller objekt | Ett av ett literalvärde (av typnummer, heltal, booleskt värde eller sträng) eller ett objekt som innehåller en dataspecifikation för jobbindata. | ||
outputs |
objekt | Ordlista över utdatakonfigurationer för det parallella jobbet. Nyckeln är ett namn på utdata i jobbets kontext och värdet är utdatakonfigurationen. Parallella jobbutdata kan refereras till av pipelineutdata med uttrycket ${{ parents.outputs.<output_name> }} . Information om hur du binder utdata från ett parallellt steg till pipelineutdata finns i Uttryckssyntaxen för bindning av indata och utdata mellan steg i ett pipelinejobb. |
||
outputs.<output_name> |
objekt | Du kan lämna objektet tomt, i vilket fall som standard kommer utdata att vara av typen uri_folder och Azure Machine Learning systemgenereras en utdataplats för utdata baserat på följande templaterade sökväg: {settings.datastore}/azureml/{job-name}/{output-name}/ . Filer till utdatakatalogen skrivs via läs- och skrivmontering. Om du vill ange ett annat läge för utdata anger du ett objekt som innehåller jobbutdataspecifikationen. |
||
compute |
sträng | Namnet på beräkningsmålet som jobbet ska köras på. Värdet kan antingen vara en referens till en befintlig beräkning på arbetsytan (med hjälp av syntaxen azureml:<compute_name> ) eller local för att ange lokal körning. När du använder parallella jobb i pipeline kan du lämna den här inställningen tom, och i så fall väljs beräkningen automatiskt av pipelinen default_compute . |
local |
|
task |
objekt | Obligatoriskt. Mallen för att definiera distribuerade uppgifter för parallella jobb. Se Attribut för task nyckeln. |
||
input_data |
objekt | Obligatoriskt. Definiera vilka indata som ska delas upp i mini-batchar för att köra det parallella jobbet. Gäller endast för att referera till ett av det parallella jobbet inputs med hjälp ${{ inputs.<input_name> }} av uttrycket |
||
mini_batch_size |
sträng | Definiera storleken på varje mini-batch för att dela indata. Om input_data är en mapp eller uppsättning filer definierar det här numret antalet filer för varje mini-batch. Till exempel 10, 100. Om input_data är tabelldata från mltable definierar det här talet den proximatiska fysiska storleken för varje mini-batch. Till exempel 100 kb, 100 mb. |
1 | |
partition_keys |
lista | De nycklar som används för att partitionera datauppsättningen i minibatch. Om det anges partitioneras data med samma nyckel i samma mini-batch. Om både partition_keys och mini_batch_size anges börjar partitionsnycklarna att gälla. |
||
mini_batch_error_threshold |
integer | Definiera antalet misslyckade minibatch som kan ignoreras i det här parallella jobbet. Om antalet misslyckade minibatch är högre än det här tröskelvärdet markeras det parallella jobbet som misslyckat. Mini-batch markeras som misslyckad om: – antalet retur från run() är mindre än mini-batch-indataantalet. – fånga undantag i anpassad run()-kod. "-1" är standardnumret, vilket innebär att ignorera alla misslyckade mini-batch under parallella jobb. |
[-1, int.max] | -1 |
logging_level |
sträng | Definiera vilken nivå av loggar som ska dumpas för användarloggfiler. | INFO, WARNING, DEBUG | INFO |
resources.instance_count |
integer | Antalet noder som ska användas för jobbet. | 1 | |
max_concurrency_per_instance |
integer | Definiera antalet processer på varje beräkningsnod. För en GPU-beräkning är standardvärdet 1. För en CPU-beräkning är standardvärdet antalet kärnor. |
||
retry_settings.max_retries |
integer | Definiera antalet återförsök när mini-batchen misslyckas eller tidsgränsen överskrids. Om alla återförsök misslyckas markeras mini-batchen som att den inte kunde räknas med i mini_batch_error_threshold beräkningen. |
2 | |
retry_settings.timeout |
integer | Definiera tidsgränsen i sekunder för körning av anpassad run()-funktion. Om körningstiden är högre än det här tröskelvärdet avbryts mini-batchen och markeras som en misslyckad mini-batch för att utlösa återförsök. | (0, 259200] | 60 |
environment_variables |
objekt | Ordlista över nyckel/värde-par för miljövariabler som ska anges i processen där kommandot körs. |
Attribut för task
nyckeln
Nyckel | Typ | Beskrivning | Tillåtna värden | Standardvärde |
---|---|---|---|---|
type |
Const | Obligatoriskt. Typen av uppgift. Gäller endast för run_function nu.I run_function läget måste du ange code , entry_script och program_arguments definiera Python-skript med körbara funktioner och argument. Obs! Parallellt jobb stöder endast Python-skript i det här läget. |
run_function | run_function |
code |
sträng | Lokal sökväg till källkodskatalogen som ska laddas upp och användas för jobbet. | ||
entry_script |
sträng | Python-filen som innehåller implementeringen av fördefinierade parallella funktioner. Mer information finns i Förbereda inmatningsskript för parallella jobb. | ||
environment |
sträng eller objekt | Krävs Den miljö som ska användas för att köra uppgiften. Värdet kan antingen vara en referens till en befintlig version av miljön på arbetsytan eller en infogad miljöspecifikation. Om du vill referera till en befintlig miljö använder du syntaxen azureml:<environment_name>:<environment_version> eller azureml:<environment_name>@latest (för att referera till den senaste versionen av en miljö). Om du vill definiera en infogad miljö följer du miljöschemat. name Exkludera egenskaperna och version eftersom de inte stöds för infogade miljöer. |
||
program_arguments |
sträng | Argumenten som ska skickas till postskriptet. Kan innehålla "--<arg_name> ${{inputs.<>intput_name}}" referens till indata eller utdata. Parallella jobb innehåller en lista över fördefinierade argument för att ange konfiguration av parallell körning. Mer information finns i fördefinierade argument för parallella jobb. |
||
append_row_to |
sträng | Aggregera alla returer från varje körning av mini-batch och mata ut den till den här filen. Kan referera till någon av utdata från parallella jobb med uttrycket ${{outputs.<>output_name}} |
Jobbindata
Nyckel | Typ | Beskrivning | Tillåtna värden | Standardvärde |
---|---|---|---|---|
type |
sträng | Typ av jobbindata. Ange mltable för indata som pekar på en plats där mltable-metafilen finns, eller uri_folder för indata som pekar på en mappkälla. |
mltable , uri_folder |
uri_folder |
path |
sträng | Sökvägen till de data som ska användas som indata. Värdet kan anges på några sätt: – En lokal sökväg till datakällans fil eller mapp, till exempel path: ./iris.csv . Data laddas upp under jobböverföringen. – En URI för en molnsökväg till filen eller mappen som ska användas som indata. URI-typer som stöds är azureml , https , wasbs , abfss , adl . Mer information finns i Core yaml-syntax om hur du använder azureml:// URI-formatet. – En befintlig registrerad Azure Machine Learning-datatillgång som ska användas som indata. Om du vill referera till en registrerad datatillgång använder du syntaxen azureml:<data_name>:<data_version> eller azureml:<data_name>@latest (för att referera till den senaste versionen av den datatillgången), till exempel path: azureml:cifar10-data:1 eller path: azureml:cifar10-data@latest . |
||
mode |
sträng | Läge för hur data ska levereras till beräkningsmålet. För skrivskyddad montering ( ro_mount ) används data som en monteringssökväg. En mapp monteras som en mapp och en fil monteras som en fil. Azure Machine Learning löser indata till monteringssökvägen. För download läge laddas data ned till beräkningsmålet. Azure Machine Learning löser indata till den nedladdade sökvägen. Om du bara vill ha URL:en för lagringsplatsen för dataartefakterna i stället för att montera eller ladda ned själva data kan du använda direct läget. Den skickar in URL:en för lagringsplatsen som jobbindata. I det här fallet är du helt ansvarig för att hantera autentiseringsuppgifter för att få åtkomst till lagringen. |
ro_mount , , download direct |
ro_mount |
Jobbutdata
Nyckel | Typ | Beskrivning | Tillåtna värden | Standardvärde |
---|---|---|---|---|
type |
sträng | Typ av jobbutdata. För standardtypen uri_folder motsvarar utdata en mapp. |
uri_folder |
uri_folder |
mode |
sträng | Läge för hur utdatafiler levereras till mållagringen. För skrivskyddat monteringsläge (rw_mount ) är utdatakatalogen en monterad katalog. För uppladdningsläge laddas de filer som skrivs upp i slutet av jobbet. |
rw_mount , upload |
rw_mount |
Fördefinierade argument för parallella jobb
Nyckel | beskrivning | Tillåtna värden | Standardvärde |
---|---|---|---|
--error_threshold |
Tröskelvärdet för misslyckade objekt. Misslyckade objekt räknas av antalet mellanrum mellan indata och returer från varje mini-batch. Om summan av misslyckade objekt är högre än det här tröskelvärdet markeras det parallella jobbet som misslyckat. Obs! "-1" är standardnumret, vilket innebär att ignorera alla fel under parallella jobb. |
[-1, int.max] | -1 |
--allowed_failed_percent |
mini_batch_error_threshold Liknar men använder procentandelen misslyckade minibatch i stället för antalet. |
[0, 100] | 100 |
--task_overhead_timeout |
Tidsgränsen i andra för initiering av varje mini-batch. Läs till exempel in mini-batch-data och skicka dem till funktionen run(). | (0, 259200] | 30 |
--progress_update_timeout |
Timeouten i andra för övervakning av förloppet för mini-batch-körning. Om inga förloppsuppdateringar tas emot inom den här tidsgränsinställningen markeras det parallella jobbet som misslyckat. | (0, 259200] | Dynamiskt beräknad av andra inställningar. |
--first_task_creation_timeout |
Tidsgränsen i andra för övervakning av tiden mellan jobbet börjar och körningen av den första mini-batchen. | (0, 259200] | 600 |
--copy_logs_to_parent |
Booleskt alternativ för om du vill kopiera jobbförloppet, översikten och loggarna till det överordnade pipelinejobbet. | Sant, Falskt | Falsk |
--metrics_name_prefix |
Ange det anpassade prefixet för dina mått i det här parallella jobbet. | ||
--push_metrics_to_parent |
Booleskt alternativ för om du vill skicka mått till det överordnade pipelinejobbet. | Sant, Falskt | Falsk |
--resource_monitor_interval |
Tidsintervallet i sekunder för att dumpa nodresursanvändning (till exempel cpu, minne) för att logga mappen under sökvägen "loggar/sys/perf". Obs! Frekventa dumpresursloggar saktar ned körningshastigheten för din mini-batch något. Ställ in det här värdet på "0" för att stoppa dumpning av resursanvändning. |
[0, int.max] | 600 |
Kommentarer
Kommandona az ml job
kan användas för att hantera Azure Machine Learning-jobb.
Exempel
Exempel är tillgängliga i GitHub-exempellagringsplatsen. Flera visas nedan.
YAML: Använda parallella jobb i pipeline
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: iris-batch-prediction-using-parallel
description: The hello world pipeline job with inline parallel job
tags:
tag: tagvalue
owner: sdkteam
settings:
default_compute: azureml:cpu-cluster
jobs:
batch_prediction:
type: parallel
compute: azureml:cpu-cluster
inputs:
input_data:
type: mltable
path: ./neural-iris-mltable
mode: direct
score_model:
type: uri_folder
path: ./iris-model
mode: download
outputs:
job_output_file:
type: uri_file
mode: rw_mount
input_data: ${{inputs.input_data}}
mini_batch_size: "10kb"
resources:
instance_count: 2
max_concurrency_per_instance: 2
logging_level: "DEBUG"
mini_batch_error_threshold: 5
retry_settings:
max_retries: 2
timeout: 60
task:
type: run_function
code: "./script"
entry_script: iris_prediction.py
environment:
name: "prs-env"
version: 1
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: ./environment/environment_parallel.yml
program_arguments: >-
--model ${{inputs.score_model}}
--error_threshold 5
--allowed_failed_percent 30
--task_overhead_timeout 1200
--progress_update_timeout 600
--first_task_creation_timeout 600
--copy_logs_to_parent True
--resource_monitor_interva 20
append_row_to: ${{outputs.job_output_file}}