7.2GB 跑 27B 大模型!三进制极限压缩,普通显卡能用来跑 Agent 吗?
一个 27B 参数的大模型,如果把 GGUF 权重压缩到只有 7.2GB,它到底还剩下多少能力?
这是我测试 Bonsai 2 之后最想搞清楚的问题。
因为单从体积来看,它确实非常夸张。
这次参与测试的两个模型分别是:
| 模型 | 量化 | GGUF 大小 | 实测运行显存 |
|---|---|---|---|
| Bonsai 2 27B | PQ2_0 | 约 7.2GB | 约 12.2GB |
| Qwen3.8-27B | Q4_K_M | 约 17.1GB | 约 23.8GB |
也就是说,Bonsai 2 的权重体积只有 Qwen Q4_K_M 的大约 42%,运行时显存占用也接近减半。
但模型压缩真正有价值的前提,不是“能装进去”。
而是:
装进去以后,它还能不能真正完成任务?
所以这次测试,我没有把重点放在显存和 Token 速度上,而是把两个模型直接扔进 Agent 工作流。
让它们自己读代码、分析问题、修改文件、运行测试、处理失败,然后决定什么时候结束任务。
我们到底在测什么?
测试环境尽量保持一致。
两个模型分别绑定独立 GPU 和独立 llama-server 端口,上下文统一为 131072,采样参数统一为:
temperature = 1.0
top_p = 0.95
top_k = 20
min_p = 0
Thinking = Medium
Agent 层统一使用 Pi CLI,并关闭额外 skills、extensions 和 prompt templates,只开放标准的读文件、修改代码、执行命令等开发工具。
测试不是简单问答,而是分成两个阶段。
第一阶段先确认模型的基础能力有没有因为极限量化出现明显损失。
第二阶段再把它们放进真正的代码项目里,看 Agent 能不能稳定把任务做完。
第一阶段:7.2GB 并没有出现明显的“智力塌缩”
前四道题分别覆盖:
逻辑推理、知识理解、严格格式遵循,以及约 90K Token 的长上下文信息定位。
结果非常整齐:
| 任务 | Bonsai 2 | Qwen3.8 |
|---|---|---|
| R1 逻辑推理 | PASS | PASS |
| K1 知识理解 | PASS | PASS |
| I1 严格指令遵循 | PASS | PASS |
| L1 90K 长上下文 | PASS | PASS |
尤其是 L1。
实际输入长度达到了 90,610 Tokens,真正需要的信息被埋在大量相似内容中。两个模型最终都成功找到了目标,没有在长上下文里迷失。
这至少说明一件事:
PQ2_0 这种极端压缩,并没有让 Bonsai 2 在基础推理、信息召回和长上下文任务上直接崩掉。
如果测试到这里结束,我甚至很容易得到一个结论:
7.2GB 和 17.1GB,好像没什么明显差别。
但真正有意思的事情,是从代码 Agent 开始发生的。
一进入 Agent,两个模型开始表现出完全不同的性格
代码任务和普通问答最大的区别是:
模型不是给出一个答案就结束。
它必须经历:
理解项目
→ 阅读文件
→ 判断问题
→ 修改代码
→ 执行测试
→ 根据结果继续调整
→ 判断任务是否完成
这时候,“会不会做”只是其中一部分。
另外一个非常重要的能力是:
什么时候应该停。
第一阶段很快就暴露出了这个问题。
C1 是计费引擎 Bug 修复。Bonsai 成功完成,而 Qwen 当时因为工具执行异常最终撞上超时。
C2 则反过来:Qwen 很快完成,而 Bonsai 的代码其实已经接近正确,但它继续检查、继续执行,最终超过了严格的 Agent Step 上限。Phase 1 的 C1、C2、P1、A1 已经明显表现出两个模型不同的收敛方式。
这时候我意识到:
TIMEOUT 并不等于不会做。
至少要区分两种情况:
一种是真的没找到正确方案。
另一种是方案已经正确,但模型不知道自己什么时候应该收工。
因此第二阶段,我把复杂任务单独重新跑了一遍。
Phase 2:把 Agent Budget 放宽以后发生了什么?
第二阶段只重新测试四个真实代码任务:
C1:计费引擎 Bug 修复
C2:跨文件订单聚合重构
P1:CSV 流式导出服务
A1:并发库存扣减 API
并根据任务复杂度,把最大 Agent Steps 放宽到 20~30 步。
最终结果:
| 任务 | Bonsai | Qwen |
|---|---|---|
| C1 | 13 steps / 159.6s / PASS | 5 steps / 39.2s / PASS |
| C2 | 14 steps / 105.5s / PASS | 7 steps / 76.8s / PASS |
| P1 | 26/25 / 551.6s / TIMEOUT | 7/25 / 66.8s / PASS |
| A1 | 19/30 / 226.3s / PASS | 15/30 / 175.7s / PASS |
这里真正值得看的,不是简单的 3:4。
而是它们怎么完成任务。
C1:代码都能修,但路径差得非常大
C1 里面有三个典型 Bug。
一个是把 float 转换为 Decimal 导致货币精度问题;一个是折扣和计税顺序错误;还有一个是退款边界判断错误,导致全额退款被拒绝。
Qwen 的处理非常直接。
它大致走的是:
读代码
→ 验证判断
→ 修改三处问题
→ pytest
→ PASS
总共只用了 5 Steps,39.2 秒。
而 Bonsai 用了 13 Steps,159.6 秒。
它也正确找到了问题,但修改以后还继续检查 Decimal 的舍入行为、构造新的边界用例、再次执行验证,最终才结束。
两边最终代码都正确。
区别不是能力有没有。
而是:
Qwen 在寻找“任务完成条件”,Bonsai 在不断寻找“还有没有可能出问题”。
这两个目标其实并不完全一样。
P1:今天最能说明问题的一道题
P1 是一个 CSV 流式导出服务。
任务涉及 HTTP 服务、流式输出、CSV 转义以及客户端连接生命周期等问题。
Qwen 只用了:
7 Steps
66.8 秒
406 Thinking Tokens
直接 PASS。
而 Bonsai 发生了一件非常典型的事情。
它完成主要功能以后,没有结束。
它继续启动服务、继续验证输出、继续测试边界、继续确认 CSV 行为。
最终:
26 / 25 Steps
551.6 秒
11,383 Thinking Tokens
因为超过了 25 步限制,Benchmark 按规则必须记录:
TIMEOUT
但是测试结束以后,再运行 hidden validator:
代码能够通过。
也就是说:
Bonsai 把题做对了,却因为继续工作,把一个原本应该成功的任务变成了 TIMEOUT。
这一题几乎把 Bonsai 当前最明显的 Agent 问题完整暴露了出来。
A1:复杂任务它不是不会做
A1 是整个测试中最复杂的一题。
它需要处理 SQLite 并发库存扣减,既不能出现负库存,又需要应对高竞争状态下的锁冲突。
第一阶段严格限制 Agent Steps 时,两个模型都没完成。
第二阶段放宽到 30 Steps 后:
Qwen:
15 Steps
175.7 秒
PASS
Bonsai:
19 Steps
226.3 秒
PASS
Qwen 使用事务和重试处理并发问题。
Bonsai 则进一步采用了原子条件更新等方式保证库存不会被扣成负数,最终两边都通过并发验证。
这道题很重要。
因为它说明:
第一阶段的 TIMEOUT,并不能简单解释成“这个模型没有能力做复杂 Agent”。
当任务预算合理以后,Bonsai 确实能够完成这种多步骤工程任务。
真正拉开差距的,是 Thinking Token
如果只看最后生成的代码,很多任务其实看不出那么大的区别。
但把整个 Phase 2 的 Thinking Token 统计出来以后,情况一下变得非常清楚。
四道复杂任务累计:
Bonsai 2
22,831 Thinking Tokens
Qwen3.8
3,568 Thinking Tokens
Bonsai 大约是 Qwen 的:
6.4 倍
这个数字基本解释了前面所有现象。
Bonsai 并不是生成速度慢。
恰恰相反,在很多纯 Decode 场景里,它的生成速度甚至更高。
问题是它生成得太多了。
以 C1 为例:
Bonsai:4372 Thinking Tokens
Qwen: 299 Thinking Tokens
P1 更夸张:
Bonsai:11383
Qwen: 406
所以 Agent 的实际效率不能只看:
tokens / second
还要看:
完成同一个任务
到底需要生成多少 Token
到底需要多少 Agent Steps
一个模型即使每秒生成得更快,如果为了完成同一个任务需要多思考五六倍,最终端到端耗时依然可能更长。
所以 Bonsai 到底损失了什么?
这次测试下来,我觉得一个很容易产生的误解可以先排除:
7.2GB 并没有把一个 27B 模型直接压成“只能聊天的小模型”。
至少在这套测试中,Bonsai 能完成:
长上下文信息检索、逻辑任务、代码 Debug、跨文件重构、API 开发以及并发数据处理。
它真正明显落后于 Qwen 的地方,是 Agent 收敛能力。
从完整 Session 可以看到,Bonsai 很喜欢自我审查。
代码修改完成以后,它经常不会马上结束,而是继续构造测试、验证假设、寻找潜在边界问题。
Qwen 则明显更加“任务导向”。
找到问题、修改、测试。
如果测试通过,而且需求已经满足,就结束。
报告里统计出的两种行为模式也非常明显:Bonsai 更倾向于高密度自检与反证,而 Qwen 则倾向于利用工具反馈快速推进任务。
这并不能简单理解成谁“更聪明”。
它更像是两种不同的 Agent 行为策略。
7.2GB 真正带来的价值是什么?
Bonsai 最吸引人的地方依然是体积。
Qwen3.8-27B Q4_K_M 的 GGUF 大约 17.1GB。
Bonsai PQ2_0 只有 7.2GB。
权重体积减少接近 58%。
这意味着 27B 级模型的部署门槛被明显降低。
不过这里必须强调:
7.2GB 模型文件,不等于只需要 7.2GB 显存。
实际运行还包括:
KV Cache
Context Length
运行时 Buffer
Batch
后端本身的显存开销
本次测试中 Bonsai 的实际运行显存大约是 12.2GB,而 Qwen 约 23.8GB。
所以它真正改变的是:
以前需要接近 24GB 显存才能舒服运行的 27B 级模型,现在开始有机会进入 12GB~16GB 这一档消费级设备。
这可能比单纯“跑分提升几个百分点”更有现实意义。
最终结论:7.2GB 保住了能力,但还没有保住 Agent 效率
如果只看前四个基础任务,我可能会说:
Bonsai 和 Qwen 的差距并不明显。
如果只看第一阶段的 TIMEOUT,又很容易得出另一个结论:
Bonsai 做复杂 Agent 不稳定。
但把第二阶段完整跑完,再结合 Agent Session 和 Thinking Token 数据以后,更准确的结论是:
Bonsai 2 并没有表现出明显的“极端量化导致复杂能力消失”。
它能理解任务,也能写出正确代码。
真正明显的代价,是:
更多 Thinking
更多 Agent Steps
更长执行路径
更高的超时风险
更弱的停止判断
而 Qwen3.8 Q4_K_M 的优势,则不是“它能做而 Bonsai 不能做”。
而是:
它更容易在正确的时间结束任务。
这对 Agent 非常重要。
因为真正进入生产环境以后,每一次无意义的继续思考、每一次重复测试、每一次多余工具调用,最终都会转化成:
Token、延迟、算力和失败概率。
所以这次测试让我对 Bonsai 2 的认识发生了一个变化。
它当前最值得解决的问题,可能已经不是:
“7.2GB 以后还够不够聪明?”
而是:
“已经足够聪明以后,怎么让它少想一点,并且知道什么时候该停?”
这可能才是三进制大模型真正走进 Agent 场景之后,下一阶段最值得关注的问题。
测试边界
最后需要说明,这并不是一个能够代表所有场景的通用 Benchmark。
测试使用固定模型量化版本、固定 Medium Thinking、固定 Pi CLI Agent、固定任务集和固定硬件环境。
因此这些数据更适合回答:
在相同 Agent 框架和接近相同配置下,这两个模型完成真实任务时表现出了什么差异?
而不是简单得出“哪个模型绝对更强”。
但至少从这次测试来看,一个结论已经比较清楚:
7.2GB 的 27B,不只是能跑。
它是真的能干活。
只是目前,它还需要学会一件 Agent 非常重要的能力:
做完以后,停下来。