パイプラインを作成する
Azure Machine Learning では、 パイプライン は、各タスクが コンポーネントとして定義されている機械学習タスクのワークフローです。
コンポーネントを順番にまたは並列で配置することで、機械学習操作を調整する高度なフロー ロジックを作成できます。 各コンポーネントは特定のコンピューティング先で実行できるため、必要に応じてさまざまな種類のプロセスを組み合わせて、全体的な目標を達成することができます。
パイプラインは、パイプライン ジョブとして実行することで、プロセスとして実行できます。 各コンポーネントは、パイプライン ジョブ全体の一部として 子 ジョブとして実行されます。
パイプラインを構築する
Azure Machine Learning パイプラインは、YAML ファイルで定義されます。 YAML ファイルには、パイプライン ジョブ名、入力、出力、設定が含まれています。
YAML ファイルを作成するか、@pipeline() 関数を使って YAML ファイルを作成することができます。
ヒント
たとえば、まずデータを準備し、次にモデルをトレーニングするパイプラインを構築する場合、次のようなコードを使用できます。
from azure.ai.ml.dsl import pipeline
@pipeline()
def pipeline_function_name(pipeline_job_input):
prep_data = loaded_component_prep(input_data=pipeline_job_input)
train_model = loaded_component_train(training_data=prep_data.outputs.output_data)
return {
"pipeline_job_transformed_data": prep_data.outputs.output_data,
"pipeline_job_trained_model": train_model.outputs.model_output,
}
登録済みのデータ資産をパイプライン ジョブの入力として渡すには、入力としてデータ資産を使って作成した関数を呼び出します。
from azure.ai.ml import Input
from azure.ai.ml.constants import AssetTypes
pipeline_job = pipeline_function_name(
Input(type=AssetTypes.URI_FILE,
path="azureml:data:1"
))
@pipeline() 関数を使うと、読み込まれた 2 つのコンポーネントで表される、2 つの一連のステップで構成されるパイプラインを構築できます。
この例で構築されるパイプラインを理解するために、段階的に見てみましょう。
- パイプラインは、関数
pipeline_function_nameを定義することによって構築されます。 - パイプライン関数は、パイプラインの入力全体として
pipeline_job_inputを想定しています。 - 最初のパイプライン ステップでは、入力パラメーター
input_dataの値が必要です。 入力の値はpipeline_job_inputの値になります。 - 最初のパイプライン ステップは、
prep_dataの読み込まれたコンポーネントによって定義されます。 - 最初のパイプライン ステップの
output_dataの値は、2 番目のパイプライン ステップの想定される入力training_dataに使われます。 - 2 番目のパイプライン ステップは、
train_modelの読み込まれたコンポーネントによって定義され、model_outputで参照されるトレーニング済みモデルになります。 - パイプラインの出力を定義するには、パイプライン関数から変数を返します。
次の 2 つの出力があります。
- 値が
pipeline_job_transformed_dataのprep_data.outputs.output_data - 値が
pipeline_job_trained_modelのtrain_model.outputs.model_output
- 値が
@pipeline() 関数を実行した結果は YAML ファイルです。これを確認するには、関数を呼び出すときに作成した pipeline_job オブジェクトを出力します。
print(pipeline_job)
出力は YAML ファイルとして書式が設定されます。これには、パイプラインとそのコンポーネントの構成が含まれています。 YAML ファイルに含まれるパラメーターの一部を次の例で示します。
display_name: pipeline_function_name
type: pipeline
inputs:
pipeline_job_input:
type: uri_file
path: azureml:data:1
outputs:
pipeline_job_transformed_data: null
pipeline_job_trained_model: null
jobs:
prep_data:
type: command
inputs:
input_data:
path: ${{parent.inputs.pipeline_job_input}}
outputs:
output_data: ${{parent.outputs.pipeline_job_transformed_data}}
train_model:
type: command
inputs:
input_data:
path: ${{parent.outputs.pipeline_job_transformed_data}}
outputs:
output_model: ${{parent.outputs.pipeline_job_trained_model}}
tags: {}
properties: {}
settings: {}
ヒント
コンポーネントベースのパイプラインを構築するときに含まれるパラメーターを調べるパイプライン ジョブ YAML スキーマの詳細について説明します。