🤖

Vertex AI Pipelines のTabular Workflow for Forecasting

2023/11/07に公開

こんにちは、クラウドエース データML ディビジョン所属の江藤です。
クラウドエースのITエンジニアリングを担うシステム開発部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータML ディビジョンです。

データML ディビジョンでは活動の一環として、
毎週Google Cloudの新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページ含め記事として公開しています。
今回、ご紹介するリリースは2023年8月28日付でpreviewで利用可能となった、Vertex AIのTabular Workflowについてです。

参考資料:Vertex AI release notes

リリース内容

Tabular Workflow for Forecastingはプレビューで利用できるようになりました。

Tabular Workflow とは

Tabular Workflow(表形式ワークフロー)は、表形式データを対象としたエンドツーエンドの機械学習を実現するための統合されたスケーラブルなビルド済みパイプラインのことです。
このワークフローは、機械学習のタスクを簡素化し、自動化するためのツールやプロセスのセットを提供します。
データの前処理からモデルのトレーニング、評価、デプロイメントにいたるまで、機械学習プロジェクト全体をカバーします。これにより、ユーザーは一貫性のあるプロセスで機械学習モデルを構築できます。

このワークフローは、Google Cloud PlatformのVertex AI Pipelinesの一部として提供されます。Vertex AI Pipelinesは、機械学習パイプラインを簡単に作成、管理、デプロイできるプラットフォームで、Tabular Workflowはその一部として提供され、マネージド環境で実行できます。

Tabular Workflow for Forecastingとは

Tabular Workflow for Forecasting(予測のための表形式ワークフロー)は、予測タスクを実行するためのステップのシーケンスです。このワークフローは、AutoML APIと同様に予測モデルを構築しますが、ユーザーが各ステップを制御し、カスタマイズできる点が異なります。以下は、制御できるパイプラインのステップです。

  • データ分割
  • 特徴量エンジニアリング
  • アーキテクチャ検索
  • モデルのトレーニング
  • モデルのアンサンブル

これらのステップを調整することで、ユーザーは予測モデルのパフォーマンスを向上させ、特定の予測課題に適したモデルを構築するための柔軟性を持つことができます。

Tabular Workflow for Forecastingは、大規模なデータセットを扱うことができ、予測精度も高いため、さまざまな予測タスクに利用できます。

Tabular Workflow for Forecastingのメリット

Tabular Workflow for Forecastingには以下のメリットがあります。

  • 最大1TB、200カラムのデータセットをサポートします。
  • アーキテクチャの種類の探索範囲を制限またはスキップすることで、安定性を向上させ、トレーニング時間を短縮させることができます。
  • トレーニングとアーキテクチャ検索に使用するハードウェアを手動で選択することで、トレーニング速度を向上させることができます。
  • 一部のモデルトレーニング方法では、アンサンブルサイズを変更することで、モデルサイズを小さくし、レイテンシーを向上させることができます。
  • 各コンポーネントの詳細は、pipelines graph interfaceで確認できます。このインターフェイスでは、変換されたデータテーブルや評価されたモデルアーキテクチャなど、さまざまな情報を確認できます。
  • 各コンポーネントは、細かい設定や状態を視覚的に確認できるようになりました。これにより、予測タスクのカスタマイズやトラブルシューティングがしやすくなります。

Vertex AI Pipelinesの予測

Tabular Workflow for Forecastingは、Vertex AI Pipelinesのマネージドインスタンスです。

Vertex AI Pipelinesは、Kubeflowパイプラインを実行するサーバーレスサービスです。パイプラインを使用して、機械学習とデータ準備タスクを自動化および監視できます。パイプラインの各ステップは、パイプラインのワークフローの一部を実行します。たとえば、パイプラインには、データを分割、データ型を変換、モデルをトレーニングするステップを含めることができます。ステップはパイプラインコンポーネントのインスタンスであるため、ステップには入力、出力、およびコンテナーイメージがあります。ステップ入力は、パイプラインの入力から設定するか、このパイプライン内の他のステップの出性に依存させることができます。これらの依存関係は、パイプラインのワークフローを有向非巡回グラフとして定義します。

Tabular Workflow for Forecasting のパイプラインコンポーネント

Tabular Workflow for Forecasting は、予測タスクに必要なデータ準備、モデルのトレーニング、予測結果の評価を自動化するためのパイプラインです。

以下の図は、Tabular Workflow for Forecasting のモデリング・パイプラインの概要を示しています。
緑色のボックスはユーザーが設定できるコンポーネントを表し、黄色いボックスはデータや入出力を表し、オレンジ色のボックスは条件分岐を表しています。
各コンポーネントの詳細は、コンポーネントを参照してください。
コンポーネントの入出力詳細は、コンポーネント入出力を参照してください。

forecasting
画像はgoogle公式ホームページより参照
https://cloud.google.com/static/vertex-ai/docs/tabular-data/images/forecasting.svg

コンポーネント

Tabular Workflow for Forecasting には、以下のコンポーネントがあります。

コンポーネント 役割
feature-transform-engine データの前処理(特徴量エンジニアリング)を行います。欠損値の補完、データの標準化、新しい特徴量の作成などを行うことができます。
training-configurator-and-validator トレーニングの設定を検証し、トレーニングに必要なメタデータを生成します。トレーニングのアルゴリズムやパラメータを指定します。
split-materialized-data マテリアライズされたデータをトレーニングセット、評価セット、テストセットに分割します。トレーニングセットはモデルのトレーニングに使用され、評価セットはモデルの性能を評価するために使用されます。テストセットはモデルのパフォーマンスを評価するために使用されます。
calculate-training-parameters-2 トレーニングに必要な時間を計算します。
get-hyperparameter-tuning-results(オプション) 以前のパイプライン実行で得たハイパーパラメータチューニング結果を読み込みます。これにより、アーキテクチャ検索をスキップして、より高速にパイプラインを実行できます。
automl-forecasting-stage-1-tuner(または automl-forecasting-stage-2-tuner モデルアーキテクチャを探索し、ハイパーパラメータをチューニングします。これにより、予測精度を向上させることができます。
get-prediction-image-uri-2 モデルタイプに基づいて、予測に使用するイメージ URI を生成します。
automl-forecasting-ensemble-2 最良のアーキテクチャをアンサンブルして最終モデルを作成します。これにより、予測精度をさらに向上させることができます。
model-upload-2 モデルをアップロードします。
should-run-model-evaluation(オプション) テストセットを使用して評価指標を計算します。これにより、モデルのパフォーマンスを評価できます。

コンポーネント入出力

コンポーネント 入力 出力 入出力説明
feature-transform-engine Raw data (BigQuery or CSV dataset) instance_schema, dataset_stats, training_schema, materialized_data - instance_schema: 予測データのデータ型を記述した OpenAPI 仕様のインスタンススキーマ。
- dataset_stats: 生のデータセットを記述する統計情報。
- training_schema: トレーニングデータのデータ型を記述した OpenAPI 仕様のトレーニングデータスキーマ。
- materialized_data: データ準備済みのデータ。
training-configurator-and-validator instance_schema, dataset_stats, training_schema training_config - training_config: トレーニングの設定。
split-materialized-data materialized_data materialized_train_split, materialized_eval_split, materialized_test_split - materialized_train_split: トレーニングセット。
- materialized_eval_split: 評価セット。
- materialized_test_split: テストセット。
calculate-training-parameters-2 materialized_train_split training_parameters - training_parameters: トレーニングに必要なパラメータ。
get-hyperparameter-tuning-results - tuning_result_output - tuning_result_output: ハイパーパラメータチューニングの結果。
automl-forecasting-stage-1-tuner(または automl-forecasting-stage-2-tuner materialized_train_split, materialized_eval_split, artifact (オプション) tuning_result_output - tuning_result_output: ハイパーパラメータチューニングの結果。
get-prediction-image-uri-2 tuning_result_output prediction_image_uri - prediction_image_uri: 予測に使用するイメージ URI。
automl-forecasting-ensemble-2 tuning_result_output unmanaged_container_model - unmanaged_container_model: 出力モデル。
model-upload-2 unmanaged_container_model model - model: 出力モデル。
should-run-model-evaluation(オプション) - model_evaluation_results (オプション) - model_evaluation_results: モデルの評価結果。

オプション機能

  • get-hyperparameter-tuning-results: 以前のパイプライン実行で得たハイパーパラメータチューニング結果を読み込む。
  • should-run-model-evaluation: テストセットを使用して評価指標を計算する。

Tabular Workflow for Forecastingで学習してみる

上記では、Tabular Workflow for Forecastingの概要とメリットについて説明しました。
この章ではより理解を深めるために実際にTabular Workflow for Forecastingを使用して学習してみます。
前提として以下のAPIを有効化しておきます。

  • Vertex AI
    • ユーザー管理のノートブック
  • Dataflow
  • Compute Engine
  • Cloud Storage

以下を開き、ノートブックを作成します。
Open in Vertex AI Workbench user-managed notebooks

上記ノートブック内の以下項目を設定します。

  • PROJECT_ID
    • PROJECT_ID
  • region
    • region
  • bucket_name
    • bucket_name

ノートブックをトレーニングの前まで実行します。
モデルのトレーニング方法を以下から選択し実行します。

  • Time series Dense Encoder (TiDE)
    1. With model architecture search
    2. Without model architecture search
  • Temporal Fusion Transformer (TFT)
  • AutoML (L2L)
  • Seq2Seq+

各モデルの説明は以下を確認してください。
https://cloud.google.com/vertex-ai/docs/tabular-data/forecasting-parameters#training-methods

ハイパーパラメータ調整結果のURIを取得する

Tabular Workflow for Forecastingの実行を完了している場合は、前の実行のハイパーパラメータチューニング結果を使用して、トレーニング時間とリソースを節約できます。
前のハイパーパラメータチューニング結果を見つけるには、Google Cloud Consoleを使用するか、APIを使用してプログラム的に読み込むことができます。

以下はコンソールでの操作方法になります。

  1. 該当パイプラインを選択する。
    • select_pipeline
  2. コンポーネントexit-handler-1をクリックします。
  3. コンポーネントstage_1_tuning_result_artifact_uri_emptyをクリックします。
  4. コンポーネント automl-forecasting-stage-1-tuner を見つける。
  5. 関連するアーティファクト tuning_result_output をクリックします。
  6. Node Infoタブを選択する。
  7. モデル学習ステップで使用するURIをコピーします。
    • copy_uri

モデル学習

以下のサンプルコードは、実際に私がモデル学習パイプラインに使用したパラメータを示しています。

job = aiplatform.PipelineJob(
    ...
    template_path=template_path,
    parameter_values=parameter_values,
    ...
)
job.run(service_account=SERVICE_ACCOUNT)

それぞれのモデルで以下のようにパイプラインとパラメータ値を定義します。

  • Time series Dense Encoder (TiDE)
template_path, parameter_values = automl_forecasting_utils.get_time_series_dense_encoder_forecasting_pipeline_and_parameters(...)
  • Temporal Fusion Transformer (TFT)
template_path, parameter_values = automl_forecasting_utils.get_temporal_fusion_transformer_forecasting_pipeline_and_parameters(...)
  • AutoML (L2L)
template_path, parameter_values = automl_forecasting_utils.get_learn_to_learn_forecasting_pipeline_and_parameters(...)
  • Seq2Seq+
template_path, parameter_values = automl_forecasting_utils.get_sequence_to_sequence_forecasting_pipeline_and_parameters(...)

Vertex AI Forecastingパラメータ名と説明

以下はパイプラインパラメータ引数に渡すことができるパラメータの一覧です。

パラメータ名 説明
optimization_objective String 最適化目標
time_column String 時間列
time_series_identifier_columns List[str] 時系列識別列
weight_column String (オプション) 重み列
time_series_attribute_columns List[str] (オプション) 時系列属性である列の名前
available_at_forecast_columns List[str] (オプション) 予測時に値がわかっている共変量列の名前
unavailable_at_forecast_columns List[str] (オプション) 予測時に値がわかっていない共変量列の名前
forecast_horizon Integer (オプション) 予測期間
context_window Integer (オプション) コンテキストウィンドウ
window_max_count Integer (オプション) 最大ウィンドウ数
window_stride_length Integer (オプション) ストライド長
window_predefined_column String (オプション) ウィンドウ識別列
holiday_regions List[str] (オプション) ホリデー地域
predefined_split_key String (オプション) データスプリットキー
training_fraction Float (オプション) トレーニングデータの割合
validation_fraction Float (オプション) バリデーションデータの割合
test_fraction Float (オプション) テストデータの割合
data_source_csv_filenames String データソースのCSVファイル名
data_source_bigquery_table_path String データソースのBigQueryテーブルパス
dataflow_service_account String (オプション) Dataflowサービスアカウント
run_evaluation Boolean (オプション) 評価を実行するかどうか
evaluated_examples_bigquery_path String (オプション) 評価結果のBigQueryテーブルパス

Workflowカスタマイズオプション

パイプライン定義中に渡される引数値を定義することで、Tabular Workflow for Forecasting をカスタマイズできます。

  • Configure hardware
    • トレーニングに使用するマシンの種類と台数を設定できます。
    • このオプションは、大規模なデータセットがあり、それに応じてマシンのハードウェアを最適化したい場合に適しています。
  • Skip architecture search
    • アーキテクチャ検索なしでパイプラインを実行し、代わりに以前のパイプライン実行からハイパーパラメータのセットを提供することができます。

ハードウェア設定

パラメータ名 説明
stage_1_tuner_worker_pool_specs_override Dict[String, Any] (オプション) マシンタイプとトレーニング用マシン数のカスタム設定。このパラメータは、パイプラインのautoml-forecasting-stage-1-tunerコンポーネントを構成します。
stage_1_tuning_result_artifact_uri String (オプション) 以前のパイプライン実行によるハイパーパラメータのチューニング結果のURIを設定します。

Tabular Workflowsの料金

Tabular Workflowsを使用してモデルをトレーニングする場合、インフラストラクチャと依存サービスのコストに基づいて課金されます。
このモデルを使用して予測を行う場合、インフラストラクチャのコストに基づいて課金されます。
インフラストラクチャのコストは、以下の要因に依存します。

  • 使用するマシンの数
  • 使用するマシンのタイプ
  • マシンの使用時間
    • モデルのトレーニングまたはバッチ予測の場合、これはオペレーションの合計処理時間です。
    • オンライン予測を行っている場合、これはモデルがエンドポイントにデプロイされている時間です。

また、Tabular Workflowsは、プロジェクト内の以下複数の依存サービスを実行します。

  • Dataflow
  • BigQuery
  • Cloud Storage
  • Vertex AI Pipelines
  • Vertex AI Training

私が全てのコンポーネントでマシンタイプn1-standard-16で5回訓練1回予測を実行した結果、総額$70程度でした。

まとめ

今回の記事では、Vertex AIのTabular Workflow for Forecastingを紹介しました。
より柔軟で簡単な機械学習をサポートするのでプレビュー版ではございますが是非ご利用ください。

その他VertexAI関連記事

Vertex AI Pipelines で scheduler API がプレビューになりました
Vertex AIのTimeseries Insights APIとは
Vertex AIのGenerative AIサポートの概要
Vertex AI Model Gardenを活用した効果的なモデル開発プロセスの紹介

Discussion