PipelineData クラス

Azure Machine Learning パイプライン内の中間データを表します。

パイプラインで使用するデータは、あるステップで生成し、別のステップで使用することができます。そのためには、PipelineData オブジェクトをある 1 つのステップの出力および 1 つ以上の後続ステップの入力として指定します。

: パイプライン データを使用する場合は、使用するディレクトリが存在している必要があります。

ディレクトリが存在していることを確認する Python の例として、ある 1 つのパイプライン ステップに output_folder という名前の出力ポートが含まれていて、このフォルダー内の相対パスにデータを書き込む場合があります。


   import os
   os.makedirs(args.output_folder, exist_ok=True)
   f = open(args.output_folder + '/relative_path/file_name', 'w+')

PipelineData では基になる DataReference を使用します。これは、データのアクセスと配信のための推奨されるアプローチではなくなりました。代わりに OutputFileDatasetConfig を使用してください。サンプルについては、OutputFileDatasetConfig を使用したパイプラインに関するページを参照してください。

継承
builtins.object
PipelineData

コンストラクター

PipelineData(name, datastore=None, output_name=None, output_mode='mount', output_path_on_compute=None, output_overwrite=None, data_type=None, is_directory=None, pipeline_output_name=None, training_output=None)

パラメーター

name
str
必須

PipelineData オブジェクトの名前。文字、数字、アンダースコアのみを含めることができます。

PipelineData 名は、ステップの出力を識別するために使用されます。 パイプラインの実行が完了したら、ステップ名と出力名を使用して、特定の出力にアクセスできます。 名前は、パイプラインの 1 つのステップ内で一意である必要があります。

datastore
AbstractAzureStorageDatastore または AzureDataLakeDatastore
既定値: None

PipelineData が置かれるデータストア。 指定されなかった場合は、既定のデータストアが使用されます。

output_name
str
既定値: None

None の名前が使用されている場合は、出力の名前。 文字、数字、アンダースコアのみを含めることができます。

output_mode
str
既定値: mount

生成ステップで、データにアクセスするために "upload" メソッドと "mount" メソッドのどちらを使用するかを指定します。

output_path_on_compute
str
既定値: None

output_mode = "upload" の場合、このパラメーターはモジュールが出力を書き込むパスを表します。

output_overwrite
bool
既定値: None

output_mode = "upload" の場合、このパラメーターは既存のデータを上書きするかどうかを指定します。

data_type
str
既定値: None

任意。 データ型を使用すると、予想される出力の型を指定したり、使用ステップでのデータの使用方法の詳細を指定したりできます。 任意のユーザー定義文字列にすることができます。

is_directory
bool
既定値: None

データがディレクトリか、単一のファイルかを指定します。 これは、data_type パラメーターが指定されなかった場合に、Azure ML バックエンドで使用されるデータ型を特定するためにのみ使用されます。 既定値は False です。

pipeline_output_name
既定値: None

指定された場合、PipelineRun.get_pipeline_output() を使用してこの出力を利用できます。 パイプライン出力名は、パイプライン内で一意である必要があります。

training_output
TrainingOutput
既定値: None

トレーニング結果の出力を定義します。 これは、メトリックやモデルなどの異なる種類の出力を生成する、特定のトレーニングに対してのみ必要です。 たとえば、AutoMLStep はメトリックとモデルを生成します。 また、最適なモデルを取得するために使用される、特定のトレーニング イテレーションまたはメトリックを定義することもできます。 HyperDriveStep では、出力に含める特定のモデル ファイルを定義することもできます。

注釈

PipelineData は、実行時にステップによって生成されるデータ出力を表します。 ステップの作成時に PipelineData を使用して、ステップによって生成されるファイルまたはディレクトリを記述します。 これらのデータ出力は、指定されたデータストアに追加され、後で取得して表示することができます。

たとえば、次のパイプライン ステップでは、"model" という名前の出力が 1 つ生成されます。


   from azureml.pipeline.core import PipelineData
   from azureml.pipeline.steps import PythonScriptStep

   datastore = ws.get_default_datastore()
   step_output = PipelineData("model", datastore=datastore)
   step = PythonScriptStep(script_name="train.py",
                           arguments=["--model", step_output],
                           outputs=[step_output],
                           compute_target=aml_compute,
                           source_directory=source_directory)

このケースでは、train.py スクリプトが、生成されたモデルを、–model 引数を介してスクリプトに提供される場所に書き込みます。

PipelineData オブジェクトは、パイプラインの構築時にステップの依存関係を記述するためにも使用されます。 あるステップの入力として別のステップの出力が必要なことを指定するには、両方のステップのコンストラクターで PipelineData オブジェクトを使用します。

たとえば、パイプライン トレーニング ステップは、パイプライン プロセス ステップの process_step_output 出力に依存します。


   from azureml.pipeline.core import Pipeline, PipelineData
   from azureml.pipeline.steps import PythonScriptStep

   datastore = ws.get_default_datastore()
   process_step_output = PipelineData("processed_data", datastore=datastore)
   process_step = PythonScriptStep(script_name="process.py",
                                   arguments=["--data_for_train", process_step_output],
                                   outputs=[process_step_output],
                                   compute_target=aml_compute,
                                   source_directory=process_directory)
   train_step = PythonScriptStep(script_name="train.py",
                                 arguments=["--data_for_train", process_step_output],
                                 inputs=[process_step_output],
                                 compute_target=aml_compute,
                                 source_directory=train_directory)

   pipeline = Pipeline(workspace=ws, steps=[process_step, train_step])

ここでは、2 つのステップを持つパイプラインを作成します。 最初にプロセス ステップが実行され、その完了後にトレーニング ステップが実行されます。 Azure ML では、プロセス ステップによって生成された出力がトレーニング ステップに提供されます。

パイプラインを構築するために PipelineData を使用するその他の例については、次のページを参照してください: https://aka.ms/pl-data-dep

サポートされているコンピューティングの種類では、PipelineData を使用して、実行によるデータの生成方法と使用方法を指定することもできます。 サポートされている 2 つの方法があります。

  • マウント (既定値): 入力データまたは出力データが、コンピューティング ノード上のローカル ストレージにマウントされ、環境変数が、このデータのパスを指すように設定されます ($AZUREML _DATAREFERENCE_name)。 便宜上、PipelineData オブジェクトを引数の 1 つとしてスクリプトに渡すことができます。たとえば PythonScriptSteparguments パラメーターを使用します。オブジェクトはデータへのパスに解決されます。 出力については、コンピューティング スクリプトで、この出力パスにファイルまたはディレクトリを作成する必要があります。 パイプライン オブジェクトを引数として渡すときに使用される環境変数の値を確認するには、get_env_variable_name メソッドを使用します。

  • アップロード: スクリプトによって生成されるファイル名またはディレクトリ名に対応する output_path_on_compute を指定します。 (この場合、環境変数は使用されません。)

メソッド

as_dataset

中間出力をデータセットに昇格させます。

このデータセットは、ステップが実行された後に存在します。 後続の入力をデータセットとして使用するためには、出力をデータセットに昇格させる必要があることに注意してください。 as_dataset が出力に対して呼び出されず、入力に対してのみ呼び出された場合は、noop になり、入力はデータセットとして使用されません。 次のコード例は、as_dataset の正しい使用方法を示しています。


   # as_dataset is called here and is passed to both the output and input of the next step.
   pipeline_data = PipelineData('output').as_dataset()

   step1 = PythonScriptStep(..., outputs=[pipeline_data])
   step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_download

PipelineData をダウンロードとして使用します。

as_input

InputPortBinding を作成し、入力名を指定します (ただし、既定のモードを使用)。

as_mount

PipelineData をマウントとして使用します。

create_input_binding

入力バインディングを作成します。

get_env_variable_name

この PipelineData の環境変数の名前を返します。

as_dataset

中間出力をデータセットに昇格させます。

このデータセットは、ステップが実行された後に存在します。 後続の入力をデータセットとして使用するためには、出力をデータセットに昇格させる必要があることに注意してください。 as_dataset が出力に対して呼び出されず、入力に対してのみ呼び出された場合は、noop になり、入力はデータセットとして使用されません。 次のコード例は、as_dataset の正しい使用方法を示しています。


   # as_dataset is called here and is passed to both the output and input of the next step.
   pipeline_data = PipelineData('output').as_dataset()

   step1 = PythonScriptStep(..., outputs=[pipeline_data])
   step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_dataset()

戻り値

データセットとしての中間出力。

の戻り値の型 :

as_download

PipelineData をダウンロードとして使用します。

as_download(input_name=None, path_on_compute=None, overwrite=None)

パラメーター

input_name
str
既定値: None

この入力の名前を指定するために使用します。

path_on_compute
str
既定値: None

ダウンロード先となるコンピューティング上のパス。

overwrite
bool
既定値: None

既存のデータを上書きするかどうかを示すために使用します。

戻り値

この PipelineData をソースとする InputPortBinding。

の戻り値の型 :

as_input

InputPortBinding を作成し、入力名を指定します (ただし、既定のモードを使用)。

as_input(input_name)

パラメーター

input_name
str
必須

この入力の名前を指定するために使用します。

戻り値

この PipelineData をソースとする InputPortBinding。

の戻り値の型 :

as_mount

PipelineData をマウントとして使用します。

as_mount(input_name=None)

パラメーター

input_name
str
既定値: None

この入力の名前を指定するために使用します。

戻り値

この PipelineData をソースとする InputPortBinding。

の戻り値の型 :

create_input_binding

入力バインディングを作成します。

create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)

パラメーター

input_name
str
既定値: None

入力の名前。

mode
str
既定値: None

PipelineData にアクセスするためのモード ("mount" または "download")。

path_on_compute
str
既定値: None

"ダウンロード" モードの場合は、データが格納されるコンピューティング上のパス。

overwrite
bool
既定値: None

"ダウンロード" モードの場合は、既存のデータを上書きするかどうか。

戻り値

この PipelineData をソースとする InputPortBinding。

の戻り値の型 :

get_env_variable_name

この PipelineData の環境変数の名前を返します。

get_env_variable_name()

戻り値

環境変数名。

の戻り値の型 :

str

属性

data_type

生成されるデータの型。

戻り値

データ型名。

の戻り値の型 :

str

datastore

PipelineData が置かれるデータストア。

戻り値

データストア オブジェクト。

の戻り値の型 :

name

PipelineData オブジェクトの名前。

戻り値

名前。

の戻り値の型 :

str