管道步驟 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管道步驟

管道由步驟組成。這些步驟使用屬性定義管道採取的動作以及步驟之間的關係。下頁說明步驟的類型、其屬性,以及它們之間的關係。

步驟屬性

使用 properties 屬性在管道中的步驟之間新增資料相依性。管道使用這些資料相依性,DAG從管道定義建構 。這些屬性可以作為預留位置值參考,並在執行期解析。

Pipelines 步驟的properties屬性符合對應 SageMaker 任務類型的Describe呼叫傳回的物件。對於每個任務類型,Describe 呼叫都會傳回下列回應物件:

若要在建立資料相依性期間檢查每個步驟類型可參考的屬性,請參閱 Amazon SageMaker Python SDK中的資料相依性 - 屬性參考

步驟平行處理

當步驟不依賴於任何其他步驟時,它會在管道執行後立即執行。不過,平行執行過多管道步驟可能會快速耗盡可用的資源。使用 ParallelismConfiguration 控制管道執行的並行步驟數量。

下列範例使用 ParallelismConfiguration 將並行步驟限制為 5 個。

pipeline.create( parallelism_config=ParallelismConfiguration(5), )

步驟之間的資料相依性

您可以透過指定步驟之間的資料關係DAG來定義 的結構。若要在步驟之間建立資料相依性,請將一個步驟的屬性作為輸入傳遞至管道中的另一個步驟。在提供輸入的步驟執行完後,接收輸入的步驟才會啟動。

資料相依性會以下列格式使用 JsonPath 註釋。此格式會周遊 JSON 屬性檔案。這表示您可以附加最多 <property> 執行個體,以到達檔案中所需的巢狀屬性。如需 JsonPath 註釋的詳細資訊,請參閱JsonPath 儲存庫

<step_name>.properties.<property>.<property>

下面示範如何使用處理步驟的 ProcessingOutputConfig 屬性來指定 Amazon S3 儲存貯體。

step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri

若要建立資料相依性,請將儲存貯體傳遞至訓練步驟,如下所示。

from sagemaker.workflow.pipeline_context import PipelineSession sklearn_train = SKLearn(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="CensusTrain", step_args=sklearn_train.fit(inputs=TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train_data"].S3Output.S3Uri )) )

若要在建立資料相依性期間檢查每個步驟類型可參考的屬性,請參閱 Amazon SageMaker Python SDK中的資料相依性 - 屬性參考

步驟之間的自訂相依性

當您指定資料相依性時,管道會在步驟之間提供資料連線。或者,一個步驟可以存取上一個步驟的資料,而無需直接使用管道。在此情況下,您可以建立自訂相依性,告訴管道在另一個步驟完成執行之前,不要啟動步驟。您可以透過指定步驟的 DependsOn 屬性來建立自訂相依性。

例如,下列內容定義了僅在 A 步驟和 B 步驟執行完後才開始的 C 步驟。

{ 'Steps': [ {'Name':'A', ...}, {'Name':'B', ...}, {'Name':'C', 'DependsOn': ['A', 'B']} ] }

如果相依性會建立循環相依性,管道會擲回驗證例外狀況。

下列範例會建立在處理步驟執行完後開始的訓練步驟。

processing_step = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step])

下列範例會建立在兩個不同的處理步驟執行完後才開始的訓練步驟。

processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step_1, processing_step_2])

下面提供了建立自訂相依性的替代方法。

training_step.add_depends_on([processing_step_1]) training_step.add_depends_on([processing_step_2])

下列範例會建立一個訓練步驟,接收來自一個處理步驟的輸入,並等待另一個處理步驟執行完成。

processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep( ..., inputs=TrainingInput( s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[ "train_data" ].S3Output.S3Uri ) training_step.add_depends_on([processing_step_2])

下列範例示範如何擷取步驟之自訂相依性的字串清單。

custom_dependencies = training_step.depends_on

步驟中的自訂映像

您可以在管道中建立步驟時,使用任何可用的 SageMaker深度學習容器映像

您也可以在管道步驟中使用您自己的容器。由於您無法從 Studio Classic 中建立映像,因此您必須先使用其他方法建立映像,才能搭配管道使用。

若要在為管道建立步驟時使用您自己的容器,請在估算器定義URI中包含映像。如需搭配 使用自有容器的詳細資訊 SageMaker,請參閱搭配 使用 Docker 容器 SageMaker