0% read

如何將 Gemma 4 部署到正式環境(vLLM + Docker)

Apr 7, 2026

Ollama 在你的筆電上執行 Gemma 4 對開發來說很棒。但當你需要服務數百個同時使用者、每分鐘處理數千個請求、並將延遲保持在一秒以下——你需要一個正式等級的推論引擎。

這就是 vLLM 登場的地方。它是在正式環境中提供大型語言模型的黃金標準,與 Gemma 4 配合得很好。

為什麼選 vLLM?

vLLM 使用 PagedAttention,它管理 GPU 記憶體的方式就像作業系統管理 RAM——隨著請求進出動態分配和釋放記憶體。結果:

  • 2-4 倍更高的吞吐量 vs. 原始推論
  • OpenAI 相容的 API — 換上 Gemma 4 而無需變更你的客戶端程式碼
  • 連續批次處理 — 請求之間沒有浪費的 GPU 週期
  • 張量平行 — 將大模型分割到多個 GPU

安裝 vLLM

# 建立乾淨的環境
python -m venv vllm-env
source vllm-env/bin/activate

# 安裝有 GPU 支援的 vLLM
pip install vllm

確認你有正確的 CUDA 驅動程式。vLLM 需要 CUDA 12.1+ 和至少 16GB VRAM 的 GPU 用於較小的 Gemma 4 模型。

用 OpenAI 相容 API 服務 Gemma 4

最簡單的入門方式——一行指令你就有一個 API 端點:

vllm serve google/gemma-4-26b \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.90 \
  --dtype bfloat16

現在你可以用任何 OpenAI SDK 客戶端呼叫它:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="not-needed",  # vLLM 預設不需要金鑰
)

response = client.chat.completions.create(
    model="google/gemma-4-26b",
    messages=[
        {"role": "user", "content": "Explain quantum computing in one paragraph."}
    ],
    temperature=0.7,
    max_tokens=256,
)

print(response.choices[0].message.content)

這的美妙之處:如果你的應用已經使用 OpenAI API,你只需改 base_urlmodel 名稱。其他一切保持不變。

GPU 記憶體規劃

這是大多數人搞錯的部分。以下是你實際需要的:

模型精度最低 VRAM建議 VRAM最大上下文
Gemma 4 E4BFP1610 GB16 GB32K
Gemma 4 E4BINT86 GB10 GB16K
Gemma 4 26BBF1652 GB80 GB (A100)32K
Gemma 4 26BINT828 GB40 GB (A100)32K
Gemma 4 31BBF1662 GB80 GB (A100)32K

專業技巧: --gpu-memory-utilization 旗標(預設 0.9)控制 vLLM 預分配多少 VRAM。如果你在同一 GPU 上執行其他程序,把它降到 0.8。需要幫忙搞清楚你的硬體?查看我們的硬體指南

用於多 GPU 設定:

# 將 Gemma 4 26B 分割到 2 張 GPU
vllm serve google/gemma-4-26b \
  --tensor-parallel-size 2 \
  --host 0.0.0.0 \
  --port 8000

Docker 設定

Docker 是在正式環境中部署的正確方式。以下是完整的 docker-compose.yml

version: "3.8"

services:
  vllm:
    image: vllm/vllm-openai:latest
    ports:
      - "8000:8000"
    volumes:
      - model-cache:/root/.cache/huggingface
    environment:
      - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
    command: >
      --model google/gemma-4-26b
      --host 0.0.0.0
      --port 8000
      --max-model-len 8192
      --gpu-memory-utilization 0.90
      --dtype bfloat16
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  model-cache:

啟動它:

# 設定你的 HuggingFace token
export HF_TOKEN=your_token_here

# 啟動服務
docker compose up -d

# 查看 log
docker compose logs -f vllm

# 驗證它在執行
curl http://localhost:8000/v1/models

對 Docker 特定設定的深入介紹,看我們的 Docker 指南

批次推論

當你需要處理大型資料集時——例如分類 10,000 個文件——批次推論比一次傳送一個請求有效率得多:

from openai import OpenAI
import asyncio
import aiohttp

client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")

async def process_batch(items, max_concurrent=50):
    semaphore = asyncio.Semaphore(max_concurrent)
    
    async def process_one(item):
        async with semaphore:
            response = client.chat.completions.create(
                model="google/gemma-4-26b",
                messages=[{"role": "user", "content": item}],
                max_tokens=128,
            )
            return response.choices[0].message.content
    
    tasks = [process_one(item) for item in items]
    return await asyncio.gather(*tasks)

# 處理 1000 個項目,最多 50 個同時請求
items = ["Classify this text: " + text for text in your_texts]
results = asyncio.run(process_batch(items))

vLLM 透過連續批次處理在內部處理批次——它自動將請求組合在一起以達到最大的 GPU 利用率。

負載平衡

為了高可用性,在負載平衡器後執行多個 vLLM 實例:

# nginx.conf
upstream vllm_backend {
    least_conn;
    server vllm-1:8000;
    server vllm-2:8000;
    server vllm-3:8000;
}

server {
    listen 80;

    location /v1/ {
        proxy_pass http://vllm_backend;
        proxy_set_header Host $host;
        proxy_read_timeout 120s;
    }
}

Vertex AI:託管選項

如果你完全不想管理基礎設施,Google 的 Vertex AI 提供託管的 Gemma 4 部署:

# 透過 gcloud CLI 部署
gcloud ai endpoints create \
  --region=us-central1 \
  --display-name=gemma4-endpoint

gcloud ai models upload \
  --region=us-central1 \
  --display-name=gemma-4-26b \
  --container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/vllm-serve:latest \
  --artifact-uri=gs://your-bucket/gemma-4-26b

Vertex AI 處理擴展、監控和 GPU 分配。你按預測付費。每次查詢更貴但運維開銷小得多。

要與 Google AI Studio(免費方案)比較,查看我們的 Google AI Studio 指南

監控

你應該在正式環境中監控這些指標:

import requests

# vLLM 公開 Prometheus 指標
metrics = requests.get("http://localhost:8000/metrics").text

# 要追蹤的關鍵指標:
# vllm:num_requests_running    — 目前同時請求
# vllm:num_requests_waiting    — 佇列深度
# vllm:avg_generation_throughput — 每秒 tokens
# vllm:gpu_cache_usage_perc   — KV 快取使用率

為這些設定警報:

  • 佇列深度 > 100:你需要更多實例或更大的 GPU
  • GPU 快取 > 95%:降低 max-model-len 或增加記憶體
  • p99 延遲 > 5s:是時候水平擴展了
  • 錯誤率 > 1%:檢查 OOM 錯誤和模型健康

用這四個指標做一個快速的 Grafana 儀表板,會在使用者察覺之前抓到大多數正式環境問題。

下一步

gemma4 — interact

Stop reading. Start building.

~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.

Launch Playground />
Gemma 4 AI

Gemma 4 AI

Related Guides

如何將 Gemma 4 部署到正式環境(vLLM + Docker) | 部落格