このチュートリアルでは、vLLM フレームワークを使用して DeepSeek-V3.2-Speciale 言語モデルをデプロイしてサービングする方法について説明します。このモデルを Google Kubernetes Engine(GKE)Enterprise エディションの Autopilot クラスタにデプロイし、8 個の B200 GPU を搭載した単一の A4 仮想マシン(VM)を使用します。
このチュートリアルでは、DeepSeek-V3.2-Speciale 言語モデルを確認し、その機能がユースケースの要件を満たしていることを確認済みであることを前提としています。
このチュートリアルは、Kubernetes コンテナ オーケストレーション機能を使用して推論ワークロードを処理することに関心のある ML エンジニア、プラットフォーム管理者、オペレーター、データと AI のスペシャリストを対象としています。
目標
Hugging Face を使用して DeepSeek-V3.2-Speciale にアクセスします。
環境を準備します。
Autopilot モードで GKE クラスタを作成する。
Hugging Face の認証情報用の Kubernetes Secret を作成します。
Cloud Storage バケットを作成する。
モデルを Cloud Storage バケットにダウンロードします。
vLLM コンテナを GKE クラスタにデプロイする。
curl を使用して DeepSeek-V3.2-Speciale を操作します。
クリーンアップする。
費用
このチュートリアルでは、以下を含む、 Google Cloudの課金対象となるコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
必要な API が有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable container.googleapis.com
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
必要な API が有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable container.googleapis.com
-
ユーザー アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。
roles/container.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
次のように置き換えます。
PROJECT_ID: プロジェクト ID。USER_IDENTIFIER: ユーザー アカウントの識別子。例:myemail@example.comROLE: ユーザー アカウントに付与する IAM ロール。
- Hugging Face アカウントにログインするか、アカウントを作成します。
Hugging Face を使用して DeepSeek-V3.2-Speciale にアクセスする
Hugging Face を使用して DeepSeek-V3.2-Speciale モデルにアクセスする手順は次のとおりです。
- Hugging Face にログインします。
- Hugging Face
readアクセス トークンを作成します。 readアクセス トークンの値をコピーして保存します。これは、このチュートリアルの後半で使用します。
環境を準備する
環境を準備するには、デフォルトの環境変数を設定します。
次のように置き換えます。
YOUR_PROJECT_ID: GKE クラスタを作成する Google Cloud プロジェクトの ID。YOUR_RESERVATION_NAME: GKE クラスタの作成に使用する予約の名前。予約が存在するプロジェクトに基づいて、次のいずれかの値を指定します。予約がプロジェクトに存在する場合:
YOUR_RESERVATION_NAME予約が別のプロジェクトにあり、プロジェクトで予約を使用できる場合:
projects/RESERVATION_PROJECT_ID/reservations/YOUR_RESERVATION_NAME
YOUR_REGION: GKE クラスタを作成するリージョン。クラスタは、予約が存在するリージョンでのみ作成できます。YOUR_CLUSTER_NAME: 作成する GKE クラスタの名前。YOUR_GCS_BUCKET: モデルをダウンロードする Cloud Storage バケットの名前。YOUR_HF_TOKEN: 前のセクションで作成した Hugging Face アクセス トークン。YOUR_NETWORK_NAME: GKE クラスタが使用するネットワーク。次のいずれかの値を指定します。カスタム ネットワークを作成した場合は、ネットワークの名前を指定します。
それ以外の場合は、
defaultを指定します。
YOUR_SUBNETWORK_NAME: GKE クラスタが使用するサブネットワーク。次のいずれかの値を指定します。カスタム サブネットワークを作成した場合は、サブネットワークの名前を指定します。指定できるのは、予約と同じリージョンにあるサブネットワークのみです。
それ以外の場合は、
defaultを指定します。
Autopilot モードの GKE クラスタを作成する
Autopilot モードで GKE クラスタを作成するには、次のコマンドを実行します。
GKE クラスタの作成には時間がかかることがあります。 Google Cloud がクラスタの作成を完了したことを確認するには、 Google Cloud コンソールの [Kubernetes クラスタ] に移動します。
Hugging Face の認証情報用の Kubernetes Secret を作成する
Hugging Face の認証情報用の Kubernetes Secret を作成する手順は次のとおりです。
GKE クラスタと通信するように
kubectlを構成します。Hugging Face トークンを保存する Kubernetes Secret を作成します。
Cloud Storage バケットを作成する
既存の Cloud Storage バケットを使用する場合は、この手順をスキップできます。ただし、バケットがクラスタと同じリージョンにあり、サービス アカウントにバケットに対する必要な write 権限が付与されていることを確認する必要があります。
新しいバケットを使用してモデルを保存する場合は、次のコマンドを実行します。
Cloud Storage バケットに対する write 権限をデフォルトのサービス アカウントに付与します。
モデルを Cloud Storage バケットにダウンロードする
deepseek-download-job.yamlファイルを作成します。deepseek-download-job.yamlマニフェストを適用して、ダウンロード ジョブを初期化します。完了ステータスを表示するには、次のコマンドを実行します。
--timeoutフラグは、コマンドがタイムアウトする前にジョブをモニタリングする時間を指定します。ジョブリソースは、SSD ボリュームを使用して、Hugging Face から
DeepSeek-V3.2-Specialeモデルの重みを Google Cloud Storage バケットにダウンロードします。ダウンロードには 40 分ほどかかります。ダウンロードが完了したら、次のセクションに進んでモデルのデプロイを開始します。ジョブを削除するには、次のコマンドを実行します。
vLLM コンテナを GKE クラスタにデプロイする
モデルを Cloud Storage バケットにダウンロードしたら、次の手順で vLLM コンテナを GKE クラスタにデプロイします。
選択した vLLM デプロイを含む
vllm-deepseek3-2.yamlファイルを作成します。vllm-deepseek3-2.yamlファイルは GKE クラスタに適用します。完了ステータスを表示するには、次のコマンドを実行します。
--timeoutフラグを使用すると、コマンドは指定された期間、デプロイをモニタリングできます。
curl を使用して DeepSeek-V3.2-Speciale を操作する
デプロイした DeepSeek-V3.2-Speciale モデルを確認するには、次の操作を行います。
DeepSeek-V3.2-Speciale へのポート転送を設定します。
新しいターミナル ウィンドウを開きます。その後、
curlを使用してモデルとチャットできます。出力は次のようになります。
{ "id": "cmpl-be345f0499e949ed8500e533be2cfe3f", "object": "text_completion", "created": 1764803171, "model": "deepseek-ai/DeepSeek-V3.2-Speciale", "choices": [ { "index": 0, "text": "The ReAct pattern integrates reasoning (thoughts) and actions (tool calls) within an agentic loop... [TRUNCATED FOR BREVITY] ...ReAct improves transparency and reliability by explicit reasoning steps.", "logprobs": null, "finish_reason": "stop", "stop_reason": "<|im_end|>", "token_ids": null, "prompt_logprobs": null, "prompt_token_ids": null } ], "service_tier": null, "system_fingerprint": null, "usage": { "prompt_tokens": 57, "total_tokens": 317, "completion_tokens": 260, "prompt_tokens_details": null }, "kv_transfer_params": null }
モデルのパフォーマンスをモニタリングする
モデルのパフォーマンスをモニタリングするには、Cloud Monitoring で vLLM ダッシュボードの統合を使用します。このダッシュボードを使用して、トークンのスループット、リクエスト レイテンシ、エラー率などの重要なパフォーマンス指標を確認します。
Google Cloud Managed Service for Prometheus を使用してモデルから指標を収集する方法については、Monitoring のドキュメントで vLLM のオブザーバビリティ ガイダンスをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
このチュートリアルで使用したリソースについて、Cloud 請求先アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
リソースの削除
チュートリアルを完了したら、不要になったリソースを削除します。
vllm-deepseek3-2.yamlファイルで定義されたデプロイとサービス、および Kubernetes Secret を GKE クラスタから削除するには、次のコマンドを実行します。Cloud Storage バケットを削除するには、次のコマンドを実行します。
GKE クラスタを削除する手順は次のとおりです。
プロジェクトの削除
Google Cloud プロジェクトを削除する:
gcloud projects delete PROJECT_ID