テックブログ

エルカミーの技術ブログです

Vertex AI Pipelinesとは

Vertex AI Pipelinesとは

Vertex AI Pipelines は、Google Cloud の機械学習パイプライン管理サービスです。ML ワークフローを自動化し、スケーリングし、管理するのに役立ちます。Vertex AI Pipelines を使用すると、パイプラインを記述して、データの準備、モデルのトレーニング、モデルのデプロイを自動化できます。また、パイプラインを継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインに統合して、モデルをより頻繁に更新することもできます。

メリット
  • サーバーレス:Vertex AI Pipelines はサーバーレスであるため、インフラストラクチャを管理する必要はありません。
  • 自動化:Vertex AI Pipelines を使用すると、パイプラインを記述して、データの準備、モデルのトレーニング、モデルのデプロイを自動化できます。これにより、時間と労力をかけずに、モデルをより頻繁に更新できます。
  • スケーリング:Vertex AI Pipelines は、大規模なデータセットやモデルを処理するようにスケーリングできます。これにより、あらゆる規模の ML ワークフローに使用できます。
  • 管理:Vertex AI Pipelines は、CI/CD パイプラインに統合して、モデルをより頻繁に更新できます。また、パイプラインの実行を追跡し、パフォーマンスを監視することもできます。
パイプラインの実行

💡
Vertex AI Pipelinesで実行可能なパイプライン は、Kubeflow Pipelines SDKとTFX(TensorFlow Extended)の2種類ありますが、Kubeflow Pipelines SDK の活用事例が多いためこちらをもとに説明します。
実行ステップ
  1. コンポーネントを作成します。
    1. コンポーネント用のプログラムを作成します。
    2. Cloud Source Repositories(又はGitHub)にプログラムを登録します。
    3. Cloud BuildでDockerイメージをAritifact Registry(又はContainer Registry)に登録します。
    4. コンポーネントをyaml形式で定義します。
    💡
    コンポーネントとは、パイプラインを構成するために使用できる小さな実行可能単位です。コンテナイメージまたはPython関数で記述できます。
    コンポーネントの種類
    1. 独自のパイプライン コンポーネント

      独自でコンポーネントを定義します。コンポーネント内で、コンテナイメージを指定します。

      記述例

      pipeline.py

      import kfp
      
      sample_op = kfp.components.load_component_from_file(
          "../components/component.yaml")

      component.yaml

      name: Sample Component
      description: sample component model
      inputs:
        - name: words
          type: String
      outputs:
        - name: data
          type: String
      implementation:
        container:
          image: gcr.io/xxx
          command: [python, main.py]
          args: [--words, { inputValue: words }, --output_path, { outputPath: data }]
    2. Python関数ベースのコンポーネント

      Python 関数でコンポーネントを生成することができます。

      記述例

      pipeline.py

      import kfp
      import kfp.dsl as dsl
      from kfp.v2.dsl import component
      
      @component
      def add(a: float, b: float) -> float:
        '''Calculates sum of two arguments'''
        return a + b
    3. Google Cloud Pipeline コンポーネントのビルド済みコンポーネント

      Google 仕様のコンポーネントです。BigQueryなどのGoogle Cloud プロダクトと連携します。

      記述例

      pipeline.py

      model_deploy_op = ModelDeployOp(model=training_job_run_op.outputs["model"],
          endpoint=endpoint_op.outputs["endpoint"],
          automatic_resources_min_replica_count=1,
          automatic_resources_max_replica_count=1,
          service_account="SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com")
  2. パイプラインを記述します。

    パイプラインをPythonで記述してJSON ファイルにコンパイルします。

    💡
    パイプラインは、データ準備、モデルトレーニング、モデルデプロイを含む、ML ワークフローの一連のタスクを定義します。
  3. パイプラインを実行します。

    パイプラインを実行するには、Vertex AI Pipelines コンソールまたは gcloud コマンドラインツールを使用できます。パイプラインをデプロイすると、Vertex AI Pipelines サービスによって実行されます。

構成
image block

費用

1つのパイプライン実行あたり下記になります。サーバーレスなので、固定の費用がありません。パイプライン実行数が多くない場合は、GKE上でKubeflowパイプラインを実行するよりもトータルで安くなります。

  • 0.03 ドル
  • 各コンポーネントのリソース費用
Vertex AI Pipelines では、パイプライン実行ごとに 0.03 ドルの実行手数料がかかります。プレビュー リリース中に実行手数料が請求されることはありません。また、パイプライン コンポーネントによって使用される Compute Engine リソースなど、Vertex AI Pipelines で使用する Google Cloud リソースに対しても課金されます(Vertex AI トレーニングと同じレートで課金されます)。最後に、パイプラインによって呼び出されるすべてのサービス(Dataflow など)の費用については、お客様の責任となります。
参考

公式サイトのVertex AI Pipelinesの概要

チュートリアル

Vertex AI Pipelines Codelab の概要

パイプラインコンポーネントの一覧