CLI (v2) 管線作業 YAML 架構
您可以在 找到來源 JSON 架構 https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json。
注意
本文件中詳述的 YAML 語法是以最新版 ML CLI v2 延伸模組的 JSON 結構描述為基礎。 此語法僅保證能與最新版的 ML CLI v2 延伸模組搭配運作。 您可以在 https://azuremlschemasprod.azureedge.net/ 找到舊版延伸模組的結構描述。
YAML 語法
機碼 | 類型 | 描述 | 允許的值 | 預設值 |
---|---|---|---|---|
$schema |
string | YAML 結構描述。 如果您使用 Azure 機器學習 VS Code 擴充功能來撰寫 YAML 檔案,您可以在檔案頂端包含$schema 架構和資源完成。 |
||
type |
const | 必要。 作業類型。 | pipeline |
|
name |
字串 | 作業的名稱。 工作區中的所有作業都必須是唯一的。 如果省略,Azure 機器學習 會自動產生名稱的 GUID。 | ||
display_name |
字串 | 在 Studio UI 中顯示作業的名稱。 在工作區中可以是非唯一的。 如果省略,Azure 機器學習 會自動產生顯示名稱的人類可讀取形容詞-名詞標識符。 | ||
experiment_name |
字串 | 在實驗名稱下組織作業。 每個作業的執行記錄會組織在工作室的 [實驗] 索引標籤中對應的實驗之下。 如果省略,Azure 機器學習 預設experiment_name 為建立作業的工作目錄名稱。 |
||
tags |
object | 作業標籤的字典。 | ||
settings |
object | 管線作業的預設設定。 請瀏覽索引鍵的屬性settings ,以取得一組可設定的屬性。 |
||
jobs |
object | 必要。 要在管線內作為步驟執行的個別作業集合的字典。 這些作業可視為父管線作業的子作業。 索引鍵是管線作業內容中的步驟名稱。 此名稱與子作業的唯一作業名稱不同。 值是作業規格,可以遵循 命令作業架構 或 掃掠作業架構。 目前,只有命令作業和掃掠作業可以在管線中執行。 後續版本將支援其他作業類型。 |
||
inputs |
object | 管線作業的輸入字典。 索引鍵是作業內容內輸入的名稱。 值是輸入值。 管線中個別步驟作業的輸入可以參考這些管線輸入與 ${{ parent.inputs.<input_name> }} 表達式。 如需將管線步驟輸入系結至最上層管線作業輸入的詳細資訊,請流覽 管線作業中步驟之間系結輸入和輸出的表達式語法。 |
||
inputs.<input_name> |
number、integer、boolean、string 或 object | 其中一個常值(類型為 number、integer、boolean 或 string),或包含 作業輸入數據規格的物件。 | ||
outputs |
object | 管線作業輸出設定的字典。 索引鍵是作業內容內輸出的名稱。 值為輸出組態。 管線中個別步驟作業的輸出可以使用 表達式來參考這些管線輸出 ${{ parents.outputs.<output_name> }} 。 如需將管線步驟的輸出系結至最上層管線作業之輸出的詳細資訊,請流覽 管線作業中步驟之間系結輸入和輸出的運算式語法。 |
||
outputs.<output_name> |
object | 您可以將物件保留空白。 在此情況下,根據預設,輸出的類型為 uri_folder ,而 Azure 機器學習 會根據這個範本化路徑,為輸出產生輸出位置:{settings.datastore}/azureml/{job-name}/{output-name}/ 。 輸出目錄的檔案會透過讀寫掛接寫入。 若要指定不同的輸出模式,請提供包含 作業輸出規格的物件。 |
||
identity |
object | 身分識別用於數據存取。 它可以是 UserIdentityConfiguration、ManagedIdentityConfiguration 或 None。 如果是UserIdentityConfiguration,作業送出者的身分識別將用來存取輸入數據,並將結果寫入輸出資料夾,否則將會使用計算目標的受控識別。 |
索引鍵的屬性settings
機碼 | 類型 | 描述 | 預設值 |
---|---|---|---|
default_datastore |
字串 | 要作為管線作業之預設數據存放區的數據存放區名稱。 這個值必須是工作區中現有數據存放區的參考,使用 azureml:<datastore-name> 語法。 父管線作業或子步驟作業之 屬性中 outputs 定義的任何輸出會儲存在此數據存放區中。 如果省略,輸出會儲存在工作區 Blob 資料存放區中。 |
|
default_compute |
字串 | 要作為管線中所有步驟之預設計算的計算目標名稱。 在步驟層級定義的計算會覆寫該特定步驟的這個預設計算。 值 default_compute 必須是工作區中現有計算的參考,並使用 azureml:<compute-name> 語法。 |
|
continue_on_step_failure |
boolean | 此設定會決定管線中的步驟失敗時會發生什麼情況。 根據預設,即使一個步驟失敗,管線仍會繼續執行。 這表示任何不相依於失敗步驟的步驟仍會執行。 不過,如果您將此設定變更為 False,整個管線就會停止執行,如果一個步驟失敗,則會取消任何目前執行的步驟。 | True |
force_rerun |
boolean | 是否要強制重新執行整個管線。 預設值是 False 。 這表示,如果管線符合重複使用準則,則管線預設會嘗試重複使用上一個作業的輸出。 如果設定為 True ,管線中的所有步驟都會重新執行。 |
False |
作業輸入
機碼 | 類型 | 描述 | 允許的值 | 預設值 |
---|---|---|---|---|
type |
字串 | 作業輸入的類型。 指定 uri_file 指向單一檔案來源的輸入數據,或 uri_folder 指定指向資料夾來源的輸入數據。 如需詳細資訊,請流覽 深入了解數據存取。 |
uri_file 、 、 uri_folder 、 mltable mlflow_model |
uri_folder |
path |
字串 | 要作為輸入的數據路徑。 這可以透過幾種方式指定: - 資料來源檔案或資料夾的本機路徑,例如 path: ./iris.csv 。 數據會在作業提交期間上傳。 - 要作為輸入之檔案或資料夾之雲端路徑的 URI。 支援的 URI 型態為 azureml 、、https 、wasbs abfss 、 adl 。 如需 URI 格式使用 azureml:// 的詳細資訊,請流覽 Core yaml 語法。 - 現有的已註冊 Azure 機器學習 數據資產,用來作為輸入。 若要參考已註冊的數據資產,請使用 azureml:<data_name>:<data_version> 語法 或 azureml:<data_name>@latest (參考該數據資產的最新版本),例如 path: azureml:cifar10-data:1 或 path: azureml:cifar10-data@latest 。 |
||
mode |
字串 | 如何將數據傳遞至計算目標的模式。 針對唯讀掛接 ( ro_mount ),數據會以掛接路徑的形式取用。 資料夾會掛接為資料夾,而檔案會掛接為檔案。 Azure 機器學習 會將輸入解析為掛接路徑。 若為 download 模式,數據會下載至計算目標。 Azure 機器學習 會將輸入解析為下載的路徑。 若只是數據成品或成品儲存位置的 URL,而不是掛接或下載數據本身,請使用 direct 模式。 這會傳入記憶體位置的 URL 做為作業輸入。 在此情況下,您完全負責處理認證以存取記憶體。 |
ro_mount 、 、 download direct |
ro_mount |
工作輸出
機碼 | 類型 | 描述 | 允許的值 | 預設值 |
---|---|---|---|---|
type |
字串 | 作業輸出類型。 針對預設 uri_folder 類型,輸出會對應至資料夾。 |
uri_file 、 、 uri_folder 、 mltable mlflow_model |
uri_folder |
mode |
字串 | 將輸出檔案或檔案傳遞至目的地記憶體的模式。 針對讀寫掛接模式 (rw_mount ),輸出目錄將會是掛接的目錄。 針對上傳模式,寫入的檔案會在作業結尾上傳。 |
rw_mount , upload |
rw_mount |
身分識別組態
UserIdentityConfiguration
機碼 | 類型 | 描述 | 允許的值 |
---|---|---|---|
type |
const | 必要。 識別類型。 | user_identity |
ManagedIdentityConfiguration
機碼 | 類型 | 描述 | 允許的值 |
---|---|---|---|
type |
const | 必要。 識別類型。 | managed 或 managed_identity |
備註
您可以使用 az ml job
命令來管理 Azure 機器學習 作業。
範例
如需範例, 請流覽 GitHub 存放庫 範例。 這裡顯示數個:
YAML:你好管線
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline
jobs:
hello_job:
command: echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
world_job:
command: echo "world"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
YAML:輸入/輸出相依性
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_io
jobs:
hello_job:
command: echo "hello" && echo "world" > ${{outputs.world_output}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
outputs:
world_output:
world_job:
command: cat ${{inputs.world_input}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
inputs:
world_input: ${{parent.jobs.hello_job.outputs.world_output}}
YAML:常見的管線作業設定
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_settings
settings:
default_datastore: azureml:workspaceblobstore
default_compute: azureml:cpu-cluster
jobs:
hello_job:
command: echo 202204190 & echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
world_job:
command: echo 202204190 & echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML:最上層輸入和覆寫一般管線作業設定
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_abc
settings:
default_compute: azureml:cpu-cluster
inputs:
hello_string_top_level_input: "hello world"
jobs:
a:
command: echo hello ${{inputs.hello_string}}
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
inputs:
hello_string: ${{parent.inputs.hello_string_top_level_input}}
b:
command: echo "world" >> ${{outputs.world_output}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
outputs:
world_output:
c:
command: echo ${{inputs.world_input}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
inputs:
world_input: ${{parent.jobs.b.outputs.world_output}}