ステップ間でデータを渡す
Amazon SageMaker Pipelines を使用してパイプラインを構築する場合は、あるステップから次のステップにデータを渡す必要がある場合があります。例えば、トレーニングステップが生成したモデルアーティファクトをモデル評価ステップまたはデプロイステップへの入力として使用する必要がある場合があります。この機能を使用すると、相互依存パイプラインステップを作成して、ML ワークフローを構築できます。
パイプラインステップの出力から情報を取得する必要がある場合は、JsonGet
を使用できます。JsonGet
は、Amazon S3 またはプロパティファイルから情報を抽出するのに役立ちます。以降のセクションでは、JsonGet
を使用してステップ出力を抽出するために利用できる方法について説明します。
Amazon S3 を使用してステップ間でデータを渡す
ConditionStep
で JsonGet
を使用すると、Amazon S3 から直接 JSON 出力を取得できます。Amazon S3 URI は、プリミティブ文字列、パイプライン実行変数、またはパイプラインパラメータを含む Std:Join
関数にすることができます。以下の例は、ConditionStep
で JsonGet
を使用する方法を説明しています。
# Example json file in s3 bucket generated by a processing_step { "Output": [5, 10] } cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name="
<step-name>
", s3_uri="<s3-path-to-json>
", json_path="Output[1]" ), right=6.0 )
条件ステップで Amazon S3 パスを使用して JsonGet
を使用する場合は、条件ステップと JSON 出力を生成するステップの間に依存関係を明示的に追加する必要があります。次の例では、条件ステップが処理ステップへの依存関係を持つように作成されています。
cond_step = ConditionStep( name="
<step-name>
", conditions=[cond_lte], if_steps=[fail_step], else_steps=[register_model_step], depends_on=[processing_step], )
プロパティファイルを使用してステップ間でデータを渡す
プロパティファイルを使用して、処理ステップの出力の情報を保存します。これは、処理ステップの結果を分析して、条件ステップの実行方法を決定するために特に便利です。JsonGet
関数はプロパティファイルを処理し、JsonPath 表記を使用してプロパティ JSON ファイルをクエリできるようにします。JsonPath 表記の詳細については、「JsonPath リポジトリ
後で使用できるようにプロパティファイルを保存するには、最初に PropertyFile
インスタンスを以下の形式で作成する必要があります。path
パラメータは、プロパティファイルが保存される JSON ファイルの名前です。いずれの output_name
も、処理ステップで定義した ProcessingOutput
の output_name
と一致する必要があります。これにより、ステップの ProcessingOutput
をプロパティファイルでキャプチャできるようになります。
from sagemaker.workflow.properties import PropertyFile
<property_file_instance>
= PropertyFile( name="<property_file_name>
", output_name="<processingoutput_output_name>
", path="<path_to_json_file>
" )
ProcessingStep
インスタンスを作成する際に、property_files
パラメータを追加して、Amazon SageMaker Pipelines サービスがインデックスを作成する必要があるすべてのパラメータファイルをリストします。これにより、プロパティファイルが保存され、後で使用できるようになります。
property_files=[
<property_file_instance>
]
条件ステップでプロパティファイルを使用するには、次の例に示すように、条件ステップに渡す条件に property_file
を追加し、json_path
パラメータを使用して JSON ファイルで目的のプロパティをクエリします。
cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=step_eval.name, property_file=
<property_file_instance>
, json_path="mse" ), right=6.0 )
より詳細な例については、「Amazon SageMaker Python SDK