参悟llama.cpp中的Qwen3.6-35B-A3B - 凉快李某

文章目录

参悟llama.cpp中的Qwen3.6-35B-A3B - 凉快李某

有报道指出,懒人版:直接复制给LLM,“总结一下这篇文章讲了什么” 科技新闻。

MoE 的本质是将一个巨大的神经网络拆解为多个独立的子网络(专家,Expert),并配有一个“路由器”。

由于MoE架构中只有部分业内人士参与计算,因此可以显著减少每次推理时需要处理的参数量,从而提高推理速度。

参悟背景与起因

模型: Qwen3.6-35B-A3B 框架: llama.cpp (Build: 91c631b21) 硬件: 1 x RTX 3090 (24GB, 936 GB/s), 1 x Tesla T4 (16GB)

以上为纯以理解为目的的粗略估算,精准数值还是要认真学习对应架构、知识、源码才能算得出来。

门控注意力的KV Cache大小 (字节) = 层数 × 序列长度 × 每个 Token 的 KV 维度 × 2(K和V) × 字节数 30 * 262144 * 128 * 2 * 2 + 10 * 262144 * 256 * 2 * 2 = 6,710,886,400 字节 ≈ 6.25 GiB

参悟事件经过

以Qwen3.6-35B-A3B为例,

但是理论物理上限仍然高于同系列的Qwen3.6-27B模型,后者的参数量为27B,激活参数量为27B,fp16精度下每个token的推理需要处理约54GiB的数据,3090的显存带宽936 GB/s下,理论物理上限为 936/54 ≈ 17 T/s,远低于Qwen3.6-35B-A3B的156 T/s。

取决于上下文长度和注意力层的设计。

参悟各方回应

因此可以尝试IQ4_NL量化,或者,迎难而上,从其他角度解决这个问题。

有时候,我们不得不卸载部分权重和计算到CPU上。

llama.cpp: https://github.com/ggml-org/llama.cpp

参悟影响分析

太多了,可以直接跳到第4章。

用llama-server不断在不同的配置下部署模型,并在推理过程中观察显存占用情况,记录如下:

以3B为例,就算以fp16精度进行计算,完成一个token的推理也只需要处理约6GiB的数据,在3090 35.6 TFLOPS的算力下,理论上可以在不到1ms内完成一个token的推理。真正的算力瓶颈反而是其936 GB/s的显存带宽,其推理速度的物理上限就是 936/6 ≈ 156 T/s,而现实中还得考虑推理框架的效率、算力调度等因素,实际速度一定会明显低于这个上限。

参数总量:共 35B,其中激活参数为 3B 隐藏层维度:2048 Token 嵌入:248320(已填充) 层数:40 隐藏层结构:10 × (3 × (门控 DeltaNet → MoE) → 1 × (门控注意力 → MoE)) 门控 DeltaNet:

直接下载usloth量化的Qwen3.6-35B-A3B-UD-Q4_K_M.gguf,其大小为22.13GB,显然1张3090理论上刚好能装下。但如果你真的去部署就发现会OOM,因为:

为了用1张3090部署256K上下文的Qwen3.6-35B-A3B,有两种潜在的方向:

个人使用大模型往往用于Chat和Agentic Engineering,往往只关注3个指标:

Qwen3.6-35B-A3B: https://www.modelscope.cn/models/Qwen/Qwen3.6-35B-A3B

可以推算出:

忽略潜入层、预测层和MTP层等一次性层,只考虑循环了40层的(注意力+MoE)结构,Qwen3.6-35B-A3B的参数比例可以粗略估计:

幸好,llama.cpp提供了ctk/ctv参数来控制KV Cache的量化精度,从而在一定程度上缓解了这个矛盾。

当上下文很短的时候,Qwen3.6-35B-A3B的显存占用反而大于Qwen3.6-27B。这是因为显存占用主要由模型权重+KVCache+中间激活值组成,而KVC的占用量与上下文长度成正比,注意力层的设计也会影响KVC的占用量。

设40层注意力的总和参数规模为X,40层路由专家的总和参数规模为256Y,40层共享专家的总和参数规模为Z,则有:

这篇文章既是对一系列探究性实践的记录与总结,也是深入理解 MoE(Mixture of Experts)架构底层逻辑与 llama.cpp 部署机制的学习过程。

那么就只能尝试更高强度的量化,例如Qwen3.6-35B-A3B-UD-Q2_K_XL.gguf(12.29GB)或者Qwen3.6-35B-A3B-UD-IQ4_NL.gguf(18.04GB)。

当上下文很长的时候,Qwen3.6-27B的显存占用会超过Qwen3.6-35B-A3B,因为Qwen3.6-35B-A3B的注意力层参数规模远小于Qwen3.6-27B,KVC的占用量也远小于Qwen3.6-27B。此时KVCache成为了Qwen3.6-27B的主要显存占用来源,而Qwen3.6-35B-A3B即使在原生最大的256K上下文下,KVCache的占用量也只有约6.25GiB,相比于总权重数据量大35GiB不值一提。

这种心理往往会让人陷入精神内耗,而教员的实践论说了,想不通就先干。

对于我来说,理论分析最大的障碍不是知识本身,而是缺乏实践导致的就算完成了理论推算,也不敢相信自己推算的正确性。

一般来说,Q4_K_M量化能去的质量与性能的平衡,强度高于q4都会显著损失性能,强度低于q4则显存占用会显著增加。

这就让我们陷入了一个矛盾,如果我们想要更长的上下文长度,就必须要有更大的显存占用,但是我们想要更小的显存占用,就必须要有更短的上下文长度。

有了第三章采样的大量数据,我们可以先彻底忘记MoE架构,TransFormer理论,直接暴力拟合一个近似模型来预测显存占用和推理速度,成为近期热点话题。

声明:本文信息来源于相关渠道或网络,版权归原作者所有。如涉及版权问题请及时与本站联系删除。本文观点仅供参考,不代表本站立场。
天枢新闻网
天枢新闻网资深内容创作者,致力于为广大读者提供及时、准确、深度的新闻资讯与行业分析。
领域:科技 发布:2026-08-04