Vertex AI Pipelines を触ってみた¶
Vertex AI Pipelines を使ってみて、機械学習パイプラインを Google Cloud 上で実行するときの機能と注意点をまとめました。コンポーネントの記述方法や出力の種類、kfp のバージョンとリージョンの指定で注意したい点を紹介します。
Vertex AI Pipelines とは¶
Vertex AI Pipelines を使うと、Google Cloud のマネージド機械学習プラットフォームである Vertex AI 上で、機械学習パイプラインを容易に構築・実行できます。Kubeflow Pipelines の機能をベースにしており、Kubernetes 上で動作する機械学習パイプラインの開発や実行に必要な機能を提供しています。
Vertex AI Pipelines では、次のような機能が利用できます。
- パイプラインの視覚化とデバッグ:パイプラインのステップをグラフィカルに表示し、パイプラインの実行時にデバッグできる
- パラメータの調整:機械学習モデルのハイパーパラメータを調整し、モデルの精度を向上
- データの前処理:データの前処理や変換を自動化し、機械学習モデルの品質を向上
- 分散トレーニング:複数のワーカーノードで機械学習モデルをトレーニングし、トレーニング時間を短縮
- モデルのデプロイ:機械学習モデルのデプロイを容易に行い、実際のアプリケーションに統合
- Python の関数もしくはコンテナベースでコンポーネントを記述する
さらに、Vertex AI Pipelines では、Kubeflow Pipelines に加えて、Google Cloud の機械学習サービスと統合するための機能も提供されています。たとえば、AutoML や BigQuery などの Google Cloud のサービスをパイプラインに組み込むことができます。
tips¶
実際に触って気づいた tips を、コンポーネントの記述方法と出力の扱いの順にまとめます。
コンポーネントの記述¶
Python の関数ベースで記述するときは、@component(base_image=...)のデコレータで実行するコンテナイメージを指定します。一方、YAML ベースで記述する方法についてはTatsuya Shirakawa 氏の note 記事が詳しく解説しています。
Output¶
生成したモデルや Dataset、レポート(Confusion Matrix や HTML、Markdown)などをコンポーネントから出力でき、結果を確認・共有しやすくなります。
使ってみた感想¶
- kfp の 1 系と 2 系で挙動が変わるので、参考にするコードがどのバージョンで動いているかに注意が必要
- リージョンの指定を間違えやすいので注意が必要で、pipeline の YAML へ変換したときに確認するとよい
まとめ¶
Kubeflow Pipelines をベースにした機械学習パイプラインを Google Cloud 上で構築・実行でき、AutoML や BigQuery などのサービスも組み込めるのが Vertex AI Pipelines の利点です。実際に触ってみると、kfp の 1 系と 2 系の挙動の違いやリージョンの指定など、注意が必要な点もありました。まずは参考に挙げたチュートリアルやサンプルコードで一通りの流れを確認し、そのうえで自分のユースケースに合わせて調整するとよいでしょう。
参考¶
- MLOps on GCP 入門 〜Vertex AI Pipelines 実践〜 - GMOインターネットグループ グループ研究開発本部
- Introduction to Vertex AI Pipelines | Google Cloud
- Vertex AI PipelinesのTips | フューチャー技術ブログ:よくまとまっている
- Vertex Pipelinesによる機械学習パイプラインの実行
- Vertex AI Pipelinesのチュートリアル | Hakky Handbook:これ動かしてみるの良いかも
- Vertex AIではじめるKubeflow Pipelines | DevelopersIO
- そうだ、Kubeflow Pipelinesでカスタムコンテナ利用と設定ファイルの記述をしよう | DevelopersIO
サンプルコード¶
- vertex-ai-samples/notebooks at main · GoogleCloudPlatform/vertex-ai-samples · GitHub:sample codes
- vertex-ai-samples/notebooks/official/pipelines/control_flow_kfp.ipynb at main · GoogleCloudPlatform/vertex-ai-samples · GitHub
- vertex-ai-samples/notebooks/official/pipelines/google_cloud_pipeline_components_model_train_upload_deploy.ipynb at main · GoogleCloudPlatform/vertex-ai-samples · GitHub
- vertex-ai-samples/notebooks/official/pipelines/pipelines_intro_kfp.ipynb at main · GoogleCloudPlatform/vertex-ai-samples · GitHub:intro 短時間で動かすには良さそう
- vertex-ai-samples/notebooks/community/ml_ops/stage3/README.md at main · GoogleCloudPlatform/vertex-ai-samples · GitHub:pipelines のサンプル集
- Vertex AI Training and Serving with TFX and Vertex Pipelines | Google Colab:TFX のサンプルコード
- vertex-ai-samples/notebooks/official/pipelines/google_cloud_pipeline_components_automl_images.ipynb at main · GoogleCloudPlatform/vertex-ai-samples · GitHub
コードラボ・ハンズオン¶
- Intro to Vertex Pipelines | Google Codelabs:intro(やや重いかも)
- Running custom model training on Vertex Pipelines | Google Codelabs:カスタムモデルのサンプル。2 時間ほど確保できればよさそう
その他の参考記事¶
- Vertex AI pipelines - getting started - 1 - b.telligent:短時間で動きそう
- Vertex AI Pipelines で ML パイプラインを組む時の Tips #機械学習 - Qiita:tips
- Vertex Pipelines 一般提供のお知らせ | Google Cloud 公式ブログ:pipelines 公式 blog
- パイプラインのビルド | Vertex AI | Google Cloud:公式 TFX パイプラインのサンプル
- The Easiest Way to Run Google Vertex AI Pipelines:一通りの流れ
- カスタム ML パイプラインの作成とデプロイのステップバイステップガイド(Part 2) | Medium:一通りの流れを step by step で説明してくれている
- 自己流 Vertex AI Pipelines 開発プラクティス|Tatsuya Shirakawa:設計の tips
- Custom Job の作成(Python の例) | Google Cloud
- Vertex AI Pipelines でローカルのコードを実行する例と with 句を使う例