Qwen3 + NPU 仿真实战

第一节:总览


1. NPX6 NPU 简介

NPX6 是多Slice 架构。包含 16 个 Slice,每个 Slice 配备 4096 个 MAC 单元,总计 65,536 个 MAC,支持 FP16 和 BF16 浮点运算。

1.1 计算架构

每个 NPX6 Slice 包含两个主要加速器:

MAC 阵列加速器

  • 每 Slice 配备 4096 个 MAC 单元,支持 INT8 (8b×8b) 运算
  • 支持 FP16/BF16 时,等效 1024 个 16b×16b MAC

通用张量加速器 (GTOA)

  • 每 Slice 配备 128 个 MAC 单元
  • 支持 Softmax、RMSNorm、SiLU 等激活函数
  • 提供可编程查找表 (LUT) 支持任意激活函数

1.2 内存层次

NPX6 采用三级内存架构:

L1 内存(每 Slice)

  • AM(累加器内存):128 KB,用于存储中间结果
  • VM(向量内存):512 KB,用于存储权重和激活值
  • 每个 Slice 的 L1 总容量为 640 KB

L2 内存(CSM 共享内存)

  • 总容量:64 MB
  • 分为 32 个 Bank,每个 Group 8 个 Bank
  • 用于多 Slice 间的数据共享

外部内存

  • 通过 AXI 端口访问,数据宽度 512-bit

2. Qwen3 模型简介

Qwen3 是阿里云推出的大语言模型系列。本教程以 Qwen3 0.6B 为例,这是该系列中最小的 Dense 模型,适合在边缘设备上部署。

2.1 模型架构

Qwen3 采用标准的 Transformer Decoder 架构,每个 Decoder Layer 包含:

  • RMSNorm 归一化层
  • Multi-Head Self-Attention(多头自注意力)
  • SwiGLU MLP(门控线性单元)
  • 残差连接

2.2 Qwen3 0.6B 参数

参数
Hidden Size1024
Num Layers28
Num Heads16
Head Dim64
Intermediate Size2816
Vocab Size151936

3. NPU 与 Qwen3 的适配

3.1 内存需求

Qwen3 0.6B 的权重存储需求:

  • BF16/FP16:约 1.2 GB

NPX6 的 64 MB CSM 无法一次性容纳全部权重,需要采用分层加载策略:将模型按层切分,逐层从外部内存加载到 CSM,再分发到各 Slice 的 VM 进行计算。

3.2 关键算子映射

Qwen3 的核心算子与 NPX6 加速器的对应关系:

  • Linear/MatMul → MAC 阵列
  • Softmax → GTOA(通用张量加速器)
  • SiLU/RMSNorm → GTOA
  • Add/Mul → GTOA
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐