来源: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

包含的文件#