Skip to content

[2026-3] 一年多没玩本地部署了,重新回忆下

量化

Qwen3.5-35B-A3B-Q4_K_S 以这个模型为例

1、参数量 35B

参数量越大,智慧越高,1B 就是 10 亿

2、蒸馏

蒸馏(Distillation)注意这个英文,有的模型可能包含这个字眼

通过训练一个较小的模型(称为 学生模型)来模仿一个较大的、通常更复杂的模型(称为 教师模型)的行为。减小体积,提升速度。

例子:DeepSeek-R1-Distill-Qwen-7B-Q4_K_M

如果不蒸馏,则叫做 UD(Un-Distilled)

例子:Qwen3.5-35B-A3B-UD-IQ3_S

3、激活参数 A3B

对于混合专家模型(MoE)来说,可以设置推理时,启用所有参数的一部分

4、Q 量化

数字越小,模型文件越小,但脑力损失也越大

Q4 是最主流的,将 16 位参数压缩到 4 位

5、K 量化变体

K-Quants(K-量化)是 llama.cpp 作者开发的一种分组量化技术:

允许对不同层使用不同的量化位深,K 后面的字母(S/M/L)表示量化块大小 - S = small,使用更小的量化块,精度更高但文件更大 - M = medium - L = large,块更大,精度稍低但文件更小

可以认为是 Q4 量化上的具体等级,分为大中小

6、IQ 量化

和 K-Quants 是并列的两种量化方法

IQ 是比 Q 更激进的量化方式,如果 Q 不行,就考虑 IQ,专门优化了某些层,推理速度可能更快

7、FP8

使用 8 位浮点数来表示权重或激活值,正常是 16 位

8、整数量化 Int4

使用 4 位整数来表示模型

一般消费级显卡跑大模型的主流格式

9、W8A8

这是一种混合标注方式,权重(Weight)量化为 8 位,激活值(Activation)也量化为 8 位

模型运行时,中间计算产生的“激活值”也会占用大量显存

W8A8 意味着整条计算链路都变“瘦”了,计算效率极高,且精度非常接近原版(FP16)

Int4 等量化方法同样会量化激活值

10、Instruct

表示不是 Base 模型,而是经过了微调(基本上都有微调吧,才能遵循指令去干活)

排序:

  • FP16 / BF16(基准,无量化)
  • FP8 / INT8 / W8A8(轻度量化:体积减半,精度几乎无损)
  • Int4 / W4A16(中度量化:目前性能与体积的最佳平衡点)
  • IQ3 / Q3(重度量化:体积仅剩原版的 1/5 左右,逻辑能力开始有明显下降)
  • Int2 / 1.5-bit(极重度量化:目前多处于实验室阶段,通常会有明显的语病或逻辑混乱)

KV Cache

一种降低计算复杂度的方法。不然,每次吐下一个词的时候,都要把所有的前面的词进行矩阵乘法,平方级复杂度

如果有 KV Cache,只需要根据后一个词的 KV,查前面所有词的 KV Cache

这几乎是必须的,同时这会加大显存的占用

部署

目前有两种格式

.safetensors.gguf

前者是 Hugging Face 社区推出的安全容器,用于取代传统的 Python 打包格式 Pickle

后者是 llama.cpp 引擎专用的格式,但是占用资源更少,更适合本地使用

部署有很多软件可选:

1、Ollama 一个羊驼图标,本身只是一个 CLI,但是有非常多的开源前端 WebUI。内核参考了 llama.cpp。据说 MACOS 要更换为 MLX 引擎了。

2、LM Studio 一个免费但闭源的软件,自带 GUI 窗口。它基于内核 lms 制作,内核是开源的

3、直接使用 llama.cpp,但是需要手动编译,以适配你的机型,达到最佳效果(其实 LM Ollama 都是基于 llama.cpp)

4、oMLX,仅限 mac 上,并且仅限 safetensor 的专用,追求极限性能的工具

5、vLLM,一个企业级多卡多用户的方案,引擎是自研的 PagedAttention

6、SGLang(Structured Generation Language)也是一个 LLM 推理引擎,并且比 vLLM 更复杂,还包括一些和 LLM 整个生命中各种调用并行的管理之类的。