来源:llm/gemma3
使用 SkyPilot 和 vLLM 运行和部署 Gemma3#
SkyPilot 是一个用于在任何基础设施上运行 AI 和批量工作负载的框架,提供统一执行、高成本节省和高 GPU 可用性。
2025 年 3 月 12 日,Google 发布了 Gemma 3,这是一系列轻量级、最先进的开源模型,基于为 Google Gemini 2.0 模型提供动力的相同研究和技术构建。
Gemma 3 有四种尺寸(1B、4B、12B 和 27B),并引入了以下关键功能
多模态能力:支持视觉-语言输入及文本输出(1B、4B、12B 和 27B 模型)
128K token 上下文窗口:输入上下文更大 16 倍,用于分析更复杂的数据
多语言支持:支持超过 140 种语言,涵盖所有模型尺寸
高级功能:函数调用、结构化输出和改进的推理能力
针对设备优化:可在从单个 GPU 到大型集群的各种硬件上运行
在初步评估中,Gemma 3 在同等尺寸的模型中表现优于许多更大的模型,这使其成为从个人项目到生产系统的广泛应用的理想选择。
本指南将详细介绍如何在任何基础设施上运行和托管 Gemma 3 模型,包括本地 GPU 工作站、Kubernetes 集群和公有云(支持 15+ 云平台)。
SkyPilot 支持多种 LLM 框架和模型。在本指南中,我们以 vLLM 为例,这是一个用于快速 LLM 推理和服务的开源库。
注意:提供的 YAML 配置是为 Gemma 3 4B 指令微调模型设置的,但可以轻松修改以用于其他 Gemma 3 变体。
步骤 0:设置#
在您的本地机器上安装 SkyPilot
pip install 'skypilot-nightly[all]'
要设置和验证您的基础设施,运行
sky check
详细信息请参见文档。
您还需要设置您的 Hugging Face 账户和 Gemma3 使用协议。
步骤 1:使用 SkyPilot 运行#
现在是时候使用 SkyPilot 运行 deepseek 了。具体指令可能取决于您现有的硬件。
sky launch gemma3.yaml \
-c gemma-3 \
--env MODEL_NAME=google/gemma-3-4b-it \
--gpus L4:1
--env HF_TOKEN=xxxx
步骤 2:获取结果#
获取在副本之间进行负载均衡的单个端点
export ENDPOINT=$(sky status --ip gemma-3)
在终端中查询端点
curl http://$ENDPOINT:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-3-4b-it",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who are you?"
}
]
}' | jq .
获取响应
{
"id": "chatcmpl-525ee12bfe3a456b9e764639724e1095",
"object": "chat.completion",
"created": 1741805203,
"model": "google/gemma-3-4b-it",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": null,
"content": "I'm Gemma, a large language model created by the Gemma team at Google DeepMind. I’m an open-weights model, which means I’m widely available for public use! \n\nI can take text and images as inputs and generate text-based responses. \n\nIt’s nice to meet you!",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": 106
}
],
"usage": {
"prompt_tokens": 20,
"total_tokens": 87,
"completion_tokens": 67,
"prompt_tokens_details": null
},
"prompt_logprobs": null
}
部署具有多个副本的服务#
上面的启动命令仅为服务启动单个副本(带 1 个节点)。SkyServe 有助于部署带有开箱即用负载均衡、自动扩缩容和自动恢复功能的多个副本的服务。重要的是,它还支持在 Spot 实例上提供服务,从而降低 30% 的成本。
唯一需要的更改是添加一个 service 部分用于特定的服务配置
service:
replicas: 2
readiness_probe:
path: /v1/chat/completions
post_data:
model: $MODEL_NAME
messages:
- role: user
content: Hello! What is your name?
max_tokens: 1
然后使用一个简单的命令运行 SkyPilot YAML
sky serve up -n gemma-serve gemma.yaml
包含的文件#
gemma3.yaml
resources:
accelerators: {L4:1, L4:4, A100:1, A100-80GB:1}
ports: 8000
disk_tier: best
use_spot: true
envs:
HF_TOKEN:
MODEL_NAME: google/gemma-3-4b-it
MAX_MODEL_LEN: 4096
setup: |
uv pip install vllm
run: |
echo 'Starting vllm openai api server...'
python -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--tensor-parallel-size $SKYPILOT_NUM_GPUS_PER_NODE \
--model $MODEL_NAME \
--max-model-len $MAX_MODEL_LEN
service:
replica_policy:
min_replicas: 1
max_replicas: 2
target_qps_per_replica: 5
# An actual request for readiness probe.
readiness_probe:
path: /v1/chat/completions
post_data:
model: $MODEL_NAME
messages:
- role: user
content: Hello! What is your name?
max_tokens: 1