5

私は、典型的な ML パイプラインのさまざまなコンポーネントをデプロイして接続するためのオプションとして、Kubeflow を検討しています。Docker コンテナを Kubeflow コンポーネントとして使用していますが、これまでContainerOp.file_outputsオブジェクトを使用してコンポーネント間で結果を渡すことができませんでした。

この機能についての私の理解に基づいて、コンポーネントの 1 つとして宣言されたファイルを作成して保存すると、そのファイルがfile_outputs永続化され、次のコンポーネントによる読み取りにアクセスできるようになります。

これは、パイプラインのPythonコードでこれを宣言しようとした方法です:

import kfp.dsl as dsl 
import kfp.gcp as gcp

@dsl.pipeline(name='kubeflow demo')
def pipeline(project_id='kubeflow-demo-254012'):
    data_collector = dsl.ContainerOp(
        name='data collector', 
        image='eu.gcr.io/kubeflow-demo-254012/data-collector',
        arguments=[ "--project_id", project_id ],
        file_outputs={ "output": '/output.txt' }
    )   
    data_preprocessor = dsl.ContainerOp(
        name='data preprocessor',
        image='eu.gcr.io/kubeflow-demo-254012/data-preprocessor',
        arguments=[ "--project_id", project_id ]
    )
    data_preprocessor.after(data_collector)
    #TODO: add other components
if __name__ == '__main__':
    import kfp.compiler as compiler
    compiler.Compiler().compile(pipeline, __file__ + '.tar.gz')

コンポーネントの python コードでdata-collector.py、データセットを取得してから に書き込みますoutput.txt。同じコンポーネント内のファイルから読み取ることはできますがdata-preprocessor.pyFileNotFoundError.

の使用はfile_outputsコンテナベースの Kubeflow コンポーネントでは無効ですか、それともコードで間違って使用していますか? 私の場合はオプションではない場合、パイプライン宣言の Python コード内でプログラムで Kubernetes ボリュームを作成し、代わりに使用することは可能file_outputsですか?

4

2 に答える 2

4

1 つの Kubeflow パイプライン コンポーネントで作成されたファイルは、コンテナーに対してローカルです。以降の手順で参照するには、次のように渡す必要があります。

data_preprocessor = dsl.ContainerOp(
        name='data preprocessor',
        image='eu.gcr.io/kubeflow-demo-254012/data-preprocessor',
        arguments=["--fetched_dataset", data_collector.outputs['output'],
                   "--project_id", project_id,
                  ]

注: data_collector.outputs['output']ファイルの実際の文字列の内容が含まれます/output.txt(ファイルへのパスではありません)。ファイルのパスを含める場合は、データセットを共有ストレージ (s3 やマウントされた PVC ボリュームなど) に書き込み、共有ストレージへのパス/リンクを に書き込む必要があります /output.txtdata_preprocessorその後、パスに基づいてデータセットを読み取ることができます。

于 2019-10-01T06:27:41.153 に答える