Google DeepMind 的 Gemma 4 这周上了 Amazon Bedrock。
对于已经在 Bedrock 上跑 Claude 或 GPT-5.5 的团队来说,多了一组开源模型选择。关键是——开源模型可以做一些闭源模型做不了的事:微调、本地部署、合规审计模型权重。而现在不需要自己搭推理集群了,直接在 Bedrock 上按 token 付费调用。
Gemma 4 家族:三个变体
| 变体 | 参数量 | 架构 | 上下文窗口 | 适合场景 |
|---|---|---|---|---|
| Gemma 4 31B | 31B | Dense | 256K token | 推理重、编码重的任务 |
| Gemma 4 26B-A4B | 26B (4B active) | MoE | — | 成本和延迟敏感 |
| Gemma 4 E2B | ~2B | 小模型 | — | 低延迟交互场景 |
简单说:
- 31B:能力强,适合复杂推理和代码生成,256K 上下文够读整个代码库
- 26B-A4B:MoE 架构,总参数 26B 但每次推理只激活 4B,性价比高
- E2B:小而快,适合实时对话、表单填充这类对延迟极度敏感的场景
核心能力
- 内置推理:thinking/reasoning 能力原生支持
- 原生 function calling:不需要 prompt hack,直接支持工具调用
- 多模态:文本、图片、视频、音频都能处理
- 35+ 语言:中文支持包含在内
- 结构化输出:JSON mode 原生支持
快速调用
环境准备
pip install boto3
Python 调用 Gemma 4 31B
import boto3
import jsonbedrock = boto3.client(service_name='bedrock-runtime',region_name='us-east-1'
)# 调用 Gemma 4 31B
response = bedrock.invoke_model(modelId='google.gemma-4-31b-v1:0',contentType='application/json',accept='application/json',body=json.dumps({"messages": [{"role": "user","content": "用 Python 写一个 S3 文件批量重命名脚本,支持正则匹配"}],"max_tokens": 4096,"temperature": 0.7})
)result = json.loads(response['body'].read())
print(result['choices'][0]['message']['content'])
带 Function Calling 的调用
import boto3
import jsonbedrock = boto3.client(service_name='bedrock-runtime',region_name='us-east-1'
)tools = [{"type": "function","function": {"name": "get_ec2_instances","description": "获取指定区域的 EC2 实例列表","parameters": {"type": "object","properties": {"region": {"type": "string","description": "AWS 区域代码,如 us-east-1"},"state": {"type": "string","enum": ["running", "stopped", "all"],"description": "实例状态过滤"}},"required": ["region"]}}}
]response = bedrock.invoke_model(modelId='google.gemma-4-31b-v1:0',contentType='application/json',accept='application/json',body=json.dumps({"messages": [{"role": "user","content": "帮我查一下 us-east-1 区域有哪些正在运行的 EC2 实例"}],"tools": tools,"max_tokens": 1024})
)result = json.loads(response['body'].read())
print(json.dumps(result, indent=2, ensure_ascii=False))
流式调用(低延迟场景)
import boto3
import jsonbedrock = boto3.client(service_name='bedrock-runtime',region_name='us-east-1'
)# E2B 小模型 + 流式输出 = 实时对话体验
response = bedrock.invoke_model_with_response_stream(modelId='google.gemma-4-e2b-v1:0',contentType='application/json',accept='application/json',body=json.dumps({"messages": [{"role": "user", "content": "解释一下 VPC Peering 和 Transit Gateway 的区别"}],"max_tokens": 2048,"stream": True})
)for event in response['body']:chunk = json.loads(event['chunk']['bytes'])if 'choices' in chunk:delta = chunk['choices'][0].get('delta', {})if 'content' in delta:print(delta['content'], end='', flush=True)
三个变体怎么选
决策树很简单:
你的场景是什么?
├── 需要深度推理/写复杂代码/处理长文档
│ └── → Gemma 4 31B(贵但强)
├── 成本敏感/请求量大/可以接受稍弱的推理
│ └── → Gemma 4 26B-A4B(MoE,激活参数少,便宜快)
└── 实时交互/聊天机器人/延迟 < 200ms└── → Gemma 4 E2B(小快省)
实际项目中我会这样组合:
- 用户提问入口 → E2B 做意图识别和简单回答
- 需要深度分析 → 路由到 31B
- 批量处理任务 → 26B-A4B 跑性价比
和 Bedrock 其他模型对比
| 维度 | Gemma 4 31B | Claude Sonnet | GPT-5.4 |
|---|---|---|---|
| 类型 | 开源 | 闭源 | 闭源 |
| 可微调 | ✅(SageMaker/自建) | ❌ | ❌ |
| 多模态 | 文/图/视频/音频 | 文/图 | 文/图 |
| Function Calling | 原生 | 原生 | 原生(Responses API) |
| 上下文 | 256K | 200K | 128K |
| 定位 | 开源强推理 | 通用强编码 | 通用性价比 |
开源模型在 Bedrock 上的优势
为什么不直接在 EC2 上自己跑 vLLM?
- 不用管基础设施 —— Bedrock 托管推理,不需要 GPU 实例管理
- 按 token 付费 —— 不用为空闲 GPU 买单
- 和其他 Bedrock 功能集成 —— Guardrails、Knowledge Bases、Agent 框架直接用
- 自动扩缩 —— 流量波动时不需要手动调实例
当然,如果你追求更低的成本(大量推理 + 固定流量),自建 vLLM on Inferentia2 可能更省钱。但对大多数团队来说,Bedrock 托管是省心选择。
几个注意事项
- 区域限制 —— 目前只在 us-east-1、us-east-2、us-west-2、eu-central-1 四个区域
- 开源 ≠ 免费 —— Bedrock 上用还是按 token 收费的,只是模型权重开源
- 版本锁定 —— Model ID 带版本号(v1:0),后续新版本会有新 ID
- Guardrails 兼容 —— 可以给 Gemma 4 加 Bedrock Guardrails,和闭源模型一样的内容安全策略
总结
Gemma 4 上 Bedrock 给开发者多了一个选择维度——不是"开源 vs 闭源"的二选一,而是可以在同一个平台上按场景混用。对于有定制化需求(微调、权重审计)的企业来说,这是个好消息。
建议先用 31B 跑几个你们的实际业务 prompt,和 Claude/GPT 对比一下效果,再决定是否切换或混用。
官方资源:
- Gemma 4 模型文档:https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-google.html
- Bedrock 区域兼容性:https://docs.aws.amazon.com/bedrock/latest/userguide/models-region-compatibility.html
