パイプラインを作成する

完了

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 つの一連のステップで構成されるパイプラインを構築できます。

この例で構築されるパイプラインを理解するために、段階的に見てみましょう。

  1. パイプラインは、関数 pipeline_function_name を定義することによって構築されます。
  2. パイプライン関数は、パイプラインの入力全体として pipeline_job_input を想定しています。
  3. 最初のパイプライン ステップでは、入力パラメーター input_data の値が必要です。 入力の値は pipeline_job_input の値になります。
  4. 最初のパイプライン ステップは、prep_data の読み込まれたコンポーネントによって定義されます。
  5. 最初のパイプライン ステップの output_data の値は、2 番目のパイプライン ステップの想定される入力 training_data に使われます。
  6. 2 番目のパイプライン ステップは、train_model の読み込まれたコンポーネントによって定義され、model_output で参照されるトレーニング済みモデルになります。
  7. パイプラインの出力を定義するには、パイプライン関数から変数を返します。 次の 2 つの出力があります。
    • 値が pipeline_job_transformed_dataprep_data.outputs.output_data
    • 値が pipeline_job_trained_modeltrain_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: {}