From 386069526a605ff1a4ac4611403de4ed722520ea Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 14:30:06 +0800 Subject: [PATCH] =?UTF-8?q?MCTLASS=20/=20Fused=20MoE=20=E7=AE=97=E5=AD=90?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E5=8F=82=E8=80=83=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../赛题说明.md | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md index a710761..9098d59 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md @@ -28,6 +28,38 @@ 聚焦 MoE 模型中的稀疏专家计算,优化 Fused MoE 算子的执行效率。 -参考知识:待更新 +参考知识: + +**1、混合专家模型 MoE** + +参考链接:[https://huggingface.co/blog/zh/moe](https://huggingface.co/blog/zh/moe) + +混合专家模型(Mixed Expert Models,简称 MoE)是一种稀疏激活的模型结构。与稠密模型不同,MoE 在前向计算时只激活部分参数,从而在相近的计算预算下,获得更大的模型容量和更快的收敛速度。这也是当前大模型扩展参数规模的主流路径之一。 + +MoE 是一种基于 Transformer 架构的模型,由两个关键部分组成: + +* **稀疏 MoE 层**:这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。 + +* **门控网络或路由**:这个部分用于决定哪些令牌 (token) 被发送到哪个专家。例如,在下图中,“More”这个令牌可能被发送到第二个专家,而“Parameters”这个令牌被发送到第一个专家。有时,一个令牌甚至可以被发送到多个专家。令牌的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。 + + +![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/r4mlQ5b7084Ndlxo/img/fe41ddaa-b2b2-4b30-bcdb-452c3ecfb138.png) + +MoE 的主要优势体现在预训练和训练阶段的算力效率上,但在推理阶段带来了新的**挑战**: + +* **显存占用高**:尽管每个 Token 只激活部分专家,但所有专家的参数仍需常驻显存。例如 Mixtral 8×7B 的实际参数量接近 47B,而非 8×7B 的简单叠加,因为除 FFN 外的大多数参数在各专家间是共享的。 + +* **计算不均衡**:不同专家接收的 Token 数量可能不同,导致计算负载不均,容易形成局部瓶颈。 + +* **访存压力大**:专家权重、Token 路由、Permute / Unpermute 都会带来额外的显存读写,而不仅仅是计算量的减少。 + + +因此,在推理阶段对 MoE 算子进行系统级优化​具有非常重要的意义,在不改变模型行为和数值精度的前提下,通过更合理的调度、融合与访存优化,缓解稀疏性带来的碎片化和内存压力。 + +**2、INT8 模型量化** + +参考链接:[https://www.cnblogs.com/chentiao/p/18315901](https://www.cnblogs.com/chentiao/p/18315901) + +INT8 量化是一种用于减少模型大小和计算复杂度的方法,特别是在深度学习模型中。它通过将浮点数(通常是 FP32)转换为 8 位整数 (INT 8),从而减少内存使用和提高计算效率。 教程链接:Fused MoE Baseline 入门:快速跑通最小闭环教程