Quadro P2000 5G 老卡跑 35B 大模型:从“鸡肋”到“真香”的调优实录
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=8、type_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 文件,每次双击就能启动。
六、总结:老卡不是不能战,而是要用对姿势
这次折腾让我彻底明白了几个道理:
- MoE 模型是老卡救星。35B MoE 在 5GB 显存上跑出了 11.88 t/s,远超 9B 稠密的 8.17 t/s,而且智商更高。放弃 7-9B 稠密,拥抱 MoE。
- 显存溢出是性能第一杀手。宁可少 offload 几层,也不能让显存爆掉。
-ngl需要精细调优,而不是无脑拉满。 - KV Cache 量化(
-ctk q4_0)是急救包。在显存临界时,它能挽救性能,避免崩溃。 - 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)负责慢慢推理复杂任务。慢一点正好,你边喝咖啡边审,它边干边想,一快一慢,相得益彰。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)