クラウドネイティブのAIスイートに含まれるKubeflow Pipelinesをデプロイし、Kubeflow Pipelinesを使用して、コンテナに基づくポータブルでスケーラブルな機械学習ワークフローを構築およびデプロイできます。 このトピックでは、Kubeflow Pipelinesを使用してワークフローを作成し、ワークフローを表示する方法について説明します。
前提条件
Container Service for Kubernetes (ACK) クラスターが作成されました。 この例では、GPU高速化ノードを含むACKクラスターが作成されます。 詳細については、「デフォルトのGPUスケジューリングモードの使用」をご参照ください。
クラスター内のノードはインターネットにアクセスできます。 詳細については、「既存のACKクラスターによるインターネットへのアクセスの有効化」をご参照ください。
永続ボリューム (PV) と永続ボリューム要求 (PVC) が作成されます。 詳細については、「共有NASボリュームの設定」または「静的にプロビジョニングされたOSSボリュームのマウント」をご参照ください。
Jupyterノートブックが作成されます。 詳細については、「ノートブックの作成と使用」をご参照ください。
背景情報
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の概要」をご参照ください。
Kubeflow Pipelinesをインストールします。
クラウドネイティブAIスイートがインストールされていない場合は、まずクラウドネイティブAIスイートをインストールし、[ワークフロー] セクションで [Kubeflow Pipelines] を選択する必要があります。 詳細については、「クラウドネイティブAIスイートのデプロイ」をご参照ください。
クラウドネイティブAIスイートがインストールされている場合は、次の操作を実行します。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[コンポーネント] セクションで、[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を使用してアーティファクトを格納します。
次のコマンドを実行して、KFP SDK for PythonおよびKFP Arena SDK for Pythonをインストールします。
KFP SDKを使用して、パイプラインを調整および送信できます。
KFP Arena SDKは、すぐに使用できるコンポーネントを提供します。
次の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
次の図は、成功応答のサンプルを示しています。

パイプラインを表示します。
AI開発者コンソールにログインします。
左側のナビゲーションウィンドウで、Kubeflow Pipelinesをクリックします。
左側のナビゲーションウィンドウで、[実行] をクリックします。 次に、[アクティブ] タブをクリックします。 パイプラインの実行に関する詳細を表示できます。

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

この例では、KFP SDKとKFP Arena SDKが使用されています。
pip install https://kube-ai-ml-pipeline.oss-cn-beijing.aliyuncs.com/sdk/kfp-1.8.10.5.tar.gzpip install https://kube-ai-ml-pipeline.oss-cn-beijing.aliyuncs.com/sdk/kfp-arena-0.1.3.tar.gz