2026/4/2 21:32:19
网站建设
项目流程
大型视频网站开发,网站建设 会议纪要,专业制作,网谱网络科技Qwen3 NPU 仿真实战
第二节#xff1a;单个 MAC 单元设计#xff08;1616 阵列#xff0c;支持 INT8/BF16#xff09;1. MAC 单元在 LLM 推理中的作用
Qwen3 推理的主要计算量来自矩阵乘法#xff08;MatMul/Linear#xff09;#xff0c;涵盖 QKV 投影、Attention Sco…Qwen3 NPU 仿真实战第二节单个 MAC 单元设计16×16 阵列支持 INT8/BF161. MAC 单元在 LLM 推理中的作用Qwen3 推理的主要计算量来自矩阵乘法MatMul/Linear涵盖 QKV 投影、Attention Score 计算、MLP 等线性算子。NPX6 的 MAC 阵列用于加速这些乘累加运算。1.1 Feature Map 与 Coefficient 在 LLM 中的对应NPU 术语LLM 对应说明Feature Map (FM)激活值输入 hidden states、Q/K/V 向量Coefficient (CF)权重Wq、Wk、Wv、Wo、gate/up/down_proj以 Qwen3 0.6B 的 Q 投影为例hidden_size1024FM 形状为 [batch, seq_len, hidden_size]CFWq形状为 [hidden_size, hidden_size]即 [batch, seq_len, 1024] × [1024, 1024]。2. 16×16 MAC 阵列结构2.1 阵列维度参数参数值含义ISIZE16通道向量化维度VSIZE8空间向量化维度单元 MAC 数256ISIZE × ISIZEBF16 浮点模式下阵列内 256 路乘法并行产生乘积并对每个输出通道的 16 个乘积求和形成 16 个输出通道的部分和。注意阵列的物理维度由ISIZE决定与mpy_cfg_t选择的 INT8/BF16/FP16 模式无关不同数据格式复用同一 16×16 乘法阵列。Slice 级吞吐差异单个 Slice 在 INT8i_8b8b_e模式下每周期提供 4096 个 8b×8b MAC在 BF16/FP16f_bfloat16_e/f_fp16_e模式下每周期等效 1024 个 16b×16b MAC吞吐约为 INT8 的 1/4。原因INT8 模式下每个乘法单元每周期产生两路 8b×8b 乘积even/odd而 BF16/FP16 模式下只产生一路尾数乘积且 Feature Map 为双宽输入需要两周期供数因此 Slice 级有效并行度为 1/4。3. BF16 数据格式3.1 BF16 格式定义BF16: [sign:1][exponent:8][fraction:7] 16 bits字段位宽说明sign1 bit符号位exponent8 bits指数与 FP32 相同fraction7 bits尾数 (隐含前导 1)3.2 BF16 优势以下为 BF16 的通用特性IEEE bfloat16 标准用于解释本节为何选 BF16 浮点模式作为示例不属于 RTL 直接定义的参数。8 位指数提供与 FP32 相同的动态范围相比 FP32权重存储占用理论上减半4. MAC 单元流水线4.1 流水线阶段阶段模块功能Stage 0输入寄存级lane 内FM/CF 输入与控制信号寄存Stage 1npu_conv_mpy_mul16×16 BF16 乘法与最大指数提取Stage 2npu_conv_mpy_sum乘积按最大指数对齐并部分求和Stage 3npu_conv_mpy_sn最终求和生成 lo/hi 部分和Stage 4npu_conv_mpy_norm浮点归一化与舍入Stage 5npu_conv_mpy_acc32 位累加器更新4.2 BF16 乘法器设计每个 BF16 乘法器包含11×11 位尾数乘法器 (含隐含 1)8 位指数加法器符号异或逻辑4.3 求和与归一化浮点模式下mul 阶段生成乘积并找最大指数maxexpsum 阶段按 maxexp 对齐并部分求和sn 阶段做最终求和norm 阶段归一化后送入累加器。5. 配置模式模式编码Feature MapCoefficientf_bfloat16_e7’b0100000BF16BF16f_fp16_e7’b1000000FP16FP16i_8b8b_e7’b0000001INT8INT8BF16 浮点模式下阵列部分和进入 32 位累加器acc_t/ixacc_t由npu_conv_mpy_acc执行浮点累加实现跨周期累加。6. 与 Qwen3 推理的映射6.1 分块策略以 Q 投影hidden_size1024对应权重矩阵 1024 × 1024为例每次加载 16 个输入通道到 FM 寄存器每次加载 16×16 权重块到 CF 寄存器MAC 阵列并行计算 256 个乘积并形成 16 个部分和沿 K 维分块累加 64 次1024/16得到该 16 个输出通道块的最终结果沿输出通道维重复 64 个块覆盖全部 1024 个输出通道6.2 计算效率单个 16×16 MAC 单元每周期并行产生 256 个 BF16 乘积并输出 16 个部分和。7. 总结NPX6 的 16×16 MAC 单元承担 Qwen3 推理中 MatMul/Linear 的主要计算阵列结构16×16 BF16 乘法器每周期并行产生 256 个乘积、输出 16 个部分和数据映射FM 对应激活值CF 对应权重流水线5 级计算流水mul/sum/sn/norm/acc前端含输入寄存级精度BF16 格式平衡精度与效率