用 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_url 和 model 名稱。其他一切保持不變。
GPU 記憶體規劃
這是大多數人搞錯的部分。以下是你實際需要的:
| 模型 | 精度 | 最低 VRAM | 建議 VRAM | 最大上下文 |
|---|---|---|---|---|
| Gemma 4 E4B | FP16 | 10 GB | 16 GB | 32K |
| Gemma 4 E4B | INT8 | 6 GB | 10 GB | 16K |
| Gemma 4 26B | BF16 | 52 GB | 80 GB (A100) | 32K |
| Gemma 4 26B | INT8 | 28 GB | 40 GB (A100) | 32K |
| Gemma 4 31B | BF16 | 62 GB | 80 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 8000Docker 設定
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-26bVertex 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 儀表板,會在使用者察覺之前抓到大多數正式環境問題。
下一步
- 為可重現的部署設定 Docker 容器
- 為 API 消費者啟用結構化 JSON 輸出
- 比較 Gemma 4 架構 為你的工作負載挑選合適的模型
- 了解微調 為你的使用場景自訂模型
Stop reading. Start building.
~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.
Launch Playground />


