Quadro P2000 5G 老卡跑 35B 大模型:从“鸡肋”到“真香”的调优实录

一张 2017 年的 Pascal 老卡(5GB GDDR5),搭配 i7-9700 和 64GB 内存,在 2026 年的今天,能不能流畅运行 35B 级别的 MoE 模型?
—— 答案是:能,但得会“调教”
本文记录了我从“这卡连鸡肋都不如”到“OC,还能再战三年”的全过程,献给所有手头有老卡、机箱不让拆、却依然想折腾大模型的打工人。


在这里插入图片描述

引言:一张被“封印”的老卡

我机箱里有张 Quadro P2000,5GB 显存,Pascal 架构,没有 Tensor Core,锁着呢。2026 年的今天看它,就像看一台诺亚纳手机——能用,但谁好意思拿出来?当年也是专业卡,如今连“电子宠物”都不如。

我也梦想换张 RTX 5090,体验一下 200+ token/s 的飞一般感觉。
但是,这台电脑是单位的,机箱贴了封条,上了锁,IT 部门明文规定:不许私自拆装硬件。
(别问为什么,问就是“固定资产管理”四个大字。)

所以,我只能守着这张老卡,跟它死磕。

之前拿它跑 7B-9B 的稠密模型,生成速度只有 6-8 token/s,跟我的 i7-9700 纯 CPU 差不多(甚至更慢)。我一度觉得这卡“连鸡肋都算不上”——食之无味,弃之也不可惜。那天晚上我对着 nvidia-smi 发呆,心想:要不把它拔了当亮机卡算了?哦不行,拔不了,封条还在,钥匙没有。

直到我开始接触 MoE(混合专家)模型,才发现这老卡居然还有一口气。

正巧,社区里冒出了 Qwen3.5-35B-A3B 这样的 MoE 模型——总参数 350 亿,但每次只激活约 30 亿。这意味着它拥有 35B 的“脑子”,却只需要 3B 的“饭量”。要不咱试试?反正闲着也是闲着。

于是,我开始了这场“老卡调优”的折腾之旅。
不为别的,就为了证明:老卡不是不能战,只是没遇到对的人。


一、硬件配置:寒碜,但我不嫌弃

  • GPU:NVIDIA Quadro P2000 5GB(计算能力 6.1,无 Tensor Core)—— 当年也是专业卡,如今连“电子宠物”都不如
  • CPU:Intel i7-9700(8 核 8 线程,单核 4.7GHz)—— 还算争气
  • 内存:64GB DDR4(双通道,2666MHz)—— 这可能是全机最豪华的部件了
  • 软件:llama.cpp (build 8770),CUDA 后端
  • 测试工具llama-bench.exe(官方性能压测工具,也是我的“照妖镜”)

每次跑测试,风扇呼呼响,我都在心里默念:兄弟,再坚持一下,等我换新卡就让你退休。


二、对比测试:从稠密到 MoE,从 9B 到 35B

2.1 先跑个 9B 稠密模型找感觉

我找了个 Qwen3.5-9B-Q4_K_M.gguf(大小 5.23GB,刚好比 P2000 的 5GB 显存大一点点)。用 llama-bench 分别测试 -ngl(GPU 加载层数)从 0 到 99。

关键数据(只列几个代表性值):

ngl 生成速度 (tg128) 显存状态 我的心理活动
0 (纯CPU) 5.39 t/s 无 GPU 负载 还行,比想象中快,i7-9700 还是给力的
8 6.52 t/s 稳定 有点提升,但不够爽,像挤牙膏
12 7.30 t/s 稳定 再努努力,老卡你倒是用力啊
16 8.17 t/s 接近满载,未溢出 最佳点,但也就那样——心情复杂
99 3.58 t/s 严重溢出 还不如纯 CPU,坑爹! 当场想砸键盘

结论:9B 稠密模型的最佳 ngl=16,速度 8.17 t/s,比纯 CPU 快了 51%。
但说实话,8 t/s 只能算“勉强能读”,离“流畅对话”还有差距。而且一旦显存溢出,速度直接腰斩。这卡跑 9B 稠密,就是鸡肋。 难道真的只能等换新卡了吗?

2.2 换 35B MoE 模型:惊喜来得太突然

下载了 Qwen3.5-35B-A3B-Q4_K_M.gguf,文件大小 19.71GB,总参数 346.6 亿。按照常识,这玩意儿不可能在 5GB 显存上跑。但 MoE 架构的“稀疏激活”特性让它变成了可能——每次只算 3B 参数。

测试 -ngl 从 0 到 10,同时使用 -ctk q8_0-ctk q4_0 两种 KV Cache 类型:

ngl type_k 生成速度 (tg128) 显存状态 我的心理活动
0 q8_0 9.60 t/s 纯 CPU 比 9B 纯 CPU 还快?不科学!
8 q8_0 11.88 t/s 稳定,显存未满 OC,真的快了! 我当时差点从椅子上跳起来
8 q4_0 12.01 t/s 稳定 KV cache 降精度还能再提一点,蚊子腿也是肉
10 q8_0 10.21 t/s 严重溢出,prefill 暴跌 崩了,prefill 从 170 掉到 16,心凉半截
10 q4_0 9.35 t/s 稳定(靠降 KV 精度救回来) 勉强能跑,但速度不如 ngl=8,有点鸡肋

惊喜发现

  • 35B MoE 在 ngl=8type_k=q8_0 时生成速度 11.88 t/s,比 9B 稠密的 8.17 t/s 还快 45%
  • 而且这 35B 的“脑子”明显更聪明,回答质量高出一大截。我问它一个复杂逻辑题,它居然比 9B 多绕了两层推理,答案更严谨。
  • 老卡用户,请放弃 7-9B 稠密,直接上 MoE! 这句话我恨不得用红字加粗。

那一刻,我看着 nvidia-smi 里 P2000 满载但未溢出的状态,突然觉得这张老卡还挺可爱的。它就像一头老牛,虽然跑不快,但只要你给它对的草(MoE 模型),它还能拉磨。

2.3 新模型点缀:Gemma-4 系列实测

2026 年 4 月,Google 开源了 Gemma-4 家族,我顺手测了两个:

  • Gemma-4-E2B(4.65B 稠密,文件 3.18GB,可全量进显存)
  • Gemma-4-26B-A4B(25.23B MoE,文件 15.63GB,激活约 4B)
Gemma-4-E2B(小钢炮)
ngl type_k 生成速度 (tg128) 显存状态 我的心理活动
38 q8_0 33.11 t/s 全量进显存 爽快!
44 q8_0 33.04 t/s 全量进显存 稳定
99 q8_0 32.60 t/s 全量进显存 依然够用

结论:这个小模型可以在 P2000 上跑出 33 t/s,适合做高频意图识别、简单问答,或者作为“快慢分工”中的快车道。

Gemma-4-26B-A4B(中 MoE)
ngl type_k 生成速度 (tg128) 显存状态 我的心理活动
6 q8_0 12.47 t/s 稳定 跟 35B 差不多
8 q8_0 12.73 t/s 稳定,显存未满 甜点,略快于 35B
10 q8_0 9.47 t/s 严重溢出 崩了
10 q4_0 8.65 t/s 稳定(急救包) 勉强能跑

结论:这个 MoE 模型的速度(12.73 t/s)与 35B 相当,可以作为备选,或者用来体验 Google 系模型的风格。
在这里插入图片描述


三、关键优化技巧:KV Cache 量化(-ctk)是急救包

在测试中,我发现一个重要的优化技巧:KV Cache 量化

llama.cpp 的 KV Cache 默认使用 f16(FP16,半精度浮点数)类型,虽然推理精度高,但会占用大量宝贵的显存。在我的 P2000 上,用默认 f16-ngl=10 就会直接显存溢出(我没测,但根据规律可以推断)。而我在测试中手动指定了 -ctk q8_0-ctk q4_0,发现:

  • 使用 q8_0 时,ngl=10 显存溢出,prefill 速度从 190+ t/s 暴跌到 22 t/s。
  • 使用 q4_0 后,显存占用大幅降低,系统稳定下来,prefill 速度恢复到 191 t/s,生成速度 8.65 t/s。

原理:KV Cache 是推理时存储上下文的关键数据,占用大量显存。从 f16 降到 q4_0,精度降低,但显存占用也随之大幅减少。在显存临界时,这能“挤”出宝贵空间,避免溢出。就像你衣服口袋塞满了,把硬币换成纸币,又能多装两包烟。

代价:生成速度可能会下降,但换来了在显存极度紧张时“起死回生”的能力。虽然比不上谷歌最新的 TurboQuant 压缩技术(号称能将 KV Cache 压缩 6 倍且精度无损),但 q4_0 作为实践派“土法炼钢”,在普通玩家手里也没差多少——毕竟,咱们的显存本来就小,能省一点是一点。

一句话总结:显存快满时,试试 -ctk q4_0,也许能起死回生。这是老卡用户最后的倔强。


四、踩过的坑(血泪史)

坑 1:无脑堆 -ngl 99,结果比 CPU 还慢

刚开始我不懂,以为 -ngl 99 能把所有层塞进 GPU。结果显存溢出,速度掉到 3.5 t/s,还不如纯 CPU 的 5.4 t/s。
教训-ngl 不是越大越好,要找到“临界点”。对 P2000 来说,9B 稠密模型是 16 层,35B MoE 是 8 层,小模型可以到 99 层,hehe 你可以尽管这么写,它还真没这么多层。
当时的心情:就像你往一个已经满的杯子里继续倒水,水全洒了,你还以为是自己倒得不够快。

坑 2:只看生成速度,忽略 prefill

一开始我只盯着 tg128,后来发现 pp512 才是显存溢出的“晴雨表”。一旦 prefill 从 200+ 掉到 20 以下,说明显存已经爆了。
教训:两个指标都要看。prefill 暴跌是显存溢出的“早期警报”。
当时的心情:就像开车只看速度表,不看水温表,结果发动机开锅了。


五、最终配置方案(直接抄作业)

现在你有了多个选择,我重新整理了一张表,按照速度和能力排序:

模型 参数量 文件大小 最佳 -ngl 推荐 -ctk 生成速度 适合场景
Gemma-4-E2B 4.65B 3.18 GB 99 q8_0 33 t/s 极速响应、意图识别、简单问答
Qwen3.5-35B-A3B 34.66B 19.71 GB 8 q8_0 11.88 t/s 主力大脑,复杂推理、编程、Agent
Gemma-4-26B-A4B 25.23B 15.63 GB 8 q8_0 12.73 t/s 备选 MoE,略快,Google 风格

注:9B 稠密模型(8.17 t/s)已不作为主力推荐,仅作为对比基准保留。

我的个人推荐

  • 日常快速响应Gemma-4-E2B(33 t/s,闪电侠)
  • 复杂任务主力Qwen3.5-35B-A3B(11.88 t/s,最强大脑)
  • 尝鲜备选Gemma-4-26B-A4B(12.73 t/s)

启动命令示例(主力模型):

llama-cli.exe -m Qwen3.5-35B-A3B-Q4_K_M.gguf -ngl 8 -t 8 -c 131072 -np 2

小模型闪电侠

llama-cli.exe -m Gemma-4-E2B-Q4_K_M.gguf -ngl 99 -t 8 -c 32768 -np 4

省心小贴士:把常用命令存成 .bat 文件,每次双击就能启动。


六、总结:老卡不是不能战,而是要用对姿势

这次折腾让我彻底明白了几个道理:

  1. MoE 模型是老卡救星。35B MoE 在 5GB 显存上跑出了 11.88 t/s,远超 9B 稠密的 8.17 t/s,而且智商更高。放弃 7-9B 稠密,拥抱 MoE
  2. 显存溢出是性能第一杀手。宁可少 offload 几层,也不能让显存爆掉。-ngl 需要精细调优,而不是无脑拉满。
  3. KV Cache 量化(-ctk q4_0)是急救包。在显存临界时,它能挽救性能,避免崩溃。
  4. prefill 速度是显存溢出的早期预警。一旦 pp512 从 200+ 掉到 20 以下,赶紧降低 -ngl

最后,我想对还在用老旧显卡的朋友说:别急着扔,先试试 MoE 模型 + 精细调参。也许你的老卡还能再战三年,甚至五年。

至于我?
单位电脑我动不了(封条还在,钥匙没有),但自家用电脑我说了算。
我早就入手了 AMD AI HX370,统一内存架构,96GB 大内存,跑起 MoE 模型也是蛮爽的。最起码实现了token自由,养只微纳龙虾nanobot够用了,现在调试Hermes agent中。
但这张 P2000,目前看我会继续守着,而且现在有了 33 t/s 的 Gemma-4-E2B 和 11.88 t/s 的 Qwen3.5-35B-A3B,慢一点正好——你边喝咖啡边审,它边干边想,从容不迫。

老卡不死,只是凋零。而我们,还在折腾的路上。


附录:完整测试数据

点击展开所有原始输出(llama-bench 日志)
# Qwen3.5-9B Q4_K_M (稠密,基准对比)
ngl=0:  pp512 206.56, tg128 5.39
ngl=8:  pp512 213.02, tg128 6.52
ngl=12: pp512 217.43, tg128 7.30
ngl=16: pp512 222.21, tg128 8.17
ngl=99: pp512 43.74,  tg128 3.58

# Qwen3.5-35B-A3B Q4_K_M (主角)
ngl=0,  q8_0: pp512 158.85, tg128 9.60
ngl=8,  q8_0: pp512 171.10, tg128 11.88
ngl=8,  q4_0: pp512 180.45, tg128 12.01
ngl=10, q8_0: pp512 16.88,  tg128 10.21
ngl=10, q4_0: pp512 177.21, tg128 9.35

# Gemma-4-E2B Q4_K_M (小钢炮)
ngl=38, q8_0: pp512 812.98, tg128 33.11
ngl=38, q4_0: pp512 803.24, tg128 32.98
ngl=44, q8_0: pp512 797.07, tg128 33.04
ngl=99, q8_0: pp512 783.31, tg128 32.60

# Gemma-4-26B-A4B Q4_K_M (配角 MoE)
ngl=6,  q8_0: pp512 182.43, tg128 12.47
ngl=8,  q8_0: pp512 189.55, tg128 12.73
ngl=8,  q4_0: pp512 190.18, tg128 12.47
ngl=10, q8_0: pp512 22.83,  tg128 9.47
ngl=10, q4_0: pp512 191.72, tg128 8.65

后记

我们筛选两种类型的模型,是为了给 Agent 实现“快慢分工”——小模型(Gemma-4-E2B)负责秒回意图识别、简单问答;大模型(Qwen3.5-35B-A3B)负责慢慢推理复杂任务。慢一点正好,你边喝咖啡边审,它边干边想,一快一慢,相得益彰。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐