PythonScriptStep 類別
建立執行 Python 腳本的 Azure ML 管線步驟。
如需使用 PythonScriptStep 的範例,請參閱筆記本 https://aka.ms/pl-get-started。
建立執行 Python 腳本的 Azure ML 管線步驟。
建構函式
PythonScriptStep(script_name, name=None, arguments=None, compute_target=None, runconfig=None, runconfig_pipeline_params=None, inputs=None, outputs=None, params=None, source_directory=None, allow_reuse=True, version=None, hash_paths=None)
參數
| 名稱 | Description |
|---|---|
|
script_name
必要
|
[必要]相對於 |
|
name
|
步驟的名稱。 如果未指定, 預設值: None
|
|
arguments
|
Python 腳本檔案的命令行自變數。 自變數會透過 預設值: None
|
|
compute_target
|
[必要]要使用的計算目標。 如果未指定,則會使用 runconfig 中的目標。 此參數可指定為計算目標物件,或工作區上計算目標的字串名稱。 您可以選擇性地在建立管線時使用計算目標,您可以指定 Tuple ('compute target name', 'compute target type') 以避免擷取計算目標物件 (AmlCompute 類型為 'AmlCompute' 且 RemoteCompute 類型為 'VirtualMachine')。 預設值: None
|
|
runconfig
|
要使用的選擇性 RunConfiguration。 RunConfiguration 可用來指定執行的其他需求,例如 conda 相依性和 Docker 映射。 如果未指定,則會建立預設 Runconfig。 預設值: None
|
|
runconfig_pipeline_params
|
使用索引鍵/值組覆寫運行時間的 runconfig 屬性,每個屬性都有 runconfig 屬性的名稱,以及該屬性的 PipelineParameter。 支援的值:'NodeCount'、'MpiProcessCountPerNode'、'TensorflowWorkerCount'、'TensorflowParameterServerCount' 預設值: None
|
|
inputs
|
list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData, PipelineOutputFileDataset, PipelineOutputTabularDataset, DatasetConsumptionConfig]]
輸入埠系結的清單。 預設值: None
|
|
outputs
|
list[Union[PipelineData, OutputDatasetConfig, PipelineOutputFileDataset, PipelineOutputTabularDataset, OutputPortBinding]]
輸出埠系結的清單。 預設值: None
|
|
params
|
以 「AML_PARAMETER_」 註冊為環境變數之名稱/值組的字典。 預設值: None
|
|
source_directory
|
包含步驟中所用 Python 腳本、conda env 和其他資源的資料夾。 預設值: None
|
|
allow_reuse
|
指出當使用相同的設定重新執行時,步驟是否應該重複使用先前的結果。 默認會啟用重複使用。 如果步驟內容(腳本/相依性)以及輸入和參數保持不變,則會重複使用此步驟上一次執行的輸出。 重複使用步驟時,而不是提交作業來計算,先前執行的結果會立即提供給任何後續步驟使用。 如果您使用 Azure Machine Learning 數據集做為輸入,則重複使用取決於資料集的定義是否已變更,而不是基礎數據是否已變更。 預設值: True
|
|
version
|
選擇性版本標記,表示步驟的功能變更。 預設值: None
|
|
hash_paths
|
已淘汰:不再需要。 檢查步驟內容的變更時,哈希的路徑清單。 如果未偵測到任何變更,管線將會重複使用先前執行中的步驟內容。 根據預設,除了 .amlignore 或 .gitignore 中列出的檔案之外,會哈希 的內容 預設值: None
|
|
script_name
必要
|
[必要]相對於 |
|
name
必要
|
步驟的名稱。 如果未指定, |
|
arguments
必要
|
[str]
Python 腳本檔案的命令行自變數。 自變數會透過 |
|
compute_target
必要
|
[必要]要使用的計算目標。 如果未指定,則會使用 runconfig 中的目標。 此參數可指定為計算目標物件,或工作區上計算目標的字串名稱。 您可以選擇性地在建立管線時使用計算目標,您可以指定 Tuple ('compute target name', 'compute target type') 以避免擷取計算目標物件 (AmlCompute 類型為 'AmlCompute' 且 RemoteCompute 類型為 'VirtualMachine')。 |
|
runconfig
必要
|
要使用的選擇性 RunConfiguration。 RunConfiguration 可用來指定執行的其他需求,例如 conda 相依性和 Docker 映射。 如果未指定,則會建立預設 Runconfig。 |
|
runconfig_pipeline_params
必要
|
使用索引鍵/值組覆寫運行時間的 runconfig 屬性,每個屬性都有 runconfig 屬性的名稱,以及該屬性的 PipelineParameter。 支援的值:'NodeCount'、'MpiProcessCountPerNode'、'TensorflowWorkerCount'、'TensorflowParameterServerCount' |
|
inputs
必要
|
list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData, PipelineOutputFileDataset, PipelineOutputTabularDataset, DatasetConsumptionConfig]]
輸入埠系結的清單。 |
|
outputs
必要
|
list[Union[PipelineData, OutputDatasetConfig, PipelineOutputFileDataset, PipelineOutputTabularDataset, OutputPortBinding]]
輸出埠系結的清單。 |
|
params
必要
|
<xref:<xref:{str: str}>>
名稱/值組的字典。 以 「>>AML_PARAMETER_<<」 註冊為環境變數。 |
|
source_directory
必要
|
包含步驟中所用 Python 腳本、conda env 和其他資源的資料夾。 |
|
allow_reuse
必要
|
指出當使用相同的設定重新執行時,步驟是否應該重複使用先前的結果。 默認會啟用重複使用。 如果步驟內容(腳本/相依性)以及輸入和參數保持不變,則會重複使用此步驟上一次執行的輸出。 重複使用步驟時,而不是提交作業來計算,先前執行的結果會立即提供給任何後續步驟使用。 如果您使用 Azure Machine Learning 數據集做為輸入,則重複使用取決於資料集的定義是否已變更,而不是基礎數據是否已變更。 |
|
version
必要
|
選擇性版本標記,表示步驟的功能變更。 |
|
hash_paths
必要
|
已淘汰:不再需要。 檢查步驟內容的變更時,哈希的路徑清單。 如果未偵測到任何變更,管線將會重複使用先前執行中的步驟內容。 根據預設,除了 .amlignore 或 .gitignore 中列出的檔案之外,會哈希 的內容 |
備註
PythonScriptStep 是計算目標上執行 Python 腳本的基本內建步驟。 它接受文稿名稱和其他選擇性參數,例如腳本、計算目標、輸入和輸出的自變數。 如果未指定計算目標,則會使用工作區的預設計算目標。 您也可以使用 RunConfiguration 來指定 PythonScriptStep 的需求,例如 conda 相依性和 Docker 映射。
使用 PythonScriptStep 的最佳做法是針對腳本和與步驟相關聯的任何相依檔案使用不同的資料夾,並使用 參數指定該資料夾 source_directory 。
遵循此最佳做法有兩個優點。 首先,它有助於減少為步驟建立的快照集大小,因為只有步驟所需的快照集才會建立快照集。 其次,如果沒有任何變更 source_directory 會觸發快照集重新上傳的 ,則可以重複使用先前執行的步驟輸出。
下列程式代碼範例示範如何在機器學習訓練案例中使用 PythonScriptStep。 如需此範例的詳細資訊,請參閱 https://aka.ms/pl-first-pipeline。
from azureml.pipeline.steps import PythonScriptStep
trainStep = PythonScriptStep(
script_name="train.py",
arguments=["--input", blob_input_data, "--output", output_data1],
inputs=[blob_input_data],
outputs=[output_data1],
compute_target=compute_target,
source_directory=project_folder
)
PythonScriptSteps 支援許多輸入和輸出類型。 這些包括 DatasetConsumptionConfig 輸入和 OutputDatasetConfig、 PipelineOutputAbstractDataset和 ,以及 PipelineData 輸入和輸出。
以下是使用 Dataset 作為步驟輸入和輸出的範例:
from azureml.core import Dataset
from azureml.pipeline.steps import PythonScriptStep
from azureml.pipeline.core import Pipeline, PipelineData
# get input dataset
input_ds = Dataset.get_by_name(workspace, 'weather_ds')
# register pipeline output as dataset
output_ds = PipelineData('prepared_weather_ds', datastore=datastore).as_dataset()
output_ds = output_ds.register(name='prepared_weather_ds', create_new_version=True)
# configure pipeline step to use dataset as the input and output
prep_step = PythonScriptStep(script_name="prepare.py",
inputs=[input_ds.as_named_input('weather_ds')],
outputs=[output_ds],
compute_target=compute_target,
source_directory=project_folder)
如需使用其他輸入/輸出類型的範例,請參閱對應的文件頁面。
方法
| create_node |
建立 PythonScriptStep 的節點,並將其新增至指定的圖形。 此方法不適合直接使用。 使用此步驟具現化管線時,Azure ML 會自動透過此方法傳遞所需的參數,以便將步驟新增至代表工作流程的管線圖形。 |
create_node
建立 PythonScriptStep 的節點,並將其新增至指定的圖形。
此方法不適合直接使用。 使用此步驟具現化管線時,Azure ML 會自動透過此方法傳遞所需的參數,以便將步驟新增至代表工作流程的管線圖形。
create_node(graph, default_datastore, context)
參數
| 名稱 | Description |
|---|---|
|
graph
必要
|
要加入節點的圖形物件。 |
|
default_datastore
必要
|
預設數據存放區。 |
|
context
必要
|
<xref:azureml.pipeline.core._GraphContext>
圖形內容。 |
傳回
| 類型 | Description |
|---|---|
|
建立的節點。 |