Vertex AI の Workbench で機械学習パイプラインを構築する方法〜 scikit-learn の学習結果を BigQuery へ出力する〜

Vertex AI の Workbench で機械学習パイプラインを構築する方法をご紹介します。

Jupyter ノートブックをベースとした開発環境で、機械学習モデルの実装はもちろん、BigQuery などの GCP サービス連携やワークフローの構築が可能です。

本記事では、scikit-learn で線形回帰モデルで学習した決定係数の値を BigQuery に格納するパイプラインを実装します。

実装手順

ノートブックの立ち上げ

Vertex AI のワークベンチから、新しいノートブックを押下してインスタンスを立ち上げます。

今回は Python3 を選択し、ノートブック名をつけて作成します。リージョンやゾーンなどはデフォルト値のままにしています。

数分でインスタンスが立ち上がります。

Vertex AI、App Engine、Cloud Functions API の有効化

パイプラインをスケジューリングできるようにするため、Vertex AI、App Engine、Cloud Functions API を有効化します。

画像のような状態になっていれば問題ありません。

パイプラインの実装

立ち上げたインスタンスの“JUPYTERLAB を開く”からノートブックにアクセスします。

線形回帰モデルの実装と BigQuery への出力処理を書きます。以下のコードはパイプラインを構築する箇所になります。Github に全コードを載せていますので、合わせてご参考ください。

# 参考 https://cloud.google.com/vertex-ai/docs/pipelines/run-pipeline
PROJECT_ID = 'xxx' # プロジェクトID
GCS_BUCKET = 'yyy' # バケット名

root_path = 'gs://{}/pipeline/'.format(GCS_BUCKET) # パイプラインサービスアカウントがアクセスできる Cloud Storage URI

@dsl.pipeline(
    name='sample-pipeline',
    description='VertexAIサンプルパイプライン',
    pipeline_root=root_path
)

# パイプライン構築
# out_eval (線形回帰モデルの結果出力)処理のあと、out_bq (学習結果を BigQuery へ出力)処理を行う
def root_pipeline():
    out_bq(PROJECT_ID, GCS_BUCKET).after(out_eval(GCS_BUCKET))

# パイプラインのコンパイル
compiler.Compiler().compile(pipeline_func=root_pipeline, package_path='sample_pipeline.json')

api_client = AIPlatformClient(project_id=PROJECT_ID,
                           region='us-central1')

api_client.create_schedule_from_job_spec(
    job_spec_path='sample_pipeline.json',
    schedule='0 10 * * *', # 毎日10時にパイプラインを実行する
    time_zone='Asia/Tokyo',
    pipeline_root=root_path
)

パイプラインの実行

Run All Cells を実行して上手くいくと、Cloud Scheduler へ登録されます。

Cloud Functions が有効になっているのに、有効化されていないというエラーが出る場合は、何回か実行すると成功します。

Cloud Scheduler の今すぐ実行を押すと、Vertex AI のパイプラインが実行されます。

設定した10時にもパイプラインが実行され、学習結果を BigQuery に出力することができています。

コスト

Vertex AI Pipeines のパイプライン実行料金、Vertex AI Workbench のインスタンス料金がかかります。

また、処理内部で利用している GCP サービスの料金もかかることがあります。今回の実装で BigQuery や Cloud Storage を利用していますが、大きな処理ではないので料金はかかりません。

サービス料金詳細
Vertex AI Pipelinesパイプライン実行ごとに$0.03
Vertex AI Workbenchシンタイプにより異なる。n1-standard-4 の場合は1時間あたり$0.19

まとめ

Vertex AI を利用した機械学習モデルのパイプライン構築方法をご紹介しました。

Jupyter で実装していた機械学習を定期実行したい場合などにも最適なサービスだと思います。

今回ご紹介したもの以外にも、AutoML や Tensorflow、Spark など、さまざまな機械学習モデルの実装とデータへのアクセス手段が用意されています。ぜひ利用してみてください。

この記事が機械学習パイプライン実装の参考になれば幸いです!