20 · PLE 为什么不加速每 token 读量才是 MCU 推理的速度真相English version:en/20-why-ple-does-not-speed-up.md本篇对应源码main/kmcu.c·docs/milestones.md目标把「完整配方MoE PLE 三值查表 tied head落地后为什么速度没变快」这件事讲清楚。上一篇 19 只验证了正确性本篇讲性能归因——PLE 换来的是什么、没换来的是什么。一、结论先行PLE 的收益在「容量/质量」不在「速度」。完整配方每 token 读量不降反略升预期速度 ≈ 旧 MoE甚至略慢。它解决的是「更大模型装不下」不是「更快」。二、速度由什么决定ESP32-P4 上 decode 是带宽受限PSRAM ~106MB/s每 token 耗时 ∝ 每 token 读量。每 token 读量 所有「每 token 必读」权重的字节数。分三类访问模式读量决定因素输出头全扫 vocab×dim最大vocab × dim × 量化位宽attention MoE 专家top-k 全读中dim × 层数 × 专家激活数embed 输入 / PLE 查表读一行可忽略一行三、每 token 读量对比理论每 token 读量旧 MoE独立 lm_headPLE 完整配方tied head输出头32002×312 q4 全扫~5MB~5MBattention MoE top-2 embed~0.4MB~0.4MBPLE core新增—~0.6MBPLE 三值表查一行 256B—忽略合计~5.4MB~6MBPLE 模型的每 token 读量不降反升多了 PLE core ~0.6MB输出头 5MB 原封不动。四、关键误区的澄清tied head 省的是存储不是读量很多人包括我们自己最初的直觉以为「tied head 输出头变小 更快」。错。存储tied 复用 embed 当 lm_head省掉一份独立 lm_head 的5MB flash 存储——这是真的省。读量输出头每 token 仍要全扫 32002×312的权重现在扫 embed 而不是独立 lm_head读的字节数一模一样——tied改变的是「扫哪个张量」不是「扫多少」。所以 tied head 只降低模型体积不降低每 token 读量。输出头 5MB 全扫的带宽墙原封不动。五、PLE 换来的到底是什么PLE 的「容量藏进 flash 查表」换的是容量不是带宽维度旧 MoEPLE 完整配方变化参数量32M64M41M 藏 flash 表↑ 2×输出头读量~5MB~5MB持平每 token 总读量~5.4MB~6MB↑ 11%质量ppl更高更低↑净效果容量 ×2、质量提升、速度持平略慢。这正是「更大模型又不慢」中「不慢」的真实含义——不是「更快」而是「加了 41M 参数每 token 读量几乎没涨」因为加在每 token 只查一行的表上。六、要真正「加速」得动输出头18 篇 已给过对标PFor 快是因为它把输出头做成了tied 三值 dim192 1.26MB而我们 tied q4 dim312 5MB4× 差距。所以真正加速的杠杆只有一个缩小输出头的每 token 全扫字节数vocab × d_model × 位宽。三条路手段效果现状缩小 d_model直接压 head舍不得dim312 是质量底线缩小 vocab直接压 head舍不得Mistral 32002head 三值化1.6bit压 2.5×全模型三值判否match 0.22215 篇三条路我们当前都主动放弃了为了质量/词表所以完整配方不加速是设计选择不是失败。七、结论PLE 不加速每 token 读量 ~5.4MB → ~6MB不降反略升输出头 5MB 全扫是瓶颈PLE 没动它。tied head 只省存储不省读量——这是最容易被误解的点。PLE 换的是容量41M 参数藏 flash 表每 token 只多读 256B→ 质量提升速度持平。要加速只能动输出头d_model/vocab/三值化但三条路当前都因质量/词表被放弃。「更大模型又不慢」的准确含义加了 41M 参数速度几乎不涨——这是「不慢」不是「更快」。最终速度数据仍需板端实测PIE 汇编 真实带宽墙PC 标量对拍测不出速度但理论读量已能定性判断预期 ≈ 旧 MoE 的 6.4 tok/s 量级略慢。对应源码文件关键符号 / 位置支撑本文哪部分main/kmcu.ckm_decode_step()二、速度由每 token 读量决定常驻路径main/kmcu.ckm_decode_step_stream()三、每 token 读量对比流式路径main/kmcu.ckm_fast_build_ex()四、tied head 只改展开策略、不改读量docs/milestones.mdM3-7二、逐层流式实测读量即带宽瓶颈docs/milestones.mdM3-11六、缩小输出头剪枝/量化被判否《Kestrel-MCU 手记》· 全系列 28 篇在 ESP32-P4 上从零训练并部署 32M~64M 参数 MoE 大模型5.7~6.4 tok/s源码、权重、训练脚本与全部文章开源可复现。仓库https://gitee.com/pei-xiaoguang/kestrel-llm-mcu · 觉得有用欢迎 Star
阅读完成 · 觉得有帮助?