并非所有比特都是生而平等的

是时候探索为什么CPU和GPU在处理量化数据方面有着根本不同的特性,以及byteshape.com的研究团队如何揭露了量化世界中的一个静默丑闻:某些格式偷偷地为GPU优化,它们会悄悄地破坏你的CPU性能。

并非所有比特都是生而平等的
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI工具导航 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

上次,我们揭示了一个令人不安的真相……更小的模型文件并不自动意味着更快的推理。

如果你尝试了我建议的Q4_K_M实验,看到你的tokens-per-second飙升,恭喜你——你已经逃离了量化陷阱。

但如果你仍在疑惑为什么在你的i5或i7笔记本上,一个"更智能"的2位格式可能比一个"更笨"的4位格式运行得更慢,你问对了问题。

今天,我们要在这个话题上深入下去。

顺便说一句,这是系列文章"并非所有量化都是生而平等的"的第2部分。你可以在这里找到第1部分。

是时候探索为什么CPU和GPU在处理量化数据方面有着根本不同的特性,以及byteshape.com的研究团队如何揭露了量化世界中的一个静默丑闻:某些格式偷偷地为GPU优化,它们会悄悄地破坏你的CPU性能。

别担心!不需要内核代码或矩阵数学。这是关于为什么你的硬件在量化战争中选了一边,以及如何确保你在获胜的队伍中的故事。

1、快速回顾:到目前为止的情节

如果你错过了第1部分,这里是简单回顾:

  • GGUF是量化模型的通用格式,但并非所有量化方法都是平等的
  • 每权重的位数不等于每秒token数:解量化开销可能抵消文件大小的节省
  • Q4_K_M 是CPU安全的默认选择:平衡的质量、CPU优化的内核
  • IQ格式(如IQ2_XXS)在CPU上可能更慢,尽管文件更小

最后,我们要回答这个燃烧的问题:为什么?

无

2、硬件个性:CPU vs GPU

让我们从一个比喻开始。想象你让两个不同的助手来整理一个图书馆:

你的CPU是一个一丝不苟的图书管理员

  • 一次只喜欢一个任务,但要彻底完成
  • 擅长复杂的顺序逻辑
  • 有一个小但快速的桌子(缓存)用于常用的书
  • 如果你一次扔太多不相关的任务给它,就会陷入困境

你的GPU是一个仓库机器人军队

  • 喜欢并行做同样的简单任务,数千次
  • 不关心复杂性——只要给它相同的、重复的工作
  • 有巨大的地板空间(VRAM),但单个机器人较慢
  • 如果任务不完全统一就会浪费能源
小关键洞察:量化格式触发不同的"内核"(代码路径)。某些内核匹配图书管理员的工作流程。其他的只有机器人军队才能理解。

3、为什么这对量化很重要

当你的模型运行推理时,它必须即时解量化压缩的权重。你选择的格式决定了如何进行解压:

无

用通俗的话说:IQ格式做"更智能"的压缩,但这种智能需要CPU周期

4、IQ vs KQ:量化家族世仇

让我们认识两个主要派系。

4.1 KQ(K-Quant):CPU可靠的伙伴

K-Quant格式使用分组量化策略。保持类比的话,这就像把书打包到贴标签的盒子里:

模型权重
      │
      ▼
┌─────────────────┐
│  超级块         │ ← 子块组
├─────────────────┤
│  ┌───────────┐  │
│  │子块1      │  │ ← 每个16-32个权重
│  │• 缩放 s₁ │  │ ← 简单的缩放因子
│  │• min m₁   │  │
│  └───────────┘  │
└─────────────────┘

每个子块有自己的缩放因子,所以解压快速且可预测。CPU喜欢这种:简单的数学、缓存友好的访问模式。

4.2 IQ(重要性量化):GPU的秘密武器

IQ格式将压缩更进一步。它们使用重要性矩阵来决定哪些权重最重要,然后应用非线性量化:

模型权重
      │
      ▼
┌─────────────────┐
│ 重要性矩阵      │ ← 预计算的"哪些权重重要"
├─────────────────┤
│ 非线性代码      │ ← 复杂的查找表
├─────────────────┤
│ 额外的数学步骤  │ ← 每个权重更多CPU周期
└─────────────────┘

I-quants如IQ2_XXSIQ2_XSIQ2_SIQ3_XXSIQ3_XSIQ3_SIQ3_MIQ4_XSIQ4_NL是GGUF量化格式,瞄准在低位率下尽可能保持更多质量。

IQ家族围绕基于重要性矩阵的重建来定义:权重使用超级块缩放和重要性矩阵来恢复。——来自Benjamin Marie的Kaitchup

与K-quants相比,I-quants的主要吸引力通常是每字节的质量,尤其是当有好的imatrix可用时。这种优势是真实的,但它在整个家族中并不均匀。

IQ quants对GPU很出色:大规模并行可以一次处理复杂的查找。但对CPU呢?你是在让图书管理员为每本书解谜题。

无

5、Byteshape的 smoking gun

byteshape.com的团队不仅专注于理论:他们做了基准测试。他们的发现很 stark:

在GPU设置上,低位KQ内核明显不如IQ内核高效。因此,我们构建了偏向IQ量化的GPU变体。" [byteshape GPU博客]

翻译:如果你有GPU,IQ格式可能值得。

但接下来是CPU结果:

与我们在GPU设置上观察到的行为相反,KQ内核在Intel CPU上优于IQ内核。因此,我们建议如果计划在CPU上运行,先尝试KQ模型。" [byteshape CPU博客]

如果你纯CPU用户,你下载了一个IQ2_XXS模型因为"2位听起来很小,你没有节省时间:你给你的CPU一个更难解的谜题。

这里有来自上面提到的Benjamin Marie的Substack的观点:

在现代CPU和GPU上,K-quants通常在吞吐量上匹配或超过传统格式,因为你为相同的质量移动更少的字节。

那后缀(S、M和L)呢?在量化过程中,我们跨张量编码"混合级别"。Q4_K的示例:

  • Q4_K_S):几乎全部保持在4位
  • Q4_K_M):选择性地为更敏感的张量(例如,注意力值投影或最终层)提高精度,使用5-6位
  • Q4_K_L更大):比Q4_K_M更宽松

有效位/权重相应增加,在重要的地方买回质量。在实践中(对你的决策):

Q4_K_M是4位部署的广泛有用的默认选择(对大模型Q4_K也可以)。

Q5_K_M是接近许多任务难以察觉降级的高质量设置。

Q6_K适用于你想要"几乎无损"行为但仍想要内存节省的情况。

请记住,对于大多数模型,你不会在S、M和L变体之间看到很大的质量差异除非在处理小模型(比如说<8B模型)。

6、真实数字:这对你的笔记本意味着什么

让我们具体化。以下是我为Qwen3.5-2B模型在我的联想X260(我的2016年老笔记本,Intel Core i5 CPU,16GB RAM,Windows 11)上收集的基准测试。你的结果会不同,但相对差异是成立的。

无

这个图表告诉我们什么?

  1. 最小的文件(IQ2_XXS)是最慢的——只有Q4_K_M速度的60%
  2. Q4_K_M达到了最佳点:最快的TPS高质量(96%)
  3. 用更大的(Q8_0)对速度没有帮助——只是用更多RAM换取最小的质量提升

这是我的非主流观点:

如果你在CPU上运行,忽略"2位"的炒作。你用速度换取了你不需要的节省。

想想看:

  • Q4_K_M模型约1.3 GB。
  • IQ2_XXS模型约0.7 GB。
  • 你"节省"了0.6 GB。

但你损失了近2 tokens每秒

0.7 GB磁盘空间值得每次响应等待2倍的时间吗?对于我们大多数人:不值得

我们使用的是相对较小的模型(2B参数):如果你用3B或4B模型试试,损失会更高(在下一节关于"格式交换"实验中你会看到)!

这里是我在小型格式中的最佳模型选择:

  • mistralai_Ministral-3-3B-Instruct-2512-Q4_K_M
  • Qwen3-4B-Instruct-2507-Q3_K_S-2.77bpw
  • granite-4.0-h-tiny-Q4_K_M

随便在你自己的PC上测试它们。

什么时候应该使用极端量化?

只有在两种情况下:

  1. RAM是你绝对的瓶颈(<6GB可用):那么Q3_K_SQ2_K可能是必要的才能容纳模型。在我的测试中Q3_K_S有很好的速度(但质量较低)
  2. 你正在离线批量处理,不在乎延迟:那么更小的文件=内存中更多模型

否则?坚持使用KQ格式。

"把内存当作约束,而不是目标。一旦模型适合你的设备,重要的是权衡曲线:TPS vs 质量。" [byteshape GPU博客]

换句话说:不要为文件大小优化。为你的实际体验优化

7、试试这个:"格式交换"实验

这是一个10分钟实验,可以在CPU/GPU分歧中看到实际操作(即使你只有CPU):

1) 下载同一模型的三个版本:

2) 运行模型并在localhost:8080打开浏览器 使用这个命令从终端: .\llama-server.exe -m .\models\Ministral-3-3B-Instruct-2512-UD-IQ2_XXS.gguf -t 2 -n 250 — reasoning-budget 0 -c 4096

3) 在聊天框中粘贴这个提示:用简单的术语解释CPU和GPU推理的区别

4) 在一个简单表格中绘制你的结果:

格式      | 文件大小 | TPS   | 质量估计
----------|-----------|-------|-----------------
IQ2_XXS   | 1.1  GB   | ___   | ~89%
Q4_K_M    | 2.15 GB   | ___   | ~96%
Q4_K_S    | 2.05 GB   | ___   | ~94%
Q8_0      | 3.65 GB   | ___   | ~99%
问问你自己:哪种格式给我的用例提供了最佳体验?

为什么选Ministral-3B?

在我看来,这个模型是你目前能找到的最佳3B LLM。它能理解用户意图,擅长编码,已准备好函数调用。

而且它在CPU上以离散速度运行(自己试试吧!)

我用Ministral-3-3B-Instruct-2512-Q4_K_S运行了一个测试,我得到了……4.1 tokens/秒

8、但如果我有GPU呢,即使是一个普通的?

我将在第4部分(尚未准备好)介绍使用llama.cpp二进制文件的Vulkan驱动

在第1部分之后,Isaac Tigges,一位Medium读者,与我分享了他名为A.T.L.A.S(自适应测试时学习和自主专业化)的个人项目。Isaac是弗吉尼亚理工大学的商业管理学生。他使用llama.cpp完全本地运行这个项目:

整个东西使用KV缓存Q4_0量化运行,使用0.6B草稿模型进行推测解码,一切都容纳在16GB VRAM的约12.9GB中……

别担心:我们在第1部分介绍了KV缓存量化,我们很快会讨论推测解码

但A.T.L.A.S到底是什么?

A.T.L.A.S在一个消费级GPU上使用冻结的14B模型实现了74.6%的LiveCodeBench pass@1——从V2的36-41%提升——通过约束驱动的生成和自验证的迭代细化。前提:将一个冻结的小模型包装在智能基础设施中——结构化生成、基于能量的验证、自验证修复——它可以以一小部分成本与前沿API模型竞争。无微调,无API调用,无云。完全自托管——无数据离开机器,无需API密钥,无使用计量。一块GPU,一台机器。

你可以在这里看看:

GitHub - itigges22/ATLAS: 自适应测试时学习和自主专业化

无

9、接下来:你的个人量化指南针

所以你现在知道了为什么某些格式喜欢GPU讨厌CPU。但百万美元的问题仍然存在:

"我应该实际下载哪种格式?"

在第3部分——"选择你的毒药:量化格式友好指南",我们将通过以下内容消除噪音:

  • 一个简单的3问题决策树(RAM、上下文长度、耐心)
  • 按用例的格式推荐(聊天、编码、长文档)
  • 真正有帮助的快速调整(threadsmmapKV cache
  • "我只想让它工作"的Windows入门包

不再有"试试这个看看"。

在那之前:如果你的本地AI感觉很慢,检查文件名。如果它以IQ开头,你可能不小心给你的CPU一个突击测验而不是一个任务。

换成Q4_K_M。看它飞起来。然后回来告诉我你的TPS。


原文链接: Byteshape's discovery: not all bits are created equal

汇智网翻译整理,发表于2026-03-19