Open4

Vertex AI Pipeline を触ってみる

hiracky16hiracky16

モチベーション

  • Google Cloud 製のワークフローエンジンの調査
  • 比較的最近 GA になった Vertex AI Pipeline に興味を持ったため
  • 同時に MLOps(データの収集、加工、モデルの構築、デプロイ、テストなど)との親和性も高そう
  • とりあえず ML なしでサクッと始めてみたい
hiracky16hiracky16

前準備

以下を主に行った。

  • 中身は Kubeflow っぽいので以下のパッケージをインストール
  • GSC のバケットを作っておく(ここにそこに実行結果などが格納される)
  • Vertex AI API の有効化
  • パイプライン実行のためのサービスアカウントを作成
  • 作成したサービスアカウントに「Vertex AI ユーザー」と「バケット管理者」のロールを付与

参考
https://cloud.google.com/vertex-ai/docs/pipelines/configure-project?hl=ja

hiracky16hiracky16

サンプル実装

ML なしでサクッと始めたかったのでそういったサンプルないか探してみたが、以下の記事にあったのでやってみた。
https://medium.com/google-cloud/google-vertex-ai-the-easiest-way-to-run-ml-pipelines-3a41c5ed153
※ そのままだと動かなかったので修正を加えている。
※ 関数の返り値に型ヒントつけないとパイプライン実行時にエラーになってしまう

import kfp
from kfp.v2.dsl import pipeline
from kfp.v2.dsl import component
from kfp.v2 import compiler

@component()
def concat(a: str, b: str) -> str:
  return a + b

@component
def reverse(a: str) -> str:
    return f"original: {a}, reversed: {a[::-1]}"

@pipeline(name="basic-pipeline",
description="A basic pipeline with function based components",
              pipeline_root='gs://fpl_pipeline/basic-pipeine')
def basic_pipeline(a: str='stres', b: str='sed'):
    concat_task = concat(a, b)
    reverse_task = reverse(concat_task.output)

compiler.Compiler().compile(
  pipeline_func=basic_pipeline,
  package_path="basic_pipeline.json"
)

保存して実行すると basic_pipeline.json が出来上がる

hiracky16hiracky16

実行

GCP のコンソール上で Vertex AI Pipeline にアクセスして、「実行を作成」から先程出来上がった json をアップして入力パラメータを入れた上で実行する。
先程作ったサービスアカウントを指定することをお忘れなく。