Google Cloud Vertex AI で Meta Llama 3.1 405B をデプロイする
Meta Llama 3.1 405B は、Hugging Face の Deep Learning Containers(DLC)と Text Generation Inference(TGI)を使用して Google Cloud Vertex AI にデプロイできます。これにより、ユーザーは Meta の最大規模のオープン LLM をマネージド環境で実行でき、A3 アクセラレータ最適化マシンを活用して高性能推論を実現します。
ハードウェア要件とメモリ管理
Meta Llama 3.1 405B をデプロイするには、モデル重みの精度に応じて変わる大量の GPU VRAM が必要です。モデルチェックポイントをロードするための概算メモリ要件は以下の通りです。
| モデルサイズ | FP16 | FP8 | INT4 |
|---|---|---|---|
| 8B | 16 GB | 8 GB | 4 GB |
| 70B | 140 GB | 70 GB | 35 GB |
| 405B | 810 GB | 405 GB | 203 GB |
単一の H100 ノード(8 x 80GB GPU)では約 640GB の VRAM が提供されるため、405B モデルは FP8 のような低精度で実行するか、マルチノード構成にする必要があります。このデプロイメントでは、8 台の NVIDIA H100 80GB GPU、208 vCPU、1872 GB のメモリを備えた A3 High GPU マシンタイプが推奨されます。
Vertex AI におけるデプロイプロセス
モデルのデプロイは、Vertex AI Model Registry にモデルを登録し、次に Vertex AI エンドポイントにデプロイすることを含みます。
モデル登録
登録は google-cloud-aiplatform Python SDK を使用して実行します。このプロセスには、Meta Llama 3.1 アーキテクチャ(Llama 3 とは異なる RoPE スケーリング手法を使用)をサポートする Hugging Face TGI DLC が必要です。主な設定環境変数は以下の通りです。
MODEL_ID:meta-llama/Meta-Llama-3.1-405B-Instruct-FP8に設定します。HUGGING_FACE_HUB_TOKEN: 制限付き Meta Llama リポジトリへの読み取りアクセス用トークンです。NUM_SHARD: A3 インスタンスのすべての GPU を使用するために 8 に設定します。HF_XET_HIGH_PERFORMANCE: 約 400 GiB のモデル重みのダウンロードを高速化するため、1に設定することが推奨されます。
エンドポイントデプロイ
登録が完了すると、a3-highgpu-8g マシンタイプと 8 台の NVIDIA H100 80GB アクセラレータを使用してモデルが Vertex AI エンドポイントにデプロイされます。リソース割り当て、重みのダウンロード(約 10 分)、TGI へのロード(約 2 分)を含め、全体のデプロイプロセスは通常 25〜30 分かかります。
オンライン予測の実行
Vertex AI は TGI DLC を介してテキスト生成を提供する /predict ルートを公開しています。/generate エンドポイントが使用されるため、入力はエンドポイントに送信する前に適切なチャットテンプレートでフォーマットする必要があります。
入力のフォーマット
ユーザーは transformers ライブラリの apply_chat_template メソッドを使用して、Meta Llama 3.1 用に会話が正しくフォーマットされていることを確認すべきです。典型的なフォーマット済みプロンプトには、<|begin_of_text|>、<|start_header_id|>、<|eot_id|> などの特定トークンが含まれます。
予測方法
予測は主に以下の 3 つの方法で実行できます。
- 同一セッションの Python: デプロイ直後に
deployed_model.predictメソッドを使用します。 - 別セッションの Python: リソース名 (
projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}) を使用してaiplatform.Endpointをインスタンス化します。 - Vertex AI UI: フォーマット済み
inputsと生成パラメータ(例:max_new_tokens、temperature、top_p)を含む JSON ペイロードを提供してオンライン予測 UI を使用します。
リソース管理
不要なコストを避けるため、使用後はリソースをクリーンアップすべきです。具体的には、deployed_model.undeploy_all() で全エンドポイントからモデルのデプロイを解除し、deployed_model.delete() でエンドポイントを削除し、最後に model.delete() でレジストリからモデルを削除します。