共用方式為


CLI (v2) 命令元件 YAML 架構

適用於:Azure CLI ml 擴充功能 v2(目前)

您可以在 找到 https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json來源 JSON 架構。

注意

本文件中詳述的 YAML 語法是以最新版 ML CLI v2 延伸模組的 JSON 結構描述為基礎。 此語法僅保證能與最新版的 ML CLI v2 延伸模組搭配運作。 您可以在 https://azuremlschemasprod.azureedge.net/ 找到舊版延伸模組的結構描述。

YAML 語法

機碼 類型 描述 允許的值 預設值
$schema string YAML 結構描述。 如果您使用 Azure Machine Learning VS Code 擴充功能來撰寫 YAML 檔案,在檔案頂端包含 $schema 可讓您叫用結構描述和資源完成。
type const 元件的類型。 command command
name 字串 必要。 元件的名稱。 必須以小寫字母開頭。 允許的字元為小寫字母、數位和底線(_)。 長度上限是 255 個字元。
version 字串 元件的版本。 如果省略,Azure 機器學習 會自動產生版本。
display_name 字串 工作室 UI 中元件的顯示名稱。 在工作區中可以是非唯一的。
description 字串 元件的描述。
tags object 元件的標記字典。
is_deterministic boolean 此選項會判斷元件是否會針對相同的輸入數據產生相同的輸出。 針對從外部來源載入資料的元件,您通常應該將此設定為 false ,例如從URL匯入數據。 這是因為 URL 上的資料可能會隨著時間而變更。 true
command 字串 必要。 要執行的命令。
code 字串 要上傳並用於元件的原始程式碼目錄本機路徑。
environment 字串或物件 必要。 要用於元件的環境。 此值可以是工作區中現有已建立版本環境的參考,也可以是內嵌環境規格。

若要參考現有的環境,請使用 azureml:<environment-name>:<environment-version> 語法。

若要內嵌定義環境,請遵循 環境架構name排除和 version 屬性,因為內嵌環境不支持它們。
distribution object 分散式定型案例的散發組態。 其中一個 MpiConfiguration、PyTorchConfigurationTensorFlowConfiguration
resources.instance_count 整數 要用於作業的節點數目。 1
inputs object 元件輸入的字典。 索引鍵是元件內容內的輸入名稱,值則是元件輸入定義。

您可以使用 ${{ inputs.<input_name> }} 表示式在 中command參考輸入。
inputs.<input_name> object 元件輸入定義。 如需可設定的屬性集,請參閱 元件輸入
outputs object 元件輸出的字典。 索引鍵是元件內容內的輸出名稱,值則是元件輸出定義。

您可以使用 ${{ outputs.<output_name> }} 表示式在 中command參考輸出。
outputs.<output_name> object 元件輸出定義。 如需可設定的屬性集,請參閱 元件輸出

散發組態

MpiConfiguration

機碼 類型 描述 允許的值
type const 必要。 散發類型。 mpi
process_count_per_instance 整數 必要。 要針對作業啟動的每個節點進程數目。

PyTorchConfiguration

機碼 類型 描述 允許的值 預設值
type const 必要。 散發類型。 pytorch
process_count_per_instance 整數 要針對作業啟動的每個節點進程數目。 1

TensorFlowConfiguration

機碼 類型 描述 允許的值 預設值
type const 必要。 散發類型。 tensorflow
worker_count 整數 要為作業啟動的背景工作數目。 預設為 resources.instance_count
parameter_server_count 整數 要針對作業啟動的參數伺服器數目。 0

元件輸入

機碼 類型 描述 允許的值 預設值
type 字串 必要。 元件輸入的類型。 深入了解數據存取 numberintegerbooleanstringuri_fileuri_folder、、、 mltablemlflow_model
description 字串 輸入的描述。
default number、integer、boolean 或 string 輸入的預設值。
optional boolean 是否需要輸入。 如果設定為 true,您需要使用 命令包含選擇性輸入與 $[[]] false
min 整數或數位 輸入的最小接受值。 只有在 field 為 numberintegertype,才能指定此欄位。
max 整數或數位 輸入的最大接受值。 只有在 field 為 numberintegertype,才能指定此欄位。
enum 陣列 輸入允許的值清單。 只有在欄位為 string時才type適用。

元件輸出

機碼 類型 描述 允許的值 預設值
type 字串 必要。 元件輸出的類型。 uri_file、 、 uri_foldermltablemlflow_model
description 字串 輸出的描述。

備註

az ml component命令可用於管理 Azure 機器學習元件。

範例

GitHub 存放庫範例中提供命令元件範例。 選取的范例如下所示。

範例 GitHub 存放庫中有範例可用。 以下顯示其中幾個。

YAML:Hello world 命令元件

$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:具有不同輸入類型的元件

$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.0/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}}

在命令行中定義選擇性輸入

當輸入設為 optional = true 時,您必須使用 $[[]] 來對輸入採用命令列。 例如 $[[--input1 ${{inputs.input1}}] 。 運行時間的命令列可能會有不同的輸入。

  • 如果您只使用 指定必要 training_datamodel_output 參數,命令行看起來會像這樣:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

如果未在運行時間指定任何值, learning_rate 則會 learning_rate_schedule 使用預設值。

  • 如果所有輸入/輸出在執行時間期間都提供值,命令行看起來會像這樣:
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

常見錯誤和建議

以下是定義元件時的一些常見錯誤和對應的建議建議。

機碼 錯誤 建議
命令 1.只有選擇性輸入可以輸入 $[[]]
2.命令不支援使用 \ 來建立新行。
3.找不到輸入或輸出。
1.檢查 命令中使用的所有輸入或輸出都已在 和 outputs 區段中定義inputs,並針對選擇性輸入或必要${{}}輸入$[[]]使用正確的格式。
2. 不要用來 \ 製作新行。
environment 1.環境 {envName} 版本 {envVersion}沒有定義。
2.名稱 {envName}、版本 {envVersion}沒有環境。
3. 找不到標識子為 {envAssetId}的資產。
1.請確定您在元件定義中參考的環境名稱和版本存在。
2.如果您參考已註冊的環境,則必須指定版本。
inputs/outputs 1.輸入/輸出名稱與系統保留參數衝突。
2.輸入或輸出的重複名稱。
1.請勿使用上述任何保留參數作為您的輸入/輸出名稱:path、、homeuserld_library_pathlognamepwd、 。 shell
2.請確定輸入和輸出的名稱不會重複。

下一步