【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示

罗西的思考 · 软件开发

原创 罗西的思考 2026-11-04 21:15 北京 【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示 0x00 文件信息 0x01 KDA核心数学 1.1 ShortConv: 因果 depthwise 短卷积 1.2 SiTU‑GLU: 有界激活函数 (Eq. 12) 1.3 KDA 递推方程 (Eq. 1) 1.4 有界衰减 (Eq. 5) 1.5 分块并行 (Eqs. 3‑4) 1.6 KCP 前缀扫描 (§5.1.2) 1.7 KimiDeltaAttention 完整层 1.8 3:1 KDA/MLA 调度 0x02 KDA 实现了哪些功能 2.1 覆盖的源模块 (5 个) 2.2 覆盖的测试(90 个测试函数) 2.3 15 个 Tab 功能清单 0x03 演示实现思路 3.1 整体架构 3.2 核心设计决策 3.3 测试→Tab 映射逻辑 3.4 环境与路径 0x04 每个 Tab 的使用说明 Tab 1: ShortConv 感受野 vs 延迟误差 Tab 2: ShortConv 恒等初始化 Tab 3: ShortConv 因果性 Tab 4: SiTU‑GLU 激活曲线对比 Tab 5: SiTU‑GLU 饱和区梯度 Tab 6: SiTU‑GLU 离群点回归 Tab 7: KDA 原理 (4格) Tab 8: 递推 vs 分块等价 Tab 9: 有界 vs 无界衰减 Tab 10: v1 vs v2 门控 Tab 11: KCP 前缀扫描 Tab 12: KDA Module 形状与缓存 Tab 13: 单步匹配递推 Tab 14: 诊断指标 Tab 15: 3:1 调度可视化 0xFF 参考 本文是对项目 Gradio Demo 的解释说明。 0x00 文件信息 项目 值 文件 gradio_kda_demo.py 依赖 Gradio 6, PyTorch, Matplotlib, NumPy 运行 python experiments\models\llm\kimi_k3\modules\kda\gradio_kda_demo.py 端口 http://localhost:7861 注: 项目 https://github.com/RossiLH/Model-Viz 和系列博客是我的一个尝试,也是我学习的过程。不确定是否满足读者的需求,我自己会反思改进,也希望大家提出宝贵意见。 涉及 KIMI K3,DeepSeek V4,PI0.5,PI0.7 等模型。后续可能会跟踪新模型。 全 CPU 复刻,不涉及 GPU,也不涉及大规模训练(这是另外一个庞杂深邃的领域)和硬件。 模型的组件尽量是原始大模型的缩小版,如果组件没有开源版本,则用近似组件替代。 会解释每个组件在解决一个什么问题、这个问题难在哪、为什么只能这么解、解法的原理是什么,以及组件之间如何咬合成一个整体。重点不是记名词,而是理解一条主线。 每个主要组件都有可直接运行的 Gradio demo——无需 GPU。另有若干可视化脚本( plot_*.py ),可生成静态图。 所有文件行号基于本地源码快照;源码后续变化时,行号可能移动,但函数名和调用关系仍可作为定位入口。 为了保证每个文章可以尽量独立成文,所以有些内容会在不同文章中都存在,可能在系列层面上存在冗余,还请大家理解。 0x01 KDA核心数学 KDA (Kimi Delta Attention) 是 K3 的线性注意力机制,核心思想是用 固定大小状态矩阵 + delta‑rule 纠错 + 有界衰减 实现O(1) 状态、O(T) 并行的序列建模。 1.1 ShortConv: 因果 depthwise 短卷积 K3 的 MLA 层是 NoPE (无位置编码),ShortConv 给每个通道注入局部位置信息: out [t, c] = Σ_{lag= 0 }^{K‑ 1 } w[c, θ, lag] · x[t − lag, c] + bias[c] 因果性:只看当前 + 过去 K‑1 个 token (左侧补零) 恒等初始化: weight[:, θ, ‑1] = 1 , 其余为 0 → 初始为 no‑op, 不扰动 KDA 衰减动力学 单步 decode: 维护 K‑1 长度的滑动窗口, O(K) 逐 token 更新 1.2 SiTU‑GLU: 有界激活函数 (Eq. 12) softcap (x, β) = β · tanh (x / β) SiTU‑ GLU (g, u) = softcap (g, β_g) · σ(g) · softcap (u, β_u) 有界性 : |SiTU‑GLU| ≤ β_g · β_u = 4 × 25 = 100 < FP8_

查看原文