Vertex AI Training と Vertex AI Prediction を改めて振り返る
Vertex AI Training / Prediction を改めて振り返る
Google Cloud Japan Advent Calendar 2024 の 12 日目です。
今年も生成 AI という言葉を耳にタコができるぐらい聞き、口から火が出るぐらい話し続けました。
ほとんどの検証が Vertex AI Studio や API コールだけで完結することが多く、生成 AI 以前からあった Vertex AI の機能にふれる機会が減ってしまいました。
しかし!
その間にも着実に進化を遂げた(遂げているはず)の Vertex AI の機能を敢えて振り返ってみようと思います。
軽量モデルである Gemma などをトレーニングする機会もあるだろうということで、Vertex AI Training と Vertex AI Prediction を中心に話を進めます。
はじめに
Vertex AI Training、Vertex AI Prediction とはどういったプロダクトか、ご存知ない方向けに簡単な説明から入りたいと思います。
Vertex AI and Cloud ML products における位置づけの中では、赤枠で囲った部分のプロダクトになります。
(余談ですが、最近 AutoML は “Automatic training” として Vertex AI Training と別のジャンルとして扱われているようです)
(出典:https://cloud.google.com/vertex-ai/docs)
それぞれ簡単に説明を付け加えると
- Vertex AI Training:Pytorch、Tensorflow などの各種 ML Framework のトレーニングアプリの実行基盤
- Vertex AI Prediction:トレーニング済みの ML モデルの推論を実行するための基盤
となります。
いずれも Managed Service のためインフラの管理が不要といった恩恵を得ることが出来ます。
年末も近いというのにこってりした Custom Training のコードを記載するのも申し訳ないので(単なる準備、トレーニング時間の考慮漏れ )、最近でてきた Cloud Console から Open 系モデルの Training や Tuning を行う機能を試してみようと思います [release notes]。
こちらの機能ですが執筆時点(2024/12/06)では、リリースノートにこそ記載がありますが、どういう動きになるのか分からないので実際に動かしてみようという流れです。
Vertex AI Training
まずは Model Garden の画面からオープンモデルである Gemma 2 のモデルを選択します。
するとこのような画面になります。
「DEPLOY」と「FINE-TUNE」というボタンがありますが、まずは Vertex AI Training を動かしてみたいので「FINE-TUNE」を押してみます。
すると、このような画面に切り替わります。
「Output directory」を指定すればトレーニングが動きそうな予感がします。
最近の Vertex AI Training は GCE の Reservation や SPOT VM をワーカーとして利用できるのですが [release notes]、執筆時点(2024/12/06)ではこの画面からは利用出来ないようです。
気を取り直して「START TUNING」のボタンを押してみます。
(TUNING 完了後に Deploy まで行うオプションもありますが、今回は選択していません)
すると、このような画面に切り替わります。
促されるままに「OPEN TUNING JOB」を押してみましょう。
するとこちらの画面になります。
こちらは Vertex AI Pipelines の画面になっており、Google Cloud が用意したパイプライン定義に従ってトレーニングジョブが進行するということが読み取れます。
Vertex AI Pipelines のパイプライン定義を自分で書かなくても良いので楽が出来て嬉しいですね。
Vertex AI Pipelines って何?という方向けに少し補足すると Vertex AI Pipelines 自体は ML ワークフローをパイプラインとしてオーケストレートすることで、ML システムの自動化、モニタリングなどができる kubeflow のマネージド環境を提供するプロダクトです。
実際のパイプラインの中身がどうなってるのかしてみましょう。
すると次のような画面になります。
TensorBoard を準備 → チューニング → モデル登録(→ モデルデプロイ)と進んで行くようです。
実は下の方が見切れてしまってますが、最後はメール送信をしてくれるタスクが設定されています。
それでは、トレーニングが完了するまで 3 分間クッキングの音楽を想像してお待ち下さい。
。。。実際はトレーニングは 3 分では終わりませんが、実際のタスクは Vertex AI Training の Custom Training として実行されております。
少しトレーニングが進んでから確認した実際の画面はこちらのような画面になっています。
赤枠のところがトレーニングのジョブになっています。
詳細画面に遷移してみるとこのような画面になっています。
「OPEN TENSORBOARD」なるボタンがあるので、きっとパイプラインの冒頭で設定した TensorBoard が見れるのだろうと期待して押してみたいと思います。
ポチッとな。
左上をみると Loss がへっており、確かにトレーニングが進んでいたことが分かります。
もう少しパイプラインが進行すると、「Upload model」を行ってくれます。
それがこちらの画面の状況です。
モデルはどこにアップロードされたのか?
その疑問を解消するためにアマゾンの奥地に。。。ではなく、Vertex AI Model Registry を参照してみます。
こちらの画面になります。
赤枠で囲ったのが、今回のチューニングで登録されたモデルになります。
詳細画面を見てみましょう。
どうも推論時には vLLM で起動するような雰囲気が見て取れます(「vllm.entrypoints.api_server」の部分)。
そしてこの方法でチューニングされたモデルはどうも「EXPORT」が出来ない状態になってるようです(=持ち出しが出来ない)。
いかがだったでしょうか?
コンソールでポチッとしただけで、Vertex AI の各種サービスが連携しながらチューニングが完了するのがご覧いただけたかと思います。
因みに余談ですが、今回は Console からのチューニングで Gemma 2 を扱いましたが同機能では以下のモデルがサポートされています。
こういったパイプラインを提供しているモデルは他にも下図のようなものがありますので、ちょっと試してみたい!という場合には是非ご活用ください。
Vertex AI Prediction
今回は Vertex AI Training の時と同様に、まずは Model Garden の画面から Gemma 2 のモデルを選択し、「DEPLOY」ボタンを押すところから始まります。
すると、画面はこのようになります。
なにやら Training のときと同じくボタン押下で Deploy が始まりそうな雰囲気を感じます。
しかし、今回は何やら設定項目が多そうなので、少し眺めてみたいと思います。
まずは、こちらから。
「Deployment Settings」で「Advanced」を選択すると、「Deployment Policy」を選択できるようになります。
これは少し前に Vertex AI Training のときに触れた GCE の Reservation が使える機能 [release notes] が反映された結果になります。
他の項目ももう少しだけ見てみましょう。
それがこちらの項目です。
こちらの設定項目では SPOT VM が選択できることが示唆されております。
最近のリリースで A2、A3 インスタンスの Spot VM が利用できるようになったので [release notes] 、その結果が反映された形です。
(Vertex AI Training のほうも同じように画面から選択できるようになると素敵なのですが。。。)
設定項目もある程度みたので、勢いで「DEPLOY」ボタンを押してみます。
ポチッとな。
終わったら通知するよ!とのことなので、しばらく待ってみようと思います。
Deploy が終わると Vertex AI Prediction の画面にデプロイ結果が反映されます。
詳細画面をみてみましょう。
こちらです。
確かにエンドポイントにモデルがデプロイされていることが分かります。
モデルの詳細をみてみると。
何やら下の方にテストでリクエストが送れそうです。
試してみましょう。
JSON request には、今回はこちらを入れてみました。
{
"instances": [
{
"prompt": "What is a car?",
"max_tokens": 50,
"temperature": 1.0,
"top_p": 1.0,
"top_k": 1,
"raw_response": false
}
]
}
すると。。。
やりました!!!
無事にレスポンスを受け取ることができました。
コンソール画面からポチポチするだけで、推論のエンドポイントが利用できる状態になるので便利ですね。
ただし!ここで油断してはいけない。
エンドポイントにモデルがデプロイされていると GPU をつかっているため高額な課金が発生してしまいます。
利用しない場合は確実にモデルをアンデプロイすることを強くお勧めします。
まとめ
いかがだったでしょうか?
振り返ると。。。
- Cloud Console から Gemma 2 のチューニング、デプロイを行ってみました。
- 各種 Vertex AI の機能が連携しながら、楽にチューニングやデプロイを完遂することができました。
- 最後にモデルをアンデプロイするのは大事
とても簡単にチューニング、デプロイができますので、年末年始の空いた時間に是非体験していただければと思います。
Discussion