CLI-kommandokomponentens YAML-schema (v2)

GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)

JSON-källschemat finns på https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json.

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
$schema sträng YAML-schemat. Om du använder Tillägget Azure Mašinsko učenje VS Code för att skapa YAML-filen, inklusive $schema längst upp i filen, kan du anropa schema- och resursavslutningar.
type Const Typ av komponent. command command
name sträng Obligatoriskt. Komponentens namn. Måste börja med gemener. Tillåtna tecken är gemener, siffror och understreck(_). Maximal längd är 255 tecken.
version sträng Version av komponenten. Om det utelämnas genereras en version automatiskt av Azure Mašinsko učenje.
display_name sträng Visningsnamn för komponenten i studiogränssnittet. Kan vara icke-unik på arbetsytan.
description sträng Beskrivning av komponenten.
tags objekt Ordlista med taggar för komponenten.
is_deterministic boolean Det här alternativet avgör om komponenten ska generera samma utdata för samma indata. Du bör vanligtvis ange detta till false för komponenter som läser in data från externa källor, till exempel importera data från en URL. Det beror på att data på URL:en kan ändras över tid. true
command sträng Obligatoriskt. Kommandot som ska köras.
code sträng Lokal sökväg till källkodskatalogen som ska laddas upp och användas för komponenten.
environment sträng eller objekt Obligatoriskt. Miljön som ska användas för komponenten. Det här 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 anpassad miljö använder du syntaxen azureml:<environment-name>:<environment-version> . Om du vill referera till en kuraterad miljö använder du syntaxen azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> . Mer information om hur du refererar till miljöer finns i Hantera miljöer

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.
distribution objekt Distributionskonfigurationen för distribuerade träningsscenarier. En av MpiConfiguration, PyTorchConfiguration eller TensorFlowConfiguration.
resources.instance_count integer Antalet noder som ska användas för jobbet. 1
inputs objekt Ordlista över komponentindata. Nyckeln är ett namn på indata i komponentens kontext och värdet är komponentens indatadefinition.

Indata kan refereras i command med uttrycket ${{ inputs.<input_name> }} .
inputs.<input_name> objekt Komponentens indatadefinition. Se Komponentindata för uppsättningen konfigurerbara egenskaper.
outputs objekt Ordlista över komponentutdata. Nyckeln är ett namn på utdata i komponentens kontext och värdet är komponentens utdatadefinition.

Utdata kan refereras i command med uttrycket ${{ outputs.<output_name> }} .
outputs.<output_name> objekt Komponentens utdatadefinition. Se Komponentutdata för uppsättningen konfigurerbara egenskaper.

Distributionskonfigurationer

MpiConfiguration

Nyckel Typ Beskrivning Tillåtna värden
type Const Obligatoriskt. Distributionstyp. mpi
process_count_per_instance integer Obligatoriskt. Antalet processer per nod som ska startas för jobbet.

PyTorchConfiguration

Nyckel Typ Beskrivning Tillåtna värden Standardvärde
type Const Obligatoriskt. Distributionstyp. pytorch
process_count_per_instance integer Antalet processer per nod som ska startas för jobbet. 1

TensorFlowConfiguration

Nyckel Typ Beskrivning Tillåtna värden Standardvärde
type Const Obligatoriskt. Distributionstyp. tensorflow
worker_count integer Antalet arbetare som ska startas för jobbet. Standardvärdet är resources.instance_count.
parameter_server_count integer Antalet parameterservrar som ska startas för jobbet. 0

Komponentindata

Nyckel Typ Beskrivning Tillåtna värden Standardvärde
type sträng Obligatoriskt. Typ av komponentindata. Läs mer om dataåtkomst number, integer, boolean, string, uri_file, , uri_folder, , mltablemlflow_model
description sträng Beskrivning av indata.
default tal, heltal, booleskt värde eller sträng Standardvärdet för indata.
optional boolean Om indata krävs. Om det är inställt på truemåste du använda kommandot innehåller valfria indata med $[[]] false
min heltal eller tal Det minsta godkända värdet för indata. Det här fältet kan bara anges om type fältet är number eller integer.
max heltal eller tal Det maximala godkända värdet för indata. Det här fältet kan bara anges om type fältet är number eller integer.
enum matris Listan över tillåtna värden för indata. Gäller endast om type fältet är string.

Komponentutdata

Nyckel Typ Beskrivning Tillåtna värden Standardvärde
type sträng Obligatoriskt. Typ av komponentutdata. uri_file, uri_folder, , mltablemlflow_model
description sträng Beskrivning av utdata.

Kommentarer

Kommandona az ml component kan användas för att hantera Azure Mašinsko učenje-komponenter.

Exempel

Kommandokomponentexempel är tillgängliga i GitHub-exempellagringsplatsen. Välj exempel för visas nedan.

Exempel är tillgängliga i GitHub-exempellagringsplatsen. Flera visas nedan.

YAML: Hello World-kommandokomponent

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command

name: hello_python_world
display_name: Hello_Python_World
version: 1

code: ./src

environment: 
  image: python

command: >-
  python hello.py

YAML: Komponent med olika indatatyper

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
  author: azureml-sdk-team
type: command
inputs:
  training_data: 
    type: uri_folder
  max_epocs:
    type: integer
    optional: true
  learning_rate: 
    type: number
    default: 0.01
    optional: true
  learning_rate_schedule: 
    type: string
    default: time-based
    optional: true
outputs:
  model_output:
    type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
  python train.py 
  --training_data ${{inputs.training_data}} 
  $[[--max_epocs ${{inputs.max_epocs}}]]
  $[[--learning_rate ${{inputs.learning_rate}}]]
  $[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
  --model_output ${{outputs.model_output}}

Definiera valfria indata på kommandoraden

När indata anges som optional = truemåste du använda $[[]] för att omfamna kommandoraden med indata. Till exempel $[[--input1 ${{inputs.input1}}]. Kommandoraden vid körning kan ha olika indata.

  • Om du bara använder ange de obligatoriska training_data parametrarna och model_output parametrarna ser kommandoraden ut så här:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Om inget värde anges vid körning learning_rate och learning_rate_schedule använder standardvärdet.

  • Om alla indata/utdata ger värden under körningen ser kommandoraden ut så här:
python train.py --training_data some_input_path --max_epocs 10 --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Vanliga fel och rekommendationer

Följande är några vanliga fel och motsvarande rekommenderade förslag när du definierar en komponent.

Nyckel Fel Rekommendation
kommando 1. Endast valfria indata kan finnas i $[[]]
2. Det går inte att använda \ för att skapa en ny rad i kommandot .
3. Indata eller utdata hittas inte.
1. Kontrollera att alla indata eller utdata som används i kommandot redan har definierats i avsnitten inputs och outputs använder rätt format för valfria indata $[[]] eller obligatoriska ${{}}.
2. Använd \ inte för att skapa en ny rad.
-miljö 1. Det finns ingen definition för miljöversionen {envName} {envVersion}.
2. Det finns ingen miljö för namnet {envName}, version {envVersion}.
3. Det gick inte att hitta tillgången med ID {envAssetId}.
1. Kontrollera att miljönamnet och versionen som du refererar till i komponentdefinitionen finns.
2. Du måste ange versionen om du refererar till en registrerad miljö.
indata/utdata 1. Namn på indata/utdata är i konflikt med systemreserverade parametrar.
2. Duplicerade namn på indata eller utdata.
1. Använd inte någon av dessa reserverade parametrar som namnet på dina indata/utdata: path, , ld_library_pathuser, logname, home, pwd, . shell
2. Kontrollera att namnen på indata och utdata inte dupliceras.

Nästa steg