本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管道步驟
管道由步驟組成。這些步驟使用屬性定義管道採取的動作以及步驟之間的關係。下頁說明步驟的類型、其屬性,以及它們之間的關係。
步驟屬性
使用 properties
屬性在管道中的步驟之間新增資料相依性。管道使用這些資料相依性,DAG從管道定義建構 。這些屬性可以作為預留位置值參考,並在執行期解析。
Pipelines 步驟的properties
屬性符合對應 SageMaker 任務類型的Describe
呼叫傳回的物件。對於每個任務類型,Describe
呼叫都會傳回下列回應物件:
-
ProcessingStep
– DescribeProcessingJob -
TrainingStep
– DescribeTrainingJob -
TransformStep
– DescribeTransformJob
若要在建立資料相依性期間檢查每個步驟類型可參考的屬性,請參閱 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。