MultimodalFlow
← 返回博客

Gemma 4 在 RTX 3090 上的三尺寸实测:4B vs 12B vs 26B — 显存不够时会发生什么

Gemma4跑分RTX 3090大模型显存Ollama本地推理

三种尺寸,一张显卡。本文使用 Ollama 0.21.0 API 在真实 RTX 3090 上直接测试,非实验室理想环境,无虚构数据。


测试环境

配置项参数
GPUNVIDIA GeForce RTX 3090
显存24 GB
驱动版本550.144.03
CUDA12.4
计算能力8.6
操作系统Ubuntu 22.04.5 LTS
推理框架Ollama 0.21.0

测试时可用显存:约 15.1 GB(桌面显示 + 后台 Python 进程占用约 9.1 GB)。这是真实的日常使用场景,并非专用测试机。


测试模型

模型文件大小量化方式参数量
gemma4:e4b9.6 GBQ4_K_M4B
gemma4:12b (llama-bench)6.86 GBQ4_K_M11.91B
gemma4:26b17.99 GBQ4_K_M25.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/s16,953 t/s
gemma4:12b (llama-bench)1,100–2,702 t/s
gemma4:26b291 t/s2,805 t/s

生成速度(Token 输出)

模型短提示词(tg)长提示词(tg)
gemma4:e4b(4B)131.0 t/s129.7 t/s
gemma4:12b (llama-bench)70.3–70.7 t/s
gemma4:26b15.4 t/s16.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 测试。