Vertex AI 上の Gemma 3 の発表
Ivan Nardini
Developer Relations Engineer
Erwin Huizenga
AI engineering and evangelism manager
※この投稿は米国時間 2025 年 3 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
このたび、新しい Gemma 3 モデルが Vertex AI Model Garden で利用可能になったことをお知らせします。これにより、すぐにアクセスしてファインチューニングやデプロイを行うことができます。Vertex AI のビルド済みコンテナとデプロイツールを使用して、Gemma 3 をユースケースに迅速に適応させることができます。
この投稿では、Vertex AI で Gemma 3 をファインチューニングし、プロダクション レディなエンドポイントとしてデプロイする方法を説明します。
Vertex AI 上の Gemma 3: PEFT と vLLM のデプロイ
大規模言語モデルのチューニングとデプロイは、コンピューティング費用が高額になり、時間がかかることがあります。このたびこの問題に対処できる、パラメータ エフィシエント ファインチューニング(PEFT)と、Vertex AI Model Garden の vLLM を使用した最適化されたデプロイに対する Gemma 3 のサポート開始を発表いたします。
Gemma 3 のファインチューニングでは、フル ファインチューニングよりも大幅に少ないコンピューティング リソースでパフォーマンスの向上を実現できます。vLLM ベースのデプロイは使いやすく、高速です。vLLM の最適化された推論エンジンは、スループットを最大化し、レイテンシを最小限に抑え、Vertex AI 上の Gemma 3 アプリケーションにレスポンシブでスケーラブルなエンドポイントを確保します。
Vertex AI 上の Gemma 3 モデルをファインチューニングしてデプロイする方法を見てみましょう。
Vertex AI 上の Gemma 3 のファインチューニング
Vertex AI Model Garden では、Hugging Face の PEFT(LoRA)を使用して Gemma 3 をわずか数ステップでファインチューニングし、デプロイできます。ノートブックを実行する前に、ノートブックに記載されている最初の手順をすべて完了していることを確認してください。
Vertex AI 上の Gemma 3 をユースケースに合わせてファインチューニングするには、カスタム データセットが必要です。推奨される形式は JSONL ファイルです。これは、各行が有効な JSON 文字列になっているファイルです。timdettmers/openassistant-guanaco データセットを参考にした例をご紹介します。
JSON オブジェクトには、text というキーがあり、これは train_column と一致する必要があります。値は 1 つのトレーニング データポイント(文字列)である必要があります。データセットは Google Cloud Storage(推奨)または Hugging Face のデータセットにアップロードできます。
ニーズに最適な Gemma 3 のバリアントを選択してください。たとえば、10 億パラメータ モデルを使用するには、次のように指定します。
モデルのパラメータとジョブの引数を柔軟にカスタマイズできます。主な設定をいくつか見てみましょう。LoRA(Low-Rank Adaptation)は、トレーニング可能なパラメータの数を大幅に削減する PEFT 手法です。LoRA の動作は、次のパラメータによって制御されます。lora_rank は更新行列の次元を制御します(ランクが小さいほどパラメータが少なくなります)。lora_alpha は LoRA の更新をスケールします。lora_dropout は正則化を追加します。次の設定が、妥当な出発点となります。
大規模言語モデル(LLM)をファインチューニングする際、適合率はメモリ使用量とパフォーマンスの両方に影響する重要な考慮事項です。4 ビット量子化などの適合率の低いトレーニングでは、メモリ使用量が削減されます。ただし、8 ビットや float16 などの高適合率の場合と比較して、パフォーマンスが若干低下する可能性があります。train_precision パラメータは、トレーニング プロセスで使用する数値適合率を指定します。適切な適合率を選択するには、リソースの制限と望ましいモデルの精度のバランスを取る必要があります。
モデルのパフォーマンスを最適化するには、速度、安定性、機能に影響するトレーニング パラメータをチューニングする必要があります。必須のパラメータには、GPU ごとのバッチサイズを決定する per_device_train_batch_size があります。バッチサイズを大きくするとトレーニングが加速されますが、必要なメモリが多くなります。gradient_accumulation_steps を使用すると、小さいバッチで勾配を蓄積することで、より大きなバッチサイズをシミュレーションできます。メモリ効率の高い代替手段ですが、トレーニング時間が長くなります。learning_rate は最適化のステップサイズを決定します。学習率が高すぎると発散が生じ、低すぎると収束が遅くなる可能性があります。lr_scheduler_type は、線形減衰などによって、トレーニング全体を通して学習率を動的に調整し、収束と精度を向上させます。トレーニングの合計時間は、トレーニング ステップの合計数を指定する max_steps か、num_train_epochs のいずれかによって定義されます。両方が指定されている場合は、max_steps が優先されます。以下は、公式ノートブックに記載されているトレーニング レシピの全文です。
最後に、CustomContainerTrainingJob を作成し、実行して、ファインチューニング ジョブを開始します。
Tensorboard を使用して、ファインチューニングの進行状況をモニタリングできます。ジョブが完了したら、チューニング済みのモデルを Vertex AI Model Registry にアップロードし、推論用のエンドポイントとしてデプロイできます。次にデプロイについて詳しく見ていきましょう。
Vertex AI への Gemma 3 のデプロイ
Vertex AI に Gemma 3 をデプロイするために必要なステップは、このノートブックで説明されている 3 つのみです。
まず、Gemma 3 モデル専用のエンドポイントをプロビジョニングする必要があります。これにより、モデルをホストするためのスケーラブルなマネージド環境が提供されます。create 関数を使用してエンドポイント名(display_name)を設定し、モデル専用のリソース(dedicated_endpoint_enabled)を確保します。
次に、Vertex AI Model Registry 内に Gemma 3 モデルを登録します。Model Registry は、モデルを管理するための一元化されたハブのようなものと考えてください。(後で改善する場合に備えて)Gemma 3 モデルのさまざまなバージョンを追跡し、デプロイの中心となる場所です。
このステップでは、Gemma 3 をデプロイするためのサービング コンテナなど、いくつかの重要な構成を行います。
Vertex AI で Gemma 3 をサービングする際は、迅速かつ効率的なモデル提供のために、Vertex AI Model Garden の事前構築済みの vLLM Docker イメージを使用します。vLLM が Gemma 3 をどのようにサービングするかを設定するための vLLM レシピに含まれるものとして、--tensor-parallel-size では、追加のコンピューティング リソースが必要な場合にモデルを複数の GPU に分散させることができます。--gpu-memory-utilization は、使用する GPU メモリの量を制御します。--max-model-len は、モデルが一度に処理できるテキストの最大長を設定します。また、--enable-chunked-prefill や --enable-prefix-caching などの高度な設定を使用して、特に、長いテキストを扱う場合に、パフォーマンスを最適化することもできます。
また、Vertex AI がモデルをサービングするために必要なデプロイ構成もあります。サービング コンテナがリッスンするポート(この場合は 8080)や、予測リクエストを行うための URL パス(例: /generate)、ヘルスチェックの URL パス(例: /ping)の定義などです。これにより、Vertex AI でモデルのステータスをモニタリングできるようになります。
最後に、upload() を使用して、この構成(サービング コンテナ、モデル固有の設定、モデルの実行方法の指示)を Vertex AI Model Registry 内で管理しやすい単一のユニットにまとめます。これにより、デプロイとバージョン管理がはるかに簡単になります。
これでモデルをデプロイする準備が整いました。登録したモデルをエンドポイントにデプロイするには、以下に示すように deploy メソッドを使用します。
ここでは、デプロイのコンピューティング能力を選択します。これには、仮想マシンのタイプ(「a3-highgpu-2g」や machine_type など)、アクセラレータの種類(例: 「NVIDIA_L4」GPU、accelerator_type)、使用するアクセラレータの数(accelerator_count)などが含まれます。
モデルのデプロイには時間がかかります。デプロイのステータスは Cloud Logging でモニタリングできます。エンドポイントを実行したら、ChatCompletion API を使用してモデルを呼び出し、以下に示すようにアプリケーションに統合できます。
デプロイする Gemma モデルに応じて、ChatCompletion API を使用して、マルチモーダル入力(画像)でモデルを呼び出すことができます。詳細については、モデルカードのノートブックの「Deploy Gemma 3 4B, 12B and 27B multimodal models with vLLM on GPU」セクションをご覧ください。
次のステップ
Vertex AI Model Garden の Gemma 3 モデルカードにアクセスして、今すぐ使い始めましょう。モデルのアーキテクチャとパフォーマンスについて詳しくは、Gemma 3 のデベロッパー ガイドをご覧ください。
-Cloud AI、AI / ML DevRel エンジニア Ivan Nardini
-Google Cloud、ML 担当エンジニア Erwin Huizenga