YAML-schema voor parallelle CLI-taak (v2)
VAN TOEPASSING OP: Azure CLI ml-extensie v2 (huidige)
Belangrijk
Parallelle taak kan alleen worden gebruikt als één stap binnen een Azure Machine Learning-pijplijntaak. Er is op dit moment dus geen bron-JSON-schema voor parallelle taak. Dit document bevat de geldige sleutels en de bijbehorende waarden bij het maken van een parallelle taak in een pijplijn.
Notitie
De YAML-syntaxis die in dit document wordt beschreven, is gebaseerd op het JSON-schema voor de nieuwste versie van de ML CLI v2-extensie. Deze syntaxis werkt gegarandeerd alleen met de nieuwste versie van de ML CLI v2-extensie. U vindt de schema's voor oudere extensieversies op https://azuremlschemasprod.azureedge.net/.
YAML-syntaxis
Sleutel | Type | Description | Toegestane waarden | Default value |
---|---|---|---|---|
type |
Const | Vereist. Het type taak. | parallel |
|
inputs |
object | Woordenlijst met invoer voor de parallelle taak. De sleutel is een naam voor de invoer binnen de context van de taak en de waarde is de invoerwaarde. In de program_arguments ${{ inputs.<input_name> }} expressie kan naar invoer worden verwezen. Er kan naar parallelle taakinvoer worden verwezen door pijplijninvoer met behulp van de ${{ parent.inputs.<input_name> }} expressie. Zie de syntaxis van expressies voor bindinginvoer tussen stappen in een pijplijntaak voor het binden van de invoer en uitvoer van een parallelle stap aan de pijplijninvoer. |
||
inputs.<input_name> |
getal, geheel getal, booleaanse waarde, tekenreeks of object | Een van een letterlijke waarde (van het type getal, geheel getal, booleaanse waarde of tekenreeks) of een object met een specificatie van de invoergegevens van een taak. | ||
outputs |
object | Woordenlijst van uitvoerconfiguraties van de parallelle taak. De sleutel is een naam voor de uitvoer binnen de context van de taak en de waarde is de uitvoerconfiguratie. Naar parallelle taakuitvoer kan worden verwezen door pijplijnuitvoer met behulp van de ${{ parents.outputs.<output_name> }} expressie. Zie de expressiesyntaxis voor bindingsinvoer en uitvoer tussen stappen in een pijplijntaak voor het verbinden van de uitvoer van een parallelle stap. |
||
outputs.<output_name> |
object | U kunt het object leeg laten. In dat geval is de uitvoer standaard van het type uri_folder en genereert Azure Machine Learning een uitvoerlocatie voor de uitvoer op basis van het volgende ge templatiseerde pad: {settings.datastore}/azureml/{job-name}/{output-name}/ Bestanden naar de uitvoermap worden geschreven via koppeling voor lezen/schrijven. Als u een andere modus voor de uitvoer wilt opgeven, geeft u een object op dat de taakuitvoerspecificatie bevat. |
||
compute |
tekenreeks | Naam van het rekendoel waarop de taak moet worden uitgevoerd. De waarde kan een verwijzing zijn naar een bestaande berekening in de werkruimte (met behulp van de azureml:<compute_name> syntaxis) of local om lokale uitvoering aan te wijzen. Wanneer u parallelle taak in de pijplijn gebruikt, kunt u deze instelling leeg laten. In dat geval wordt de berekening automatisch geselecteerd door de default_compute pijplijn. |
local |
|
task |
object | Vereist. De sjabloon voor het definiëren van de gedistribueerde taken voor parallelle taken. Zie Kenmerken van de task sleutel. |
||
input_data |
object | Vereist. Definieer welke invoergegevens worden gesplitst in minibatches om de parallelle taak uit te voeren. Alleen van toepassing op het verwijzen naar een van de parallelle taken inputs met behulp van de ${{ inputs.<input_name> }} expressie |
||
mini_batch_size |
tekenreeks | Definieer de grootte van elke minibatch om de invoer te splitsen. Als de input_data een map of set bestanden is, definieert dit getal het aantal bestanden voor elke minibatch. Bijvoorbeeld 10, 100. Als de input_data een tabelgegevens van mltable is, definieert dit getal de fysieke grootte van proximaat voor elke minibatch. Bijvoorbeeld 100 kb, 100 mb. |
1 | |
partition_keys |
lijst | De sleutels die worden gebruikt voor het partitioneren van gegevenssets in minibatches. Indien opgegeven, worden de gegevens met dezelfde sleutel gepartitioneerd in dezelfde minibatch. Als beide partition_keys en mini_batch_size zijn opgegeven, worden de partitiesleutels van kracht. |
||
mini_batch_error_threshold |
geheel getal | Definieer het aantal mislukte minibatches dat in deze parallelle taak kan worden genegeerd. Als het aantal mislukte minibatches hoger is dan deze drempelwaarde, wordt de parallelle taak gemarkeerd als mislukt. Minibatch is gemarkeerd als mislukt als: - het aantal retouren van run() is kleiner dan het aantal minibatches. - vangen uitzonderingen in aangepaste run() code. -1 is het standaardnummer, wat betekent dat u alle mislukte minibatch tijdens parallelle taak wilt negeren. |
[-1, int.max] | -1 |
logging_level |
tekenreeks | Definieer welk niveau van logboeken wordt gedumpt naar logboekbestanden van gebruikers. | INFO, WAARSCHUWING, FOUTOPSPORING | INFO |
resources.instance_count |
geheel getal | Het aantal knooppunten dat moet worden gebruikt voor de taak. | 1 | |
max_concurrency_per_instance |
geheel getal | Definieer het aantal processen op elk rekenknooppunt. Voor een GPU-rekenproces is de standaardwaarde 1. Voor een CPU-berekening is de standaardwaarde het aantal kernen. |
||
retry_settings.max_retries |
geheel getal | Definieer het aantal nieuwe pogingen wanneer minibatch is mislukt of time-out. Als alle nieuwe pogingen zijn mislukt, wordt de minibatch gemarkeerd als niet meegeteld door mini_batch_error_threshold berekening. |
2 | |
retry_settings.timeout |
geheel getal | Definieer de time-out in seconden voor het uitvoeren van een aangepaste run()-functie. Als de uitvoeringstijd hoger is dan deze drempelwaarde, wordt de minibatch afgebroken en gemarkeerd als een mislukte minibatch om het opnieuw te activeren. | (0, 259200] | 60 |
environment_variables |
object | Woordenlijst van sleutel-waardeparen van omgevingsvariabelen die moeten worden ingesteld voor het proces waarin de opdracht wordt uitgevoerd. |
Kenmerken van de task
sleutel
Sleutel | Type | Description | Toegestane waarden | Default value |
---|---|---|---|---|
type |
Const | Vereist. Het type taak. Alleen voorlopig van toepassing run_function .In run_function de modus moet u het Python-script opgeven code en entry_script program_arguments definiëren met uitvoerbare functies en argumenten. Opmerking: parallelle taak biedt alleen ondersteuning voor Python-scripts in deze modus. |
run_function | run_function |
code |
tekenreeks | Lokaal pad naar de broncodemap die moet worden geüpload en gebruikt voor de taak. | ||
entry_script |
tekenreeks | Het Python-bestand dat de implementatie van vooraf gedefinieerde parallelle functies bevat. Zie Invoerscript voorbereiden voor parallelle taak voor meer informatie. | ||
environment |
tekenreeks of object | Vereist de omgeving die moet worden gebruikt voor het uitvoeren van de taak. De waarde kan een verwijzing zijn naar een bestaande versieomgeving in de werkruimte of een inline-omgevingsspecificatie. Als u naar een bestaande omgeving wilt verwijzen, gebruikt u de azureml:<environment_name>:<environment_version> syntaxis of azureml:<environment_name>@latest (om te verwijzen naar de nieuwste versie van een omgeving). Als u een inlineomgeving wilt definiëren, volgt u het omgevingsschema. Sluit de name eigenschappen en version eigenschappen uit omdat ze niet worden ondersteund voor inline-omgevingen. |
||
program_arguments |
tekenreeks | De argumenten die moeten worden doorgegeven aan het invoerscript. Kan '--<arg_name> ${inputs bevatten.<>intput_name}" verwijzing naar invoer of uitvoer. Parallelle taak biedt een lijst met vooraf gedefinieerde argumenten voor het instellen van de configuratie van parallelle uitvoering. Zie vooraf gedefinieerde argumenten voor parallelle taak voor meer informatie. |
||
append_row_to |
tekenreeks | Aggregeren alle retourneert van elke uitvoering van minibatch en voert deze uit in dit bestand. Kan verwijzen naar een van de uitvoer van parallelle taak met behulp van de expressie ${{outputs.<>output_name}} |
Taakinvoer
Sleutel | Type | Description | Toegestane waarden | Default value |
---|---|---|---|---|
type |
tekenreeks | Het type taakinvoer. Geef mltable op voor invoergegevens die verwijzen naar een locatie waar het mltable-metabestand staat of uri_folder voor invoergegevens die naar een mapbron verwijzen. |
mltable , uri_folder |
uri_folder |
path |
tekenreeks | Het pad naar de gegevens die moeten worden gebruikt als invoer. De waarde kan op een aantal manieren worden opgegeven: - Een lokaal pad naar het gegevensbestand of de map, bijvoorbeeld path: ./iris.csv . De gegevens worden geüpload tijdens het indienen van de taak. - Een URI van een cloudpad naar het bestand of de map die moet worden gebruikt als invoer. Ondersteunde URI-typen zijn azureml , https , wasbs , , abfss . adl Zie core yaml-syntaxis voor meer informatie over het gebruik van de azureml:// URI-indeling. - Een bestaand geregistreerd Azure Machine Learning-gegevensasset dat moet worden gebruikt als invoer. Als u wilt verwijzen naar een geregistreerde gegevensasset, gebruikt u de azureml:<data_name>:<data_version> syntaxis of azureml:<data_name>@latest (om te verwijzen naar de nieuwste versie van die gegevensasset), bijvoorbeeld path: azureml:cifar10-data:1 of path: azureml:cifar10-data@latest . |
||
mode |
tekenreeks | Modus van hoe de gegevens moeten worden geleverd aan het rekendoel. Voor alleen-lezenkoppeling ( ro_mount ) worden de gegevens gebruikt als koppelpad. Een map wordt gekoppeld als een map en een bestand wordt gekoppeld als een bestand. Azure Machine Learning lost de invoer voor het koppelpad op. Voor download de modus worden de gegevens gedownload naar het rekendoel. Azure Machine Learning lost de invoer voor het gedownloade pad op. Als u alleen de URL van de opslaglocatie van de gegevensartefacten wilt in plaats van de gegevens zelf te koppelen of te downloaden, kunt u de direct modus gebruiken. De URL van de opslaglocatie wordt doorgegeven als de taakinvoer. In dit geval bent u volledig verantwoordelijk voor het afhandelen van referenties voor toegang tot de opslag. |
ro_mount , , download direct |
ro_mount |
Taakuitvoer
Sleutel | Type | Description | Toegestane waarden | Default value |
---|---|---|---|---|
type |
tekenreeks | Het type taakuitvoer. Voor het standaardtype uri_folder komt de uitvoer overeen met een map. |
uri_folder |
uri_folder |
mode |
tekenreeks | Modus van hoe uitvoerbestand(en) worden geleverd aan de doelopslag. Voor de koppelingsmodus lezen/schrijven (rw_mount ) is de uitvoermap een gekoppelde map. Voor de uploadmodus worden de geschreven bestanden aan het einde van de taak geüpload. |
rw_mount , upload |
rw_mount |
Vooraf gedefinieerde argumenten voor parallelle taak
Toets | Beschrijving | Toegestane waarden | Default value |
---|---|---|---|
--error_threshold |
De drempelwaarde voor mislukte items. Mislukte items worden geteld door het getal tussen invoer en retourneert van elke minibatch. Als de som van mislukte items hoger is dan deze drempelwaarde, wordt de parallelle taak gemarkeerd als mislukt. Opmerking: -1 is het standaardnummer, wat betekent dat alle fouten tijdens parallelle taak moeten worden genegeerd. |
[-1, int.max] | -1 |
--allowed_failed_percent |
Vergelijkbaar met mini_batch_error_threshold maar gebruikt het percentage mislukte minibatches in plaats van het aantal. |
[0, 100] | 100 |
--task_overhead_timeout |
De time-out in de tweede voor de initialisatie van elke minibatch. Laad bijvoorbeeld minibatchgegevens en geef deze door om de functie run() uit te voeren. | (0, 259200] | 30 |
--progress_update_timeout |
De time-out in de tweede voor het bewaken van de voortgang van de uitvoering van minibatch. Als er geen voortgangsupdates worden ontvangen binnen deze time-outinstelling, wordt de parallelle taak gemarkeerd als mislukt. | (0, 259200] | Dynamisch berekend door andere instellingen. |
--first_task_creation_timeout |
De time-out in de tweede voor het controleren van de tijd tussen de taak en de uitvoering van de eerste minibatch. | (0, 259200] | 600 |
--copy_logs_to_parent |
Booleaanse optie om de voortgang, het overzicht en de logboeken van de taak naar de bovenliggende pijplijntaak te kopiëren. | True, False | Onwaar |
--metrics_name_prefix |
Geef het aangepaste voorvoegsel van uw metrische gegevens op in deze parallelle taak. | ||
--push_metrics_to_parent |
Booleaanse optie om metrische gegevens naar de bovenliggende pijplijntaak te pushen. | True, False | Onwaar |
--resource_monitor_interval |
Het tijdsinterval in seconden om resourcegebruik van knooppunten te dumpen (bijvoorbeeld cpu, geheugen) om de map te registreren onder het pad 'logs/sys/perf'. Opmerking: frequente dumpresourcelogboeken vertragen de uitvoeringssnelheid van uw minibatch enigszins. Stel deze waarde in op '0' om het dumpen van resourcegebruik te stoppen. |
[0, int.max] | 600 |
Opmerkingen
De az ml job
opdrachten kunnen worden gebruikt voor het beheren van Azure Machine Learning-taken.
Voorbeelden
Voorbeelden zijn beschikbaar in de GitHub-voorbeeldenopslagplaats. Hieronder ziet u een aantal.
YAML: Parallelle taak gebruiken in pijplijn
$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}}