すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Kubeflow Pipelinesを使用したワークフローの作成

最終更新日:Jan 26, 2025

クラウドネイティブのAIスイートに含まれるKubeflow Pipelinesをデプロイし、Kubeflow Pipelinesを使用して、コンテナに基づくポータブルでスケーラブルな機械学習ワークフローを構築およびデプロイできます。 このトピックでは、Kubeflow Pipelinesを使用してワークフローを作成し、ワークフローを表示する方法について説明します。

前提条件

背景情報

Kubeflow Pipelinesは、エンドツーエンドの機械学習ワークフローを構築するためのプラットフォームです。 Kubeflowパイプラインは、次のコンポーネントで構成されています。

  • Kubeflow Pipelines UI: 実験、パイプライン、および実行を作成および表示できます。

  • Kubeflow Pipelines SDK: コンポーネントとパイプラインを定義および構築できます。

  • ワークフローエンジン: ワークフローを実行します。

Kubeflow Pipelinesは次の特徴を提供します:

  • Kubeflow Pipelinesのワークフロー機能を使用して、機械学習プロジェクトのCI/CDパイプラインを構築できます。

  • Kubeflow Pipelinesの実験機能を使用して、さまざまなパラメーターまたはデータでパイプラインがどのように実行されるかを比較および分析できます。

  • Kubeflow Pipelinesの追跡機能を使用して、モデルの各リリースのデータ、コード、構成、および入力と出力を記録できます。

Kubeflow Pipelinesの詳細については、「Kubeflow Pipelines」をご参照ください。

手順

この例では、KFP SDKとKFP Arena SDKを使用して、機械学習ワークフローを構築します。 Jupyterノートブックは、Python用のSDKのインストール、ワークフローの調整、およびワークフローの送信に使用されます。 KFP SDKの詳細については、「パイプラインSDKの概要」をご参照ください。

  1. Kubeflow Pipelinesをインストールします。

    • クラウドネイティブAIスイートがインストールされていない場合は、まずクラウドネイティブAIスイートをインストールし、[ワークフロー] セクションで [Kubeflow Pipelines] を選択する必要があります。 詳細については、「クラウドネイティブAIスイートのデプロイ」をご参照ください。

    • クラウドネイティブAIスイートがインストールされている場合は、次の操作を実行します。

      1. ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

      2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[アプリケーション] > [クラウドネイティブAIスイート] を選択します。

      3. [コンポーネント] セクションで、[ack-ai-dashboard][ack-ai-dev-console] を見つけ、[操作] 列の [アップグレード] をクリックします。 次に、ack-ai-pipelineを見つけ、[操作] 列の [デプロイ] をクリックします。

        コンポーネント

        説明

        ack-ai-dashboard

        コンポーネントを1.0.7以降に更新する必要があります。

        ack-ai-dev-console

        コンポーネントを1.0.13以降に更新する必要があります。

        ack-ai-パイプライン

        ack-ai-pipelineをデプロイすると、システムはkubeai-ossという名前のシークレットが存在するかどうかをチェックします。 kubeai-oss Secretが存在する場合、Object Storage Service (OSS) を使用してアーティファクトが格納されます。 kubeai-oss Secretが存在しない場合は、事前にインストールされたMinIOを使用してアーティファクトを格納します。

  2. 次のコマンドを実行して、KFP SDK for PythonおよびKFP Arena SDK for Pythonをインストールします。

  3. この例では、KFP SDKとKFP Arena SDKが使用されています。

    • KFP SDKを使用して、パイプラインを調整および送信できます。

    • pip install https://kube-ai-ml-pipeline.oss-cn-beijing.aliyuncs.com/sdk/kfp-1.8.10.5.tar.gz
    • KFP Arena SDKは、すぐに使用できるコンポーネントを提供します。

    • pip install https://kube-ai-ml-pipeline.oss-cn-beijing.aliyuncs.com/sdk/kfp-arena-0.1.3.tar.gz
  4. 次のPythonファイルを使用して、ワークフローを調整して送信します。

    ワークフローでは、次の操作を定義します。データセットをダウンロードし、ダウンロードしたデータセットに基づいてモデルをトレーニングします。

    import kfp
    from kfp import compiler
    from arena import standalone_job_op, pytorch_job_op
    
    def mnist_train_pipeline():
        #The operation to download datasets to a PVC. 
        download_op = standalone_job_op(namespace="default-group",
                                      name="download-mnist-dataset",
                                      image="kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/download-mnist-dataset:demo",
                                      working_dir="/root",
                                      data=["training-data:/mnt"], 
                                      command="/root/code/mnist-pytorch/download_mnist_dataset.sh /mnt/pytorch_data")
    
        #The operation to train a model based on the datasets in the PVC and save the model data to the PVC after the training is complete. The datasets are downloaded by the download_op operation. 
        train_op = pytorch_job_op(namespace="default-group",
                                annotation="kubai.pipeline:test",
                                name="pytorch-dist-step",
                                gpus=1,
                                workers=3,
                                working_dir="/root",
                                image="registry.cn-beijing.aliyuncs.com/ai-samples/pytorch-with-tensorboard:1.5.1-cuda10.1-cudnn7-runtime",
                                sync_mode="git",
                                sync_source='https://code.aliyun.com/370272561/mnist-pytorch.git',
                                data=["training-data:/mnt"],
                                logdir="/mnt/pytorch_data/logs",
                                command="python /root/code/mnist-pytorch/mnist.py --epochs 10 --backend nccl --dir /mnt/pytorch_data/logs --data /mnt/pytorch_data/")
        train_op.after(download_op)
    
    #Create a client and submit data. 
    client = kfp.Client()
    client.create_run_from_pipeline_func(mnist_train_pipeline,
                                         namespace="default-group",
                                         arguments={})

    次の表に、前述のサンプルコードブロックのパラメーターを示します。

    パラメーター

    必須 / 任意

    説明

    デフォルト値

    name

    対象

    送信するジョブの名前を指定します。 名前はグローバルに一意である必要があります。

    非該当

    working_dir

    非対象

    コマンドを実行するディレクトリを指定します。

    /ルート

    gpus

    非対象

    指定されたジョブが実行されるワーカーノードで使用されるGPUの数を指定します。

    0

    イメージ

    対象

    ランタイムのデプロイに使用するイメージのアドレスを指定します。

    非該当

    sync_mode

    非対象

    同期モードを指定します。 有効な値: gitおよびrsync この例ではgit-syncモードが使用されています。

    非該当

    sync_source

    非対象

    ソースコードの同期元となるリポジトリのアドレスを指定します。 このパラメーターは、-- sync-modeパラメーターと一緒に使用されます。 この例ではgit-syncモードが使用されています。 したがって、GitHubまたはAlibaba Cloud上のプロジェクトのURLなど、Gitリポジトリアドレスを指定する必要があります。 ソースコードは、-- working-dirの下のcode/ ディレクトリにダウンロードされます。 この例のディレクトリは、/root/code/tensorflow-sample-codeです。

    非該当

    data

    非対象

    トレーニングジョブが実行されるランタイムに共有PVをマウントします。 このパラメーターの値は、コロン (:) で区切られた2つの部分で構成されます。 コロンの左側にPVCの名前を指定します。 PVCの名前を取得するには、arena data listコマンドを実行します。 このコマンドは、クラスターで使用可能なPVCを照会します。 PVCによって要求されたPVがコロンの右側にマウントされるパスを指定します。これは、トレーニングジョブがデータを読み取るローカルパスでもあります。 このようにして、トレーニングジョブは、PVCによって要求された対応するPVに格納されたデータを取得できます。

    説明

    arena data listコマンドを実行して、指定されたクラスターで使用可能なPVCを照会します。

    NAME           ACCESSMODE     DESCRIPTION  OWNER  AGE
    training-data  ReadWriteMany                      35m

    使用可能なPVCがない場合は、PVCを作成できます。 詳細については、「共有NASボリュームの設定」をご参照ください。

    非該当

    tensorboard

    非対象

    TensorBoardを使用してトレーニング結果を視覚化することを指定します。 -- logdirパラメーターを設定して、TensorBoardがイベントファイルを読み取るパスを指定できます。 このパラメーターを設定しない場合、TensorBoardは使用されません。

    非該当

    logdir

    非対象

    TensorBoardがイベントファイルを読み取るパスを指定します。 このパラメーターと -- tensorboardパラメーターの両方を指定する必要があります。

    /training_logs

    次の図は、成功応答のサンプルを示しています。

    image

  5. パイプラインを表示します。

    1. AI開発者コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、Kubeflow Pipelinesをクリックします。

    3. 左側のナビゲーションウィンドウで、[実行] をクリックします。 次に、[アクティブ] タブをクリックします。 パイプラインの実行に関する詳細を表示できます。 View a run of the pipeline

    4. 実行をクリックして実行の詳細を表示します。 Run details