CLI (v2) 命令元件 YAML 架構
您可以在 找到 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> 語法。 若要參考策劃的環境,請使用 azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> 語法。 如需如何參考環境的詳細資訊,請參閱 如何管理環境 若要內嵌定義環境,請遵循 環境架構。 name 排除和 version 屬性,因為內嵌環境不支持它們。 |
||
distribution |
object | 分散式定型案例的散發組態。 其中一個 MpiConfiguration、PyTorchConfiguration 或 TensorFlowConfiguration。 | ||
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 |
字串 | 必要。 元件輸入的類型。 深入了解數據存取 | number 、integer 、boolean 、string 、uri_file 、uri_folder 、、、 mltable mlflow_model |
|
description |
字串 | 輸入的描述。 | ||
default |
number、integer、boolean 或 string | 輸入的預設值。 | ||
optional |
boolean | 是否需要輸入。 如果設定為 true ,您需要使用 命令包含選擇性輸入與 $[[]] |
false |
|
min |
整數或數位 | 輸入的最小接受值。 只有在 field 為 number 或 integer 時type ,才能指定此欄位。 |
||
max |
整數或數位 | 輸入的最大接受值。 只有在 field 為 number 或 integer 時type ,才能指定此欄位。 |
||
enum |
陣列 | 輸入允許的值清單。 只有在欄位為 string 時才type 適用。 |
元件輸出
機碼 | 類型 | 描述 | 允許的值 | 預設值 |
---|---|---|---|---|
type |
字串 | 必要。 元件輸出的類型。 | uri_file 、 、 uri_folder 、 mltable mlflow_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.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}}
在命令行中定義選擇性輸入
當輸入設為 optional = true
時,您必須使用 $[[]]
來對輸入採用命令列。 例如 $[[--input1 ${{inputs.input1}}]
。 運行時間的命令列可能會有不同的輸入。
- 如果您只使用 指定必要
training_data
和model_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 、、home user ld_library_path logname 、pwd 、 。 shell 2.請確定輸入和輸出的名稱不會重複。 |