Appearance
实验 20 · DeepSeek 模型专题 — 现代前沿架构与量化直觉
本实验解密一线前沿开源大模型的核心工程创新:MLA(多头潜在注意力)显存极限压缩、MoE 细粒度专家路由、SwiGLU 门控前馈网络,以及低比特量化(INT8 / FP8)的动态缩放机制。
网页即时交互实验一:SwiGLU 门控非线性激活机制
现代高效大模型(如 LLaMA、DeepSeek)普遍采用 SwiGLU 替换传统 ReLU / GELU。SwiGLU 引入两条并行的线性投影,其中一条经过 Swish 激活后作为“门控信号”与另一条按元素相乘:
滑动输入值,直观观察门控通路如何动态选择信息流动比例:
交互:SwiGLU 门控前馈层
普通 FFN 是「过一次激活」。SwiGLU 是「一路算内容,另一路算开关,然后逐元素相乘」。
Swish(xW) — 门(虚线)
xV — 内容(点线)
SwiGLU = 门 ⊙ 内容
ReLU(xV) — 老方案
ReLU FFN(d=4096):hidden = 16384,2 个矩阵,参数 134M
SwiGLU FFN:hidden = 10923(缩到 8/3 d),3 个矩阵,参数 134M
$$\text{Swish}_\beta(x)=x\cdot\sigma(\beta x),\qquad \text{SwiGLU}(x)=\text{Swish}(xW)\odot(xV),\qquad \text{FFN}(x)=\text{SwiGLU}(x)\,W_2$$
教学要点:把 β 拉到 8,Swish 几乎就是 ReLU —— 但 SwiGLU 曲线依然是平滑的、可正可负的, 因为它是两条曲线相乘。这种「乘法交互」让 FFN 能表达更复杂的特征选择, 代价是多一个矩阵(所以 LLaMA 把 hidden 从 4d 缩到 8/3·d 来保持参数量持平)。
网页即时交互实验二:对称量化与截断量化误差看板
在工业级推理部署与显存优化中,权重从 FP32 / FP16 压缩至 INT8 / FP8。通过计算绝对值最大值确定缩放因子(Scale),将连续浮点数映射到离散整数区间:
交互:量化的显存 / 精度权衡
量化就是把 float 权重塞进更少的比特里。省下来的显存,代价是舍入误差。
显存占用(GB)
FP16
14.0
INT8
7.0
INT4 (朴素)
3.5
INT4 (分组 RTN)
4.4
权重重建误差 RMSE(越低越好)
FP16
0.0000
INT8
0.0130
INT4 (朴素)
0.2224
INT4 (分组 RTN)
0.0926
$$\text{scale} = \frac{\max|W_{\text{group}}|}{2^{b-1}-1},\qquad \hat{W} = \text{scale}\cdot\text{round}\!\left(\frac{W}{\text{scale}}\right)$$
教学要点(试试关掉分组量化 + 拉高离群值):单个离群值会撑大整个 tensor 的 scale, 让其余权重使用很粗的刻度。较小的 group 能隔离离群权重,但会增加 scale metadata;本图按 每 32 个权重一个 float32 scale 计入体积。这里只演示 group-wise round-to-nearest, 没有实现 GPTQ 的 Hessian 误差补偿或 AWQ 的 activation-aware 搜索;两者请以本章正文和 Python 实验为准。
网页即时交互演练三:MoE Top-2 稀疏门控路由
在免安装的浏览器 WebAssembly 运行环境中,直接练习实现专家门控亲和度打分、Top-2 筛选与 Softmax 权重归一化:
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行交互实验指南
- 观察门控抑制:在 SwiGLU 中输入负值,观察门控分支如何平滑归零,抑制异常特征激活。
- 量化阶梯效应:调整量化比特数,观察低比特映射下的离散阶梯形状,直观理解为什么极低比特(如 2-bit)会导致困惑度(Perplexity)剧烈恶化。
本地动手实验与单元测试
在网页端建立数学与物理直觉后,回到本地运行你的 MLA 显存记账对拍与玩具级 GRPO 策略更新:
bash
cd <仓库根目录>
source .venv/bin/activate
export PYTHONPATH="$PWD/python"
# 运行 DeepSeek MLA / MoE 专题算法对拍测试
pytest python/tests/test_deepseek.py -v