Gemma 4 在 RTX 3090 上的三尺寸实测:4B vs 12B vs 26B — 显存不够时会发生什么
三种尺寸,一张显卡。本文使用 Ollama 0.21.0 API 在真实 RTX 3090 上直接测试,非实验室理想环境,无虚构数据。
测试环境
| 配置项 | 参数 |
|---|---|
| GPU | NVIDIA GeForce RTX 3090 |
| 显存 | 24 GB |
| 驱动版本 | 550.144.03 |
| CUDA | 12.4 |
| 计算能力 | 8.6 |
| 操作系统 | Ubuntu 22.04.5 LTS |
| 推理框架 | Ollama 0.21.0 |
测试时可用显存:约 15.1 GB(桌面显示 + 后台 Python 进程占用约 9.1 GB)。这是真实的日常使用场景,并非专用测试机。
测试模型
| 模型 | 文件大小 | 量化方式 | 参数量 |
|---|---|---|---|
gemma4:e4b | 9.6 GB | Q4_K_M | 4B |
gemma4:12b (llama-bench) | 6.86 GB | Q4_K_M | 11.91B |
gemma4:26b | 17.99 GB | Q4_K_M | 25.8B |
12B 数据来自同一显卡的独立 llama-bench 测试,测试时显存状态较为干净,此处列入用于尺寸对比参考。
测试方法
4B 和 26B 模型均通过 Ollama REST API 进行测试:
curl http://localhost:11434/api/generate -d '{
"model": "gemma4:26b",
"prompt": "<测试提示词>",
"stream": false,
"options": {"num_predict": 128}
}'
从响应中提取以下指标:
- 预填充速度(pp):
prompt_eval_count / (prompt_eval_duration / 1e9)token/s - 生成速度(tg):
eval_count / (eval_duration / 1e9)token/s
每个模型先运行一次预热(加载到内存),再进行正式计时。
测试了两种提示词长度:
- 短提示词:约 26 个 token
- 长提示词:约 192 个 token(重复 8 遍的 AI 历史段落)
测试结果
预填充速度(Prompt 处理)
| 模型 | 短提示词(pp) | 长提示词(pp) |
|---|---|---|
| gemma4:e4b(4B) | 2,893 t/s | 16,953 t/s |
| gemma4:12b (llama-bench) | 1,100–2,702 t/s | — |
| gemma4:26b | 291 t/s | 2,805 t/s |
生成速度(Token 输出)
| 模型 | 短提示词(tg) | 长提示词(tg) |
|---|---|---|
| gemma4:e4b(4B) | 131.0 t/s | 129.7 t/s |
| gemma4:12b (llama-bench) | 70.3–70.7 t/s | — |
| gemma4:26b | 15.4 t/s | 16.4 t/s |
26B 为什么慢了 8 倍
原因是简单的数学:
模型文件大小:17.99 GB
可用显存: 15.10 GB
溢出到内存: 2.89 GB
Ollama 加载 gemma4:26b 时,约 2.9 GB 的模型权重无法放入显存,被存入系统内存(RAM)。在生成阶段,每次前向传播都需要通过 PCIe 总线从内存读取这些层,速度比显存带宽慢约 50–100 倍。
结果:实际只有 15–16 t/s,而非显存充足时预期的 40–50 t/s。
4B 和 12B 模型完全在显存中运行,生成速度随模型大小线性下降,符合预期。
生成速度直观对比
gemma4:e4b (4B) ████████████████████████████████ 131 t/s ✓ 完全在显存
gemma4:12b (12B) ██████████████ 70 t/s ✓ 完全在显存
gemma4:26b (26B) ████ 16 t/s ✗ 部分溢出到内存
RTX 3090 用户该怎么选
4B 模型(gemma4:e4b):
- 131 t/s — 约为人类阅读速度的 26–43 倍
- 9.6 GB 轻松装入显存,还剩大量余量给其他任务
- 适合快速迭代、编程助手或多模型并用场景
12B 模型(gemma4:12b):
- llama.cpp 全显存状态下达 70 t/s
- 平衡之选:推理质量显著优于 4B,速度仍然快
- 约需 7 GB 显存,即使桌面有开销也完全放得下
26B 模型(gemma4:26b):
- 若 3090 有 ≥ 20 GB 可用显存:预期约 40–50 t/s(全显存运行)
- 若 3090 处于日常桌面使用状态(本次测试):15–16 t/s,交互体验较差
- 仅在显存基本空闲、且对质量有明确要求时才值得运行
实用结论: 对于日常桌面环境下的 RTX 3090,12B 模型是最优选 — 显存完全够用,生成速度 70 t/s,质量与 26B 的差距对大多数任务来说可以接受。
关于预填充速度的说明
短提示词下 26B 的预填充(291 t/s)看起来偏低,因为模型在首次调用时正在冷启动加载。长提示词结果(2,805 t/s)更能代表模型已加载入内存后的真实预填充性能。对话场景中,无论哪个尺寸的模型,提示词处理均在不到一秒内完成,用户感知不到延迟。
复现方法
# 安装 Ollama 并拉取模型
curl -fsSL https://ollama.com/install.sh | sh
ollama pull gemma4:e4b
ollama pull gemma4:26b
# 通过 API 快速测试生成速度
curl http://localhost:11434/api/generate -d '{
"model": "gemma4:26b",
"prompt": "机器学习是什么?用一段话回答。",
"stream": false,
"options": {"num_predict": 128}
}' | python3 -c "
import json, sys
d = json.load(sys.stdin)
tg = d['eval_count'] / (d['eval_duration'] / 1e9)
pp = d['prompt_eval_count'] / (d['prompt_eval_duration'] / 1e9)
print(f'预填充:{pp:.1f} t/s | 生成速度:{tg:.1f} t/s')
"
运行 26B 前先检查可用显存:
nvidia-smi --query-gpu=memory.free,memory.total --format=csv,noheader
若可用显存低于 18 GB,将发生 CPU 溢出,生成速度会显著下降。
跑分数据采集于 2026 年 6 月 8 日。结果因可用显存、Ollama 版本和量化方式不同而有所差异。12B 数据来自同一显卡的独立 llama-bench 测试。