17 · MoE 与 PLE 正交共存:稀疏专家加逐层查表的完整实现

发布时间:2026/10/12 3:59:59

17 · MoE 与 PLE 正交共存:稀疏专家加逐层查表的完整实现 17 · MoE 与 PLE 正交共存稀疏专家加逐层查表的完整实现English version:en/17-ple-under-moe.md本篇对应源码tools/mistral_ple.py·tools/train_moe_ple.py·docs/moe_framework.md目标把 MoE 叠进 PLE完成「更大模型」的最终配方。前面几篇的 PLE 验证都在 dense FFN 上做esp32-ai 原始结构而我们的真实模型是 MoE。本章讲实现——MoEFFN 怎么加、MoE 与 PLE 怎么共存、验证怎么设计。一、为什么需要这一章前文已锁定的「更大模型」形态是三块拼图部件作用放置coreMoE 稀疏激活省带宽SRAMheadtied 小省全扫PSRAMtablePLE 三值查表承载容量flash但 PLE 的验证14 篇 / 16 篇都是在dense FFN上做的。我们的真实模型是MoE 8 专家所以「MoE PLE」的组合是否成立、实现怎么做是完整配方落地前的最后一块。二、实现MoEFFN在 esp32-ai 的model.py里把 Block 的 dense SwiGLU 换成 MoEFFNclassMoEFFN(nn.Module):def__init__(self,cfg):super().__init__()self.n_expertcfg.n_expert self.top_kcfg.top_k self.routernn.Linear(cfg.d_model,cfg.n_expert,biasFalse)hcfg.ffn_eifcfg.ffn_e0elsecfg.ffn_hidden self.expertsnn.ModuleList([SwiGLU(cfg,hiddenh)for_inrange(cfg.n_expert)])defforward(self,x):B,T,Dx.shape pF.softmax(self.router(x),dim-1)topk_val,topk_idxtorch.topk(p,self.top_k,dim-1)xfx.view(B*T,D)outtorch.zeros(B*T,D,devicex.device,dtypex.dtype)idx_ftopk_idx.view(B*T,self.top_k)val_ftopk_val.view(B*T,self.top_k)forkinrange(self.top_k):foreinrange(self.n_expert):selidx_f[:,k]eifsel.any():out[sel]val_f[sel,k].unsqueeze(-1)*self.experts[e](xf[sel])returnout.view(B,T,D)设计要点稀疏 top-k只对选中的专家算 FFN未选中的专家不参与 forward省计算、省带宽。ffn_e 独立于 ffn_hidden每个专家是独立 SwiGLUhidden 用ffn_e与 dense 的ffn_hidden解耦。router 算进 corerouter d_model × n_expert也是每 token 全算的 dense 权重自然归入 core 预算。三、PLE 与 MoE 的共存关键点MoE 和 PLE 在 Block 里是正交的互不干扰defforward(self,x,cos,sin,pleNone):xxself.attn(self.attn_norm(x),cos,sin)xxself.ffn(self.ffn_norm(x))# 这里 ffn 是 MoEFFN 或 SwiGLUifpleisnotNone:# PLE 注入在 FFN 之后gF.gelu(self.ple_gate(x))xxself.ple_norm(self.ple_proj(g*ple))returnxMoE 稀疏化 core 的 FFN→ 省带宽top-2 激活只算 2/8 专家PLE 加 table 承载容量→ 省 head25M 参数塞 flash 查表每 token 只读一行两者解决的是不同问题叠加不冲突。四、验证设计对比moe vs moeplecore-matched二分 ffn_e 使两者 core 都 ≈ 10MarmFFNffn_ecoretablemoeMoE8 专家 top-2819.99M0moepleMoE8 专家 top-2求解≈10M40.96M配置dim 312 / 10 层 / vocab 32002 / n_expert 8 / top_k 2TinyStories3000 步。五、结果PLE 在 MoE 框架下成立armcoretabletotalbest pplmoe9.99M019.98M5.84moeple9.99M40.96M60.94M5.35moe 5.84 → moeple 5.35 0.088 nats / 9.2% ppl 改善core-matched两者 core 都 ≈ 9.99MPLE 只多了 40.96M 的 flash 查表每 token 只查 10 行几乎免费PLE 在 MoE 框架下成立且收益比 dense 框架0.078 nats还略大六、结论完整配方验证通过「更大模型」的最终形态至此三块拼图全部用硬数据走通部件验证结果coreMoE 稀疏激活省带宽top-2 只算 2/8 专家tablePLE 三值查表0.088 nats三值 20× 压缩几乎无损headtied 小省全扫PLE 在 dense 框架成立0.078 nats16 篇PLE 在 MoE 框架成立0.088 nats本篇三值 table 几乎无损0.001 nats20× 压缩15 篇完整配方MoE core PLE table三值 headtied是「更大模型又不慢」的已验证正解。对应源码文件关键符号 / 位置支撑本文哪部分tools/mistral_ple.pyMistralPLEConfig配置n_expert/top_k/ffn_e/ple_dimtools/mistral_ple.pyMoEFFN二、实现MoEFFN 稀疏 top-k 专家tools/mistral_ple.pyDecoderLayer三、PLE 与 MoE 在 Block 中正交共存tools/train_moe_ple.py--top_k四、验证设计moe vs moeple 对照训练docs/moe_framework.mdffn_e五、结果PLE 在 MoE 框架下成立《Kestrel-MCU 手记》· 全系列 28 篇在 ESP32-P4 上从零训练并部署 32M~64M 参数 MoE 大模型5.7~6.4 tok/s源码、权重、训练脚本与全部文章开源可复现。仓库https://gitee.com/pei-xiaoguang/kestrel-llm-mcu · 觉得有用欢迎 Star
延伸阅读

更多相关文章

2026/10/12 3:54:59

stackChunkOop在Java堆内的内存布局与GC扫描机制剖析

stackChunkOop在Java堆内的内存布局与GC扫描机制剖析前言stackChunkOop在Java堆内的内存布局与GC扫描机制一、 stackChunkOop 在 Java 堆内的核心定位与数据结构二、 stackChunkOop 的物理内存布局剖析内存布局的关键系统工程细节:三、 栈帧序列化与 OopMap 的映射机…

2026/10/12 7:30:10

从零搭建轻量代码评审工具:架构设计与核心实现

1. 从零搭建代码评审工具:为什么我要造这个轮子第一次听到“open-code-review”这个说法,是在一次内部技术分享会上。当时团队里有人抱怨,代码评审这件事,工具换了一茬又一茬,流程写了一版又一版,但真正落地…

2026/10/12 7:30:10

美赛O奖论文解析与Python复现:从PDF逆推建模全流程

简介:这是2024年美赛特等奖O奖论文,题为“海七鳃鳗性别比例与生态系统稳定性”,面向数学建模参赛者和生态建模研究者。资源完整呈现了美赛优秀论文的结构:从问题重述、假设建立、模型设计到数值求解与敏感性分析。作者以海七鳃鳗可…

2026/10/12 7:30:10

从入门到进阶:打造生产级RAG问答系统,小白也能轻松掌握!

本文将带你深入了解RAG问答系统的构建过程,从基础逻辑版到高级检索版,逐步提升检索能力、问答能力和质量保障。内容涵盖检索强化、问答扩展、问答质量保障、通用工程、安全性工程和省钱工程等方面,帮助你打造一个稳定、高效、安全的RAG问答系…

2026/10/12 7:30:10

幻觉门控评分机制:提升大模型生成内容可控性的实战指南

前阵子在给一个生成式系统做输出质量治理的时候,我翻到内部代码仓库里躺着一个熟悉的名字——Harvey LAB-AA。这个项目从 v1.0 走到 v1.1,核心变化只有一个:引入了幻觉门控评分机制。听起来像是个小改动,但实际把整个生成链路的质…

2026/10/12 7:30:10

【项目编号:project31735】让闲置真正流转起来:Spring Boot 二手物品交易平台从商品发现到售后的完整实践Java + Spring Boot|二手商城|订单配送|售后|评论收藏|

让闲置真正流转起来:Spring Boot 二手物品交易平台从商品发现到售后的完整实践Java Spring Boot|二手商城|订单配送|售后|评论收藏|后台运营闲置交易Java / Spring Boot订单履约内容社区运营后台摘要&…

2026/10/12 7:25:10

手眼协同:机器人如何从看得见到抓得准

这两年AI圈最热闹的新闻,几乎都跟“会说话”有关:今天这个模型能写代码,明天那个模型能生成视频。但真正让我觉得变化已经发生的,不是这些喧闹的对话和生成,而是那些安安静静安装在物流仓库、工厂车间、手术台旁边的机…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/12 0:04:22

绝缘子缺陷检测数据集清洗与工业级训练实战指南

简介:本资源是面向电力AI研发人员、工业视觉工程师及智能巡检系统开发者的绝缘子缺陷检测专用YOLO格式数据集,解决无人机航拍场景下绝缘子破损、污闪、积雪等9类典型缺陷的精准识别与定位难题。数据集共2139张真实巡检图像(含训练/验证/测试集…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑