本教學課程說明如何使用 vLLM 服務架構,部署及提供 Gemma 3 27B 大型語言模型 (LLM)。您可以在 Google Kubernetes Engine (GKE) 的單一 A4 虛擬機器 (VM) 執行個體上部署 Gemma 3。
本教學課程的適用對象為機器學習 (ML) 工程師、平台管理員和操作員,以及有興趣使用 Kubernetes 容器自動化調度管理功能處理推論工作負載的資料和 AI 專家。
目標
使用 Hugging Face 存取 Gemma 3。
準備環境。
在 Autopilot 模式中建立 GKE 叢集。
建立 Hugging Face 憑證的 Kubernetes 密鑰。
將 vLLM 容器部署至 GKE 叢集。
使用 curl 與 Gemma 3 互動。
清除所用資源。
費用
本教學課程使用 Google Cloud 的計費元件包括:
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
-
建立專案:如要建立專案,您需要具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 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,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable container.googleapis.com
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
-
建立專案:如要建立專案,您需要具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 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,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable container.googleapis.com
-
將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令:
roles/container.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
更改下列內容:
PROJECT_ID:專案 ID。USER_IDENTIFIER:使用者帳戶的 ID。 例如:myemail@example.com。ROLE:授予使用者帳戶的 IAM 角色。
- 登入或建立 Hugging Face 帳戶。
使用 Hugging Face 存取 Gemma 3
如要使用 Hugging Face 存取 Gemma 3,請按照下列步驟操作:
- 登入 Hugging Face
- 建立 Hugging Face
read存取權杖。 依序點選「你的個人資料」>「設定」>「存取權杖」>「+ 建立新權杖」 - 複製並儲存
read access權杖值。您會在稍後的教學課程中用到這項資訊。
準備環境
如要準備環境,請設定預設環境變數:
gcloud config set project PROJECT_ID
gcloud config set billing/quota_project PROJECT_ID
export PROJECT_ID=$(gcloud config get project)
export RESERVATION_URL=RESERVATION_URL
export REGION=REGION
export CLUSTER_NAME=CLUSTER_NAME
export HUGGING_FACE_TOKEN=HUGGING_FACE_TOKEN
export NETWORK=NETWORK_NAME
export SUBNETWORK=SUBNETWORK_NAME
更改下列內容:
PROJECT_ID:您要在其中建立 GKE 叢集的 Google Cloud 專案 ID。RESERVATION_URL:您要用來建立 GKE 叢集的預訂網址。根據預留項目所在的專案,指定下列其中一個值:專案中已有預留項目:
RESERVATION_NAME預留項目位於其他專案,且您的專案可以使用該預留項目:
projects/RESERVATION_PROJECT_ID/reservations/RESERVATION_NAME
REGION:要建立 GKE 叢集的區域。您只能在預留項目所在的區域建立叢集。CLUSTER_NAME:要建立的 GKE 叢集名稱。HUGGING_FACE_TOKEN:您在上一節中建立的 Hugging Face 存取權杖。NETWORK_NAME:GKE 叢集使用的網路。請指定下列其中一個值:如果您建立的是自訂網路,請指定網路名稱。
否則,請指定
default。
SUBNETWORK_NAME:GKE 叢集使用的子網路。請指定下列其中一個值:如果您建立的是自訂子網路,請指定子網路名稱。您只能指定與預留項目位於相同區域的子網路。
否則,請指定
default。
在 Autopilot 模式中建立 GKE 叢集
如要在 Autopilot 模式中建立 GKE 叢集,請執行下列指令:
gcloud container clusters create-auto $CLUSTER_NAME \
--project=$PROJECT_ID \
--region=$REGION \
--release-channel=rapid \
--network=$NETWORK \
--subnetwork=$SUBNETWORK
建立 GKE 叢集可能需要一段時間才能完成。如要確認 Google Cloud 已完成叢集建立作業,請前往 Google Cloud 控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面。
建立 Hugging Face 憑證的 Kubernetes 密鑰
如要為 Hugging Face 憑證建立 Kubernetes Secret,請按照下列步驟操作:
設定
kubectl,與 GKE 叢集通訊:gcloud container clusters get-credentials $CLUSTER_NAME \ --location=$REGION建立 Kubernetes 密鑰,儲存 Hugging Face 權杖:
kubectl create secret generic hf-secret \ --from-literal=hf_api_token=${HUGGING_FACE_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
將 vLLM 容器部署至 GKE 叢集
如要部署 vLLM 容器,使用 Kubernetes Deployments 提供 Gemma 3 27B 模型,請按照下列步驟操作:
建立
vllm-3-27b-it.yaml檔案,並選擇 vLLM 部署作業:apiVersion: apps/v1 kind: Deployment metadata: name: vllm-gemma-deployment spec: replicas: 1 selector: matchLabels: app: gemma-server template: metadata: labels: app: gemma-server ai.gke.io/model: gemma-3-27b-it ai.gke.io/inference-server: vllm examples.ai.gke.io/source: user-guide spec: containers: - name: inference-server image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250801_0916_RC01 resources: requests: cpu: "10" memory: "128Gi" ephemeral-storage: "120Gi" nvidia.com/gpu: "8" limits: cpu: "10" memory: "128Gi" ephemeral-storage: "120Gi" nvidia.com/gpu: "8" command: ["python3", "-m", "vllm.entrypoints.openai.api_server"] args: - --model=$(MODEL_ID) - --tensor-parallel-size=8 - --host=0.0.0.0 - --port=8000 - --max-model-len=4096 - --max-num-seqs=4 env: - name: MODEL_ID value: google/gemma-3-27b-it - name: HUGGING_FACE_HUB_TOKEN valueFrom: secretKeyRef: name: hf-secret key: hf_api_token volumeMounts: - mountPath: /dev/shm name: dshm livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 600 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 600 periodSeconds: 5 volumes: - name: dshm emptyDir: medium: Memory nodeSelector: cloud.google.com/gke-accelerator: nvidia-b200 cloud.google.com/reservation-name: RESERVATION_URL cloud.google.com/reservation-affinity: "specific" cloud.google.com/gke-gpu-driver-version: latest --- apiVersion: v1 kind: Service metadata: name: llm-service spec: selector: app: gemma-server type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 8000將
vllm-3-27b-it.yaml檔案套用至 GKE 叢集:kubectl apply -f vllm-3-27b-it.yaml在部署過程中,容器必須從 Hugging Face 下載 Gemma 3。因此,容器部署作業最多可能需要 30 分鐘才能完成。
等待部署作業完成:
kubectl wait \ --for=condition=Available \ --timeout=1800s deployment/vllm-gemma-deployment
使用 curl 與 Gemma 3 互動
如要驗證已部署的 Gemma 3 27B 指令微調模型,請按照下列步驟操作:
設定 Gemma 3 的通訊埠轉送:
kubectl port-forward service/llm-service 8000:8000開啟新的終端機視窗。然後,您可以使用
curl與模型對話:curl http://127.0.0.1:8000/v1/chat/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "google/gemma-3-27b-it", "messages": [ { "role": "user", "content": "Why is the sky blue?" } ] }'輸出結果會與下列內容相似:
{ "id": "chatcmpl-e4a2e624bea849d9b09f838a571c4d9e", "object": "chat.completion", "created": 1741763029, "model": "google/gemma-3-27b-it", "choices": [ { "index": 0, "message": { "role": "assistant", "reasoning_content": null, "content": "Okay, let's break down why the sky appears blue! It's a fascinating phenomenon rooted in physics, specifically something called **Rayleigh scattering**. Here's the explanation: ...", "tool_calls": [] }, "logprobs": null, "finish_reason": "stop", "stop_reason": 106 } ], "usage": { "prompt_tokens": 15, "total_tokens": 668, "completion_tokens": 653, "prompt_tokens_details": null }, "prompt_logprobs": null }
如要觀察模型效能,可以使用 Cloud Monitoring 中的 vLLM 資訊主頁整合功能。這個資訊主頁可協助您查看模型的關鍵成效指標,例如權杖處理量、網路延遲和錯誤率。詳情請參閱 Monitoring 說明文件中的 vLLM。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除專案
刪除 Google Cloud 專案:
gcloud projects delete PROJECT_ID
刪除 GKE 叢集
如要刪除 GKE 叢集,請執行下列指令:
gcloud container clusters delete $CLUSTER_NAME \
--region=$REGION
刪除 yaml 檔案和 Kubernetes 密鑰
如要從 GKE 叢集刪除 vllm-3-27b-it.yaml 檔案和 Kubernetes 密鑰,請執行下列指令:
kubectl delete -f vllm-3-27b-it.yaml
kubectl delete secret hf-secret