📑

Vertex AIにおけるGeminiモデルのバッチ予測を活用した大規模データ処理

に公開

この記事では、Vertex AIにおけるGeminiモデルのバッチ予測(Batch Prediction)を活用して、大量のデータに対する予測を効率的に行う方法について書きます。

1. Batch Prediction の概要

Vertex AIのバッチ予測は、Geminiモデルで大量データを一括処理できる高効率な推論機能で、コストも標準の50%に抑えることができます。

https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/batch-prediction-gemini

メリット

  • 効率的な処理: プロンプトを多数一括送信できます。結果はBigQueryまたはCloud Storageに保存できます。
  • コスト削減: 標準リクエストより50%割引で利用可能。
  • スケーラビリティ: 推奨上限なし。利用可能なリソースで自動並列化されます。(最低25,000件ということからこの機能自体大きめのデータに対して使われることを想定してそうです。)

制限

  • 同時実行ジョブ: リージョンごとに8つまで
  • リージョン整合性: Vertex AIとBigQueryのリージョンを一致させる必要あり

特に同時実行ジョブはそこまで多くないので注意が必要です。

実装

Pythonを用いたサンプル実装は以下です。今回は GCSに input ファイルを配置して、出力を BigQueryテーブルにしています。
ライブラリは Google が提供している genai パッケージを使います。

https://googleapis.github.io/python-genai/

from google import genai
from google.genai.types import CreateBatchJobConfig, JobState, HttpOptions

client = genai.Client(
            vertexai=True,
            project="project_id",
            location="us-west1",
            http_options=HttpOptions(api_version="v1")
        )

input_uri = "gs://path/to/batch_pred_test.jsonl"
output_uri = "bq://project_id.dataset.batch_output"

job = client.batches.create(
        model="gemini-2.0-flash-lite-001",
        src=input_uri,
        config=CreateBatchJobConfig(dest=output_uri),
        )

print(f"Job name: {job.name}")
print(f"Job state: {job.state}")

処理速度

手元で試してみると、処理件数に応じて以下のような結果になりました。

データ数 処理時間
5 3分
10,000 5分
1,000,000 3時間20分

結果を見ると、数件の処理には不向きなのがわかります。ですが、100万件程度の処理は数時間で終わってしまいます。APIを用いてテキスト生成する方法も試してみましたが、数時間で終わることはなかったのでBatch Predictionは圧倒的に速いです。(APIの方も早くする方法はいくつかありますが、レート制限が存在したりするので Batch Prediction と同程度に速くするのは難易度高いと思っています。)

まとめ

Vertex AIのBatch Predictionは、大量のデータに対してGeminiモデルの能力を活用するための効率的かつ強力な手段です。大規模なデータを扱ってLLMアプリケーションの構築を考えている方はこちらも検討してみるのも良いかもしれないです。

Discussion