通用NPU也能听语音:Whisper编码器与解码器在Chimera上实现端到端运行
Quadric展示其Chimera通用NPU可端到端运行OpenAI Whisper-tiny模型,编码器和解码器均编译为原生GPNPU内核,无需CPU回退。在INT4权重与FP16注意力配置下,解码器首token输出与float32参考一致,并可仅通过标志位将多核调度扩展至四核。
事件概述
Quadric 在一篇技术博客中展示了其 Chimera 通用 NPU(GPNPU)能够完整运行 OpenAI 的 Whisper 语音识别模型。此次演示使用 Whisper-tiny,将 Transformer 的编码器和解码器都编译为原生 GPNPU 内核,并在同一芯片上执行,没有为解码器设置 CPU 回退路径。这是该产品首次支持语音这一模态,此前 Chimera 主要运行视觉模型。
核心信息
- Whisper 模型在 Chimera 上以 INT4 权重 + FP16 注意力的配置运行,解码器首个 token 的预测与 float32 参考实现完全一致(top-1、top-2 及词表分布均匹配)。
- 编码器和解码器通过同一工具链(Chimera SDK)编译,并直接通过片上互连传递数据,中间无去量化或浮点参考转换环节。
- 扩展到多核只需在 SDK 编译时指定
--num-cores N,无需修改内核代码或重新编译 CGC 工件。
技术细节
Whisper 对 NPU 的挑战
Whisper 不是单一网络,而是一条流水线:从原始波形提取 80 通道 log-mel 频谱,经卷积前端处理后,由 4 层 Transformer 编码器压缩为隐状态,再由带自注意力和交叉注意力的 4 层解码器自回归生成 token。
编码器是标准 Transformer,矩阵乘和层归一化可映射到脉动阵列,但解码器包含遮挡自注意力(masked causal)和交叉注意力(cross-attention),每层需要 8 个权重矩阵投影,计算模式与编码器差异很大。此外,Whisper 的权重采用 MatMulNBits(4-bit 整型 + 按组缩放),而注意力计算使用 FP16,硬件需要在同一次前向中混合多种精度。固定功能加速器通常无法处理这种切换,往往导致解码器回退到 CPU,使整体流水线在交接处停滞。
Chimera 的实现方式
Quadric 通过 Chimera SDK 将来自 Hugging Face 的 ONNX 模型转换为 GPNPU 内核。SDK 帮助函数将 MatMulNBits 子图和注意力核替换为自定义算子(linalg::matMulNBits、nn::whisperAttention),并用 73 个真实音频样本完成校准以确定量化范围。编码器和解码器分别编译为单一 GPNPU 内核,并在周期精确的指令集模拟器(ISS)上验证。
当前分工与后续能力
在本次演示中,mel 频谱提取和卷积前端仍在主机 CPU 上运行,因为这两部分仅占模型总 FLOPs 的极小比例(卷积前端不到 1%)。但 Quadric 指出,其 26.05 版本已发布支持深度可分离和分组 FP16 卷积的原生算子,并提供可在 Chimera 上完整运行的 ASVspoof2021 防欺骗音频处理流水线(含 STFT、mel 滤波器组、DCT 等)。因此,将 Whisper 的完整前端也迁移至 GPNPU 只是移植工作,而非能力缺口。
值得关注
- “编码器跑得动、解码器拖后腿”是语音类 Transformer 在 NPU 上的常见痛点。Chimera 通过通用可编程内核与自定义算子方案,将解码器也保留在 NPU 上,避免了 CPU 回退带来的系统级降速。
- 多核扩展对内核作者透明,说明硬件通用性能够降低并行部署的工程成本。
- 该演示表明,通用 NPU 的适用边界正从视觉扩展到语音等更多模态,而 INT4/FP16 混合精度支持是实现端到端运行的关键基础。
