开源大模型里,GLM系列、Qwen系列、DeepSeek系列一直是关注度最高的几个方向。但最近读到Sebastian Raschka对Kimi K3架构的详细分析,发现这个系列在技术上走了一条不太一样的路。
|Kimi K3在多个benchmark上的表现接近同规模的Llama和DeepSeek模型,但在推理效率和显存占用方面有明显优势。对于一个需要在生产环境中部署大模型的团队来说,K3的架构设计值得仔细看一下。
K3的核心变化集中在三个方面:注意力机制的重新设计、MoE路由的优化、以及KV Cache的压缩方案。
先说注意力机制。K3采用了一种名为Multi-Query Latent Attention(简称MQLA)的设计。和标准的Multi-Head Attention不同,MQLA把Key和Value的维度压缩到了Query维度的1/8。
这带来的直接收益是显存占用。在推理阶段,KV Cache是最大的显存消耗源之一。对于128K上下文长度、批量大小为4的场景,KV Cache占用可以超过模型参数本身的显存。K3的MQLA设计把这个开销降到了约1/4。
具体到工程实现上,K3在推理时只需要缓存压缩后的潜在向量,而不是完整的Key/Value矩阵。这有点像DeepSeek之前提出的Multi-Head Latent Attention方案,但K3的实现更激进——压缩比例更高,同时在训练阶段加入了额外的重建损失来保证信息不丢失。
第二个值得关注的变化是MoE路由的优化。
K3的路由器(Router)采用了负载均衡路由,和DeepSeek V4/R1的做法类似,但在实现细节上有差异。
这里有个值得注意的工程决策。K3没有使用DeepSeek的那种细粒度专家拆分(将单个FFN拆成更小的子专家),而是保留了标准大小的专家单元,但通过动态Dropout来调节每个token激活的专家数量。这样做的结果是:推理时的计算量是可预测的——每层固定激活N个专家。
从部署角度看,这降低了推理引擎的调度复杂度。因为激活专家数量固定,不需要动态计算每个token应该激活多少专家。对于批处理推理场景,这种确定性带来的性能提升很明显。
但更值得关注的是K3的MoE训练策略。K3引入了Expert Affinity Scaling机制——在训练过程中动态调整路由器的输出scale,使得不同专家处理的数据分布更加均匀。这解决了MoE模型常见的"专家塌陷"问题——即少数几个专家处理大部分token,其他专家闲置。
数据上看,K3使用了训练过程中所有层的路由统计信息来微调Expert Affinity,而不只是最后一层。这个做法和小流量负载均衡里用全链路数据做决策的思路类似——只看出口的负载情况是不够的,中间节点的状态同样重要。
第三块变化在KV Cache压缩之外的另一条线上:**上下文长度的扩展。
K3原生的上下文长度为128K token,但在实际测试中可以通过RoPE调整扩展到256K甚至更长。这依赖于K3的长期依赖建模能力——在预训练阶段就引入了更长序列的训练。
对开发者而言,这意味着K3很适合做需要大量上下文的场景:代码仓库级别分析、长文档RAG、会话历史很长的对话Agent。
不过从工程角度看,K3最吸引我的还不是这些benchmark数据,而是一个小细节:**模型支持MoE路由信息的导出。
什么意思呢?你可以在推理时拿到每个token在每个transformer层被路由到了哪些专家,以及每个专家贡献了多少logits。这听起来像是个调试功能,但实际上对企业应用非常有用——你可以做推理可解释性分析、专家级别的微调、以及更精细的成本追踪。
对比来看,DeepSeek V4也有类似的思路,但K3把这个信息暴露得更加完善。
总的来说,K3在技术路线的选择上体现了一个判断:在模型规模和推理成本之间,K3选择了更激进的压缩方案,换取更低的部署门槛。对于需要在有限硬件资源上部署大模型的应用场景来说,这个取向是合理的。
当然也有权衡。高压缩比例意味着在某些需要精细区分语义的任务上,模型的表现可能不如未压缩的版本。从实际使用结果看,K3在数学推理和代码生成任务上表现不错,但在某些细粒度的自然语言理解任务上,和未压缩的同等规模模型有差距。
不过这里的关键是:K3做的是压缩,不是剪枝。压缩保留了完整的模型参数,只是推理时的表示更紧凑。这意味着在精度可以接受的场景下,部署成本的降低可能是决定性的。
关于维基框架
维基框架关注企业应用开发中的长期维护问题。在实际项目中,业务系统往往同时涉及权限、微服务、接口协议、部署环境等复杂因素,因此我们希望提供一套更容易扩展和维护的基础框架。
官网:framewiki.com
Gitee:gitee.com/wiki-framework
GitHub:github.com/wiki-framework
示例项目:gitee.com/cdkjframework/framewiki-example
📄 许可证:MulanPSL-2.0(木兰宽松许可证,第2版)