Delen via


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 mltableis, 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 codeen entry_scriptprogram_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, , downloaddirect 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}}

Volgende stappen