このチュートリアルでは、vLLM フレームワークを使用して gpt-oss-120b 言語モデルをデプロイしてサービングする方法について説明します。このモデルを Google Kubernetes Engine(GKE)Autopilot クラスタにデプロイし、8 個の B200 GPU を搭載した単一の A4 仮想マシン(VM)を使用します。
このチュートリアルは、Kubernetes コンテナ オーケストレーション機能を使用して推論ワークロードを処理することに関心のある ML エンジニア、プラットフォーム管理者、オペレーター、データと AI のスペシャリストを対象としています。
目標
- Hugging Face を使用して
gpt-oss-120bにアクセスします。 - 環境を準備します。
- Autopilot モードで GKE クラスタを作成する。
- Hugging Face の認証情報用の Kubernetes Secret を作成します。
- Cloud Storage バケットを作成する。
- モデルを Cloud Storage バケットにダウンロードします。
- vLLM コンテナを GKE クラスタにデプロイする。
- curl を使用して gpt-oss 言語モデルを操作します。
- クリーンアップする。
費用
このチュートリアルでは、以下を含む、 Google Cloudの課金対象となるコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
-
Google Cloud CLI をインストールします。
-
フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。
詳細については、連携 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: ユーザー アカウント。例については、 IAM ポリシーで Workforce プール ユーザーを表すをご覧ください。ROLE: ユーザー アカウントに付与する IAM ロール。
- Hugging Face アカウントにログインするか、アカウントを作成します。
Hugging Face を使用して gpt-oss にアクセスする
Hugging Face を使用して gpt-oss にアクセスする手順は次のとおりです。
- Hugging Face にログインして、gpt-oss モデルを確認します。
- Hugging Face
readアクセス トークンを作成します。 read accessトークンの値をコピーして保存します。これは、このチュートリアルの後半で使用します。
環境を準備する
環境を準備するには、デフォルトの環境変数を設定します。
次のように置き換えます。
YOUR_PROJECT_ID: GKE クラスタを作成する Google Cloud プロジェクトの ID。YOUR_RESERVATION_NAME: GKE クラスタの作成に使用する予約の URL。予約が存在するプロジェクトに基づいて、次のいずれかの値を指定します。予約がプロジェクトに存在する場合:
RESERVATION_NAME予約が別のプロジェクトにあり、プロジェクトで予約を使用できる場合:
projects/RESERVATION_PROJECT_ID/reservations/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 バケットを使用する場合は、次のことを確認してください。
- Cloud Storage バケットが GKE クラスタと同じリージョンにある。
- サービス アカウントには、バケットに対する必要な
write権限があります。
モデルを新しい Cloud Storage バケットに保存するには、次の手順を行います。
次のコマンドを実行してバケットを作成します。
Cloud Storage バケットに対する
write権限をデフォルトのサービス アカウントに付与します。
モデルを Cloud Storage バケットにダウンロードする
モデルを Cloud Storage バケットにダウンロードするには、次の操作を行います。
gpt-download-job.yamlファイルを作成します。ダウンロード ジョブを初期化するには、
gpt-download-job.yamlマニフェストを適用します。ジョブリソースは、Hugging Face から Cloud Storage バケットに
gpt-oss-120bモデルの重みをダウンロードします。ダウンロードには約 30 分かかります。ダウンロードが完了したら、次のセクションに進んでモデルのデプロイを開始します。完了ステータスを確認するには、次のコマンドを実行します。
--timeoutフラグは、コマンドがタイムアウトする前にジョブをモニタリングする時間を指定します。ジョブを削除するには、次のコマンドを実行します。
vLLM コンテナを GKE クラスタにデプロイする
モデルを Cloud Storage バケットにダウンロードしたら、vLLM コンテナを GKE クラスタにデプロイします。
選択した vLLM デプロイを含む
vllm-gpt-oss-120b.yamlファイルを作成します。vllm-gpt-oss-120b.yamlファイルは GKE クラスタに適用します。完了ステータスを確認するには、次のコマンドを実行します。
--timeoutフラグを使用すると、コマンドは指定された期間、デプロイをモニタリングできます。
curl を使用して gpt-oss モデルを操作する
デプロイした gpt-oss モデルを確認する手順は次のとおりです。
gpt-ossモデルへのポート転送を設定します。新しいターミナル ウィンドウを開きます。その後、
curlを使用してモデルとチャットできます。表示される出力は次のようになります。
{ "id": "chatcmpl-2235c39759c040daae23ce2addc40c0a", "object": "chat.completion", "created": 1756831629, "model": "openai/gpt-oss-120b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A sleek vessel gliding on water, its cloth sails billowing like captured wind.", "refusal": null, "annotations": null, "audio": null, "function_call": null, "tool_calls": [], "reasoning_content": "User asks: \"Describe a sailboat in one short sentence?\" We need to produce a short sentence description. Should comply with policy. It's fine. Provide a short sentence." }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "service_tier": null, "system_fingerprint": null, "usage": { "prompt_tokens": 80, "total_tokens": 142, "completion_tokens": 62, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }
モデルのパフォーマンスをモニタリングする
モデルのパフォーマンスをモニタリングするには、Cloud Monitoring で vLLM ダッシュボードの統合を使用します。このダッシュボードでは、トークンのスループット、ネットワーク レイテンシ、エラー率など、モデルの重要なパフォーマンス指標を確認できます。詳細については、Monitoring のドキュメントの vLLM をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
リソースの削除
チュートリアルが完了したら、不要になったリソースを削除します。
vllm-gpt-oss-120b.yamlファイルで定義されたデプロイとサービス、および Kubernetes シークレットを GKE クラスタから削除するには、次のコマンドを実行します。Cloud Storage バケットを削除するには、次のコマンドを実行します。
GKE クラスタを削除する手順は次のとおりです。
プロジェクトの削除
Google Cloud プロジェクトを削除する:
gcloud projects delete PROJECT_ID