透過 vLLM 在 GKE 上使用 GPU 提供 Llama 模型

本教學課程說明如何使用 vLLM 服務架構,在 Google Kubernetes Engine (GKE) 上透過 GPU 部署及提供 Llama 4 模型大型語言模型 (LLM) 服務。這項服務可做為基礎,協助您瞭解及探索如何在代管 Kubernetes 環境中,實際部署 LLM 以進行推論。您將預先建構的容器部署至 GKE,該容器會執行 vLLM。您也會設定 GKE,從 Hugging Face 載入 Llama。

本教學課程的適用對象為機器學習 (ML) 工程師、平台管理員和操作員,以及有興趣使用 Kubernetes 容器自動化調度管理功能,在 H200、H100、A100 和 L4 GPU 硬體上提供 AI/ML 工作負載服務的資料和 AI 專家。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud

如果您需要整合式代管 AI 平台,以經濟實惠的方式快速建構及提供機器學習模型,建議您試用 Vertex AI 部署解決方案。

閱讀本頁面之前,請先熟悉下列項目:

背景

本節說明本指南中使用的重要技術。

Llama

Llama 是 Meta 的大型語言模型,適用於各種自然語言處理工作,包括生成文字、翻譯和回答問題。GKE 提供所需的基礎架構,支援這類模型的分散式訓練和服務需求。詳情請參閱 Llama 說明文件

GPU

GPU 可加速處理節點上執行的特定工作負載,例如機器學習和資料處理。GKE 提供各種機器類型選項,可供節點設定使用,包括搭載 NVIDIA H200、H100、L4 和 A100 GPU 的機器類型。

vLLM

vLLM 是一種經過高度最佳化的開放原始碼 LLM 服務架構,可提升 GPU 的服務處理量,並提供下列功能:

  • 使用 PagedAttention 實作最佳化轉換器
  • 持續批次處理,提升整體放送輸送量
  • 在多個 GPU 上進行張量平行處理和分散式服務

詳情請參閱 vLLM 說明文件

目標

  1. 在 Autopilot 或標準模式中,使用 GKE 叢集準備環境。
  2. 將 vLLM 容器部署至叢集。
  3. 透過 curl 和網頁聊天介面,使用 vLLM 提供 Llama 4 模型。

事前準備

  • 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Verify that billing is enabled for your Google Cloud project.

  • Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Verify that billing is enabled for your Google Cloud project.

  • Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  • 確認您在專案中具備下列角色: roles/container.admin、roles/iam.serviceAccountAdmin

    檢查角色

    1. 前往 Google Cloud 控制台的「IAM」頁面。

      前往「IAM」頁面
    2. 選取專案。
    3. 在「主體」欄中,找出所有識別您或您所屬群組的資料列。如要瞭解自己所屬的群組,請與管理員聯絡。

    4. 針對指定或包含您的所有列,請檢查「角色」欄,確認角色清單是否包含必要角色。

    授予角色

    1. 前往 Google Cloud 控制台的「IAM」頁面。

      前往「IAM」頁面
    2. 選取專案。
    3. 按一下「Grant access」(授予存取權)
    4. 在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是指 Google 帳戶的電子郵件地址。

    5. 按一下「選取角色」,然後搜尋角色。
    6. 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
    7. 按一下「Save」(儲存)

取得模型存取權

如要透過 Hugging Face 存取模型,您需要 Hugging Face 權杖

如要產生新權杖 (如果沒有),請按照下列步驟操作:

  1. 依序點選「Your Profile」(你的個人資料) >「Settings」(設定) >「Access Tokens」(存取權杖)
  2. 選取「New Token」
  3. 指定想要的名稱和角色,角色至少需具有 Read 權限。
  4. 選取「產生憑證」
  5. 將產生的權杖複製到剪貼簿。

準備環境

在本教學課程中,您將使用 Cloud Shell 管理Google Cloud上託管的資源。Cloud Shell 已預先安裝本教學課程所需的軟體,包括 kubectlgcloud CLI

如要使用 Cloud Shell 設定環境,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,按一下Cloud Shell 啟用圖示Google Cloud 控制台中的「啟用 Cloud Shell」,啟動 Cloud Shell 工作階段。系統會在 Google Cloud 控制台的底部窗格啟動工作階段。

  2. 設定預設環境變數:

    gcloud config set project PROJECT_ID
    gcloud config set billing/quota_project PROJECT_ID
    export PROJECT_ID=$(gcloud config get project)
    export REGION=REGION
    export CLUSTER_NAME=CLUSTER_NAME
    export HF_TOKEN=HF_TOKEN
    

    替換下列值:

    • PROJECT_ID:您的 Google Cloud 專案 ID
    • REGION:支援您要使用的加速器類型,例如 L4 GPU 的 us-central1
    • CLUSTER_NAME:叢集名稱。
    • HF_TOKEN:先前產生的 Hugging Face 權杖。

建立及設定 Google Cloud 資源

請按照下列操作說明建立必要資源。

建立 GKE 叢集和節點集區

您可以在 GKE Autopilot 或 Standard 叢集的 GPU 上提供 Llama 4 模型。建議您使用 Autopilot 叢集,享有全代管 Kubernetes 體驗。如要為工作負載選擇最合適的 GKE 作業模式,請參閱「選擇 GKE 作業模式」。

Autopilot

在 Cloud Shell 中執行下列指令:

gcloud container clusters create-auto CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=CONTROL_PLANE_LOCATION \
    --release-channel=rapid

替換下列值:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。提供支援您要使用加速器類型的區域,例如 L4 GPU 的 us-central1
  • CLUSTER_NAME:叢集名稱。

GKE 會根據部署的工作負載要求,建立含有 CPU 和 GPU 節點的 Autopilot 叢集。

標準

  1. 在 Cloud Shell 中執行下列指令,建立 Standard 叢集:

    gcloud container clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=CONTROL_PLANE_LOCATION \
        --workload-pool=PROJECT_ID.svc.id.goog \
        --release-channel=rapid \
        --num-nodes=1
    

    替換下列值:

    • PROJECT_ID:您的 Google Cloud 專案 ID
    • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。提供支援您要使用加速器類型的區域,例如 H100 GPU 的 us-central1
    • CLUSTER_NAME:叢集名稱。

    建立叢集可能需要幾分鐘的時間。

  2. 如要為叢集建立節點集區,並設定適當的磁碟大小,請執行下列指令:

    gcloud container node-pools create gpupool \
        --accelerator type=nvidia-h100-80gb,count=1,gpu-driver-version=latest \
        --project=PROJECT_ID \
        --location=REGION \
        --node-locations=REGION-a \
        --cluster=CLUSTER_NAME \
        --machine-type=a3-highgpu-8g \
        --disk-type=pd-ssd \
        --num-nodes=1 \
        --disk-size=256
    

    GKE 會建立一個節點集區,內含八個 H100 80GB GPU。

建立 Hugging Face 憑證的 Kubernetes Secret

在 Cloud Shell 中執行下列操作:

  1. 設定 kubectl,以便與叢集通訊:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=REGION
    

    替換下列值:

    • REGION:支援您要使用的加速器類型,例如 L4 GPU 的 us-central1
    • CLUSTER_NAME:叢集名稱。
  2. 建立包含 Hugging Face 權杖的 Kubernetes Secret:

    kubectl create secret generic hf-secret \
        --from-literal=hf_api_token=${HF_TOKEN} \
        --dry-run=client -o yaml | kubectl apply -f -
    

    HF_TOKEN 換成您稍早產生的 Hugging Face 權杖。

部署 vLLM

在本節中,您會部署 vLLM 容器,提供要使用的 Llama 4 模型:

  • Llama 4 Maverick 17B-128E
  • Llama 4 Scout 17B-16E

本教學課程會使用 Kubernetes Deployment 部署模型。Deployment 是 Kubernetes API 物件,可讓您執行多個 Pod 副本,並將這些副本分散到叢集中的節點。

Llama 4 Maverick 17B-128e

如要部署 Llama 4 Maverick 17B-128E 模型,請按照下列操作說明進行:

  1. 建立下列 vllm-llama4-maverick-17b-128e.yaml 資訊清單:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: llama-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: llama-server
      template:
        metadata:
          labels:
            app: llama-server
            ai.gke.io/model: Llama-4-Maverick-17B-128E
            ai.gke.io/inference-server: vllm
        spec:
          containers:
          - name: inference-server
            image: docker.io/vllm/vllm-openai:v0.10.0
            resources:
              requests:
                cpu: 157
                memory: 2067Gi
                ephemeral-storage: 850Gi
                nvidia.com/gpu : 8
              limits:
                cpu: 157
                memory: 2067Gi
                ephemeral-storage: 850Gi
                nvidia.com/gpu : 8
            command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
            args:
            - --host=0.0.0.0
            - --port=7080
            - --swap-space=16
            - --max-model-len=131072
            - --gpu-memory-utilization=0.95
            - --disable-log-stats
            - --dtype=auto
            - --kv-cache-dtype=auto
            - --max-num-seqs=64
            - --model=meta-llama/Llama-4-Maverick-17B-128E
            - --tensor-parallel-size=8
            env:
            - name: LD_LIBRARY_PATH
              value: ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64
            - name: MODEL_ID
              value: 'meta-llama/Llama-4-Maverick-17B-128E'
            - name: HUGGING_FACE_HUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: hf-secret
                  key: hf_api_token
            volumeMounts:
            - mountPath: /dev/shm
              name: dshm
          volumes:
          - name: dshm
            emptyDir:
              medium: Memory
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-h200-141gb
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: llama-service
    spec:
      selector:
        app: llama-server
      type: ClusterIP
      ports:
      - protocol: TCP
        port: 8000
        targetPort: 7080
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: hf-secret
    type: Opaque
    stringData:
      hf_api_token: {{HF_TOKEN}}
  2. 套用資訊清單:

    kubectl apply -f vllm-llama4-maverick-17b-128e.yaml
    

    在我們的範例中,我們使用 --max-model-len=131072 vLLM 選項,將內容視窗限制為 128 KB。

Llama 4 Maverick 17B-128e-it

如要部署 Llama 4 Maverick 17B-128e 指令微調模型,請按照下列操作說明進行:

  1. 建立下列 vllm-llama4-maverick-17b-128e-instruct.yaml 資訊清單:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: llama-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: llama-server
      template:
        metadata:
          labels:
            app: llama-server
            ai.gke.io/model: Llama-4-Maverick-17B-128E-Instruct
            ai.gke.io/inference-server: vllm
        spec:
          containers:
          - name: inference-server
            image: docker.io/vllm/vllm-openai:v0.10.0
            resources:
              requests:
                cpu: 157
                memory: 2067Gi
                ephemeral-storage: 850Gi
                nvidia.com/gpu : 8
              limits:
                cpu: 157
                memory: 2067Gi
                ephemeral-storage: 850Gi
                nvidia.com/gpu : 8
            command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
            args:
            - --host=0.0.0.0
            - --port=7080
            - --swap-space=16
            - --max-model-len=131072
            - --gpu-memory-utilization=0.95
            - --disable-log-stats
            - --dtype=auto
            - --kv-cache-dtype=auto
            - --max-num-seqs=64
            - --model=meta-llama/Llama-4-Maverick-17B-128E-Instruct
            - --tensor-parallel-size=8
            env:
            - name: LD_LIBRARY_PATH
              value: ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64
            - name: MODEL_ID
              value: 'meta-llama/Llama-4-Maverick-17B-128E-Instruct'
            - name: HUGGING_FACE_HUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: hf-secret
                  key: hf_api_token
            volumeMounts:
            - mountPath: /dev/shm
              name: dshm
          volumes:
          - name: dshm
            emptyDir:
              medium: Memory
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-h200-141gb
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: llama-service
    spec:
      selector:
        app: llama-server
      type: ClusterIP
      ports:
      - protocol: TCP
        port: 8000
        targetPort: 7080
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: hf-secret
    type: Opaque
    stringData:
      hf_api_token: {{HF_TOKEN}}
  2. 套用資訊清單:

    kubectl apply -f vllm-llama4-maverick-17b-128e-instruct.yaml
    

    在我們的範例中,我們使用 --max-model-len=131072 vLLM 選項,將內容視窗限制為 128 KB。

Llama 4 Maverick 17B-128e-it-fp8

如要部署 Llama 4 Maverick 17B-128e-Instruct-FP8 模型,請按照下列操作說明進行:

  1. 建立下列 vllm-llama4-maverick-17b-128e-instruct-fp8.yaml 資訊清單:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: llama-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: llama-server
      template:
        metadata:
          labels:
            app: llama-server
            ai.gke.io/model: Llama-4-Maverick-17B-128E-Instruct-FP8
            ai.gke.io/inference-server: vllm
        spec:
          containers:
          - name: inference-server
            image: docker.io/vllm/vllm-openai:v0.10.0
            resources:
              requests:
                cpu: 146
                memory: 1311Gi
                ephemeral-storage: 600Gi
                nvidia.com/gpu : 8
              limits:
                cpu: 146
                memory: 1311Gi
                ephemeral-storage: 600Gi
                nvidia.com/gpu : 8
            command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
            args:
            - --host=0.0.0.0
            - --port=7080
            - --swap-space=16
            - --max-model-len=524288
            - --gpu-memory-utilization=0.90
            - --disable-log-stats
            - --model=meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8
            - --tensor-parallel-size=8
            env:
            - name: LD_LIBRARY_PATH
              value: ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64
            - name: MODEL_ID
              value: 'meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8'
            - name: HUGGING_FACE_HUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: hf-secret
                  key: hf_api_token
            volumeMounts:
            - mountPath: /dev/shm
              name: dshm
          volumes:
          - name: dshm
            emptyDir:
              medium: Memory
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-h100-80gb
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: llama-service
    spec:
      selector:
        app: llama-server
      type: ClusterIP
      ports:
      - protocol: TCP
        port: 8000
        targetPort: 7080
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: hf-secret
    type: Opaque
    stringData:
      hf_api_token: {{HF_TOKEN}}
  2. 套用資訊清單:

    kubectl apply -f vllm-llama4-maverick-17b-128e-instruct-fp8.yaml
    

    在我們的範例中,我們使用 --max-model-len=524288 vLLM 選項,將內容視窗限制為 512 K。

Llama 4 Scout 17B-16e

如要部署 Llama 4 Scout 17B-16E 模型,請按照下列操作說明:

  1. 建立下列 vllm-llama4-scout-17b-16e.yaml 資訊清單:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: llama-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: llama-server
      template:
        metadata:
          labels:
            app: llama-server
            ai.gke.io/model: Llama-4-Scout-17B-16E
            ai.gke.io/inference-server: vllm
        spec:
          containers:
          - name: inference-server
            image: docker.io/vllm/vllm-openai:v0.10.0
            resources:
              requests:
                cpu: 146
                memory: 1311Gi
                ephemeral-storage: 600Gi
                nvidia.com/gpu : 8
              limits:
                cpu: 146
                memory: 1311Gi
                ephemeral-storage: 600Gi
                nvidia.com/gpu : 8
            command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
            args:
            - --host=0.0.0.0
            - --port=7080
            - --swap-space=16
            - --max-model-len=262144
            - --limit_mm_per_prompt
            - '{"image": 5}'
            - --disable-log-stats
            - --model=meta-llama/Llama-4-Scout-17B-16E
            - --tensor-parallel-size=8
            env:
            - name: LD_LIBRARY_PATH
              value: ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64        
            - name: MODEL_ID
              value: 'meta-llama/Llama-4-Scout-17B-16E'
            - name: HUGGING_FACE_HUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: hf-secret
                  key: hf_api_token
            volumeMounts:
            - mountPath: /dev/shm
              name: dshm
          volumes:
          - name: dshm
            emptyDir:
              medium: Memory
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-h100-80gb
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: llama-service
    spec:
      selector:
        app: llama-server
      type: ClusterIP
      ports:
      - protocol: TCP
        port: 8000
        targetPort: 7080
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: hf-secret
    type: Opaque
    stringData:
      hf_api_token: {{HF_TOKEN}}
  2. 套用資訊清單:

    kubectl apply -f vllm-llama4-scout-17b-16e.yaml
    

    在我們的範例中,我們使用 --max-model-len=262144 vLLM 選項,將脈絡窗口限制為 256K。

Llama 4 Scout 17B-16e-it

如要部署 Llama 4 Scout 17B-16e Instruct 指令微調模型,請按照下列操作說明:

  1. 建立下列 vllm-llama4-scout-17b-16e-instruct.yaml 資訊清單:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: llama-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: llama-server
      template:
        metadata:
          labels:
            app: llama-server
            ai.gke.io/model: Llama-4-Scout-17B-16E-Instruct
            ai.gke.io/inference-server: vllm
        spec:
          containers:
          - name: inference-server
            image: docker.io/vllm/vllm-openai:v0.10.0
            resources:
              requests:
                cpu: 146
                memory: 1311Gi
                ephemeral-storage: 600Gi
                nvidia.com/gpu : 8
              limits:
                cpu: 146
                memory: 1311Gi
                ephemeral-storage: 600Gi
                nvidia.com/gpu : 8
            command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
            args:
            - --host=0.0.0.0
            - --port=7080
            - --swap-space=16
            - --max-model-len=1310720
            - --limit_mm_per_prompt
            - '{"image": 5}'
            - --disable-log-stats
            - --model=meta-llama/Llama-4-Scout-17B-16E-Instruct
            - --tensor-parallel-size=8
            env:
            - name: LD_LIBRARY_PATH
              value: ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64
            - name: MODEL_ID
              value: 'meta-llama/Llama-4-Scout-17B-16E-Instruct'
            - name: HUGGING_FACE_HUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: hf-secret
                  key: hf_api_token
            volumeMounts:
            - mountPath: /dev/shm
              name: dshm
          volumes:
          - name: dshm
            emptyDir:
              medium: Memory
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-h100-80gb
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: llama-service
    spec:
      selector:
        app: llama-server
      type: ClusterIP
      ports:
      - protocol: TCP
        port: 8000
        targetPort: 7080
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: hf-secret
    type: Opaque
    stringData:
      hf_api_token: {{HF_TOKEN}}
  2. 套用資訊清單:

    kubectl apply -f vllm-llama4-scout-17b-16e-instruct.yaml
    

    在我們的範例中,我們使用 --max-model-len=1310720 vLLM 選項,將內容視窗限制為 1280 K。

等待部署作業完成:

kubectl wait --for=condition=Available --timeout=1800s deployment/llama-deployment

查看執行中 Deployment 的記錄:

kubectl logs -f -l app=llama-server

部署資源會下載模型資料。這項程序會在幾分鐘內完成。輸出結果會與下列內容相似:

INFO:     Started server process [145]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
...
INFO 04-07 13:36:29 [async_llm.py:228] Added request chatcmpl-4149ea4cf35e48559f9f819dcdbbb23e.
INFO:     127.0.0.1:44018 - "POST /v1/chat/completions HTTP/1.1" 200 OK

請先確認模型已完全下載,再繼續進行下一個部分。

提供模型

在本節中,您將與模型互動。

設定通訊埠轉送

如要設定通訊埠轉送至模型,請執行下列指令:

kubectl port-forward service/llama-service 8080:8000

輸出結果會與下列內容相似:

Forwarding from 127.0.0.1:8080 -> 7080

使用 curl 與模型互動

本節說明如何執行基本的冒煙測試,驗證已部署的 Llama 指令微調模型。如果是其他模型,請將 meta-llama/Llama-4-Maverick-17B-128E 替換為對應模型的名稱。

這個範例說明如何使用純文字輸入內容測試 Llama 4 Scout 17B-16E 模型。

在新終端機工作階段中,使用 curl 與模型對話:

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Llama-4-Maverick-17B-128E",
    "messages": [{"role": "user", "content": "San Francisco is a"}],
    "max_tokens": 7,
    "temperature": 0
  }'

輸出結果會與下列內容相似:

"message":{"role":"assistant","reasoning_content":null,"content":"San Francisco is a city","tool_calls":[]}

排解問題

  • 如果收到 Empty reply from server 訊息,表示容器可能尚未完成下載模型資料。再次檢查 Pod 的記錄,確認是否有 Connected 訊息,這表示模型已準備好提供服務。
  • 如果看到 Connection refused 訊息,請確認連接埠轉送功能是否已啟用

觀察模型成效

如要查看模型可觀測性指標的資訊主頁,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Deployed Models」(已部署模型) 頁面。

    前往「已部署的模型」

  2. 如要查看特定部署作業的詳細資料,包括指標、記錄和資訊主頁,請按一下清單中的模型名稱。

  3. 在模型詳細資料頁面中,按一下「可觀測性」分頁標籤,即可查看下列資訊主頁。如果系統提示,請按一下「啟用」,為叢集啟用指標收集功能。

    • 「基礎架構用量」資訊主頁會顯示使用率指標。
    • 「DCGM」DCGM資訊主頁會顯示 DCGM 指標。
    • 如果您使用 vLLM,則可使用「模型效能」資訊主頁,查看 vLLM 模型效能指標。

您也可以在 Cloud Monitoring 中,透過 vLLM 資訊主頁整合功能查看指標。這些指標會匯總所有 vLLM 部署作業,且沒有預設篩選器

如要在 Cloud Monitoring 中使用資訊主頁,必須在 GKE 叢集中啟用 Google Cloud Managed Service for Prometheus,從 vLLM 收集指標。vLLM 預設會以 Prometheus 格式公開指標,您不需要安裝額外的匯出工具。如要瞭解如何使用 Google Cloud Managed Service for Prometheus 收集模型指標,請參閱 Cloud Monitoring 說明文件中的 vLLM 可觀測性指南。

清除所用資源

為避免因為本教學課程所用資源,導致系統向 Google Cloud 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。

刪除已部署的資源

如要避免系統向您的 Google Cloud 帳戶收取本指南所建立資源的費用,請執行下列指令:

gcloud container clusters delete CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

替換下列值:

  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域
  • CLUSTER_NAME:叢集名稱。

後續步驟