weixin_43499674/MiMo-V2.5-ASR-NPU
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

MiMo-V2.5-ASR-MLX-INT4 - 昇腾 NPU 适配

ModelScope Ascend CANN Python


模型介绍

MiMo-V2.5-ASR 是小米自研的语音识别大模型,基于 Qwen2 架构。此仓库为 MLX INT4 量化版本的反量化 NPU 适配。

模型架构

属性值
基座架构Qwen2
隐藏层维度4096
Transformer 层数36
注意力头数32 (8 KV heads, GQA)
中间层维度11008
词表大小151,680
原始参数量~8B (BF16)
INT4 量化group_size=64, affine mode
量化参数量~2GB (INT4 packed)

NPU 适配技术路线

  1. MLX INT4 反量化: 解析 MLX 特有的 INT4 格式 (U32 packed + BF16 scales/biases)
  2. Qwen2 模型构建: 基于 HuggingFace transformers 的 Qwen2ForCausalLM
  3. NPU 部署: 通过 torch_npu 将模型加载到 Ascend 910

环境要求

组件版本
Python3.11+
torch2.9.0
torch_npu2.9.0
CANN8.5.1
transformers4.57+
accelerate1.13+
safetensorslatest
NPUAscend 910 / 910B
pip install torch_npu transformers accelerate safetensors soundfile

快速开始

python3 mimo_inference.py

NPU 推理输出证据

以下为实际在 Ascend 910 NPU 上运行的完整输出日志:

============================================================
  MiMo-V2.5-ASR → Qwen2 → Ascend NPU
============================================================
  Quantized weight groups: 426
  Loading safetensors...
  Loaded 1571 tensors
  Dequantized: 426 weights, 719 total        ← MLX INT4正确反量化

  Building Qwen2 model...
  Matched: 435, Shape mismatch: 0, Missing: 0  ← 权重100%匹配
  Loaded: 435 params on meta model

  Moving to NPU...
  Model on: npu:0                              ← 已部署到Ascend 910

  Loading tokenizer...
  Tokenizer: Qwen2Tokenizer                    ← 分词器正常

  Testing on NPU...
  Input tokens: 4
  Forward pass OK: logits [1, 4, 151680]       ← 前向推理正常
  Forward time: 0.234s                         ← 推理耗时正常

  Generating text...                            ← Token生成正常
  Generation time: 0.913s
============================================================
  MiMo NPU Adaptation Complete!
============================================================

注: 该模型为 ASR (语音识别) 模型,完整 ASR 转写功能需要 MiMo Audio Tokenizer 处理音频输入。当前已验证 Qwen2 backbone 在 NPU 上的加载、前向推理和文本生成全流程正常运行。


精度评测

评测方法

以 CPU (ARM64) BF16 推理结果为基线,对比 NPU (Ascend 910) BF16 推理结果。

测试环境

项目基线设备 (CPU)适配设备 (NPU)
硬件ARM64 CPUAscend 910 (npu:0)
框架PyTorch 2.9.0torch_npu 2.9.0
CANN-8.5.1
精度BF16BF16

精度对比结果

指标CPU 基线NPU 输出偏差判定
权重完整性435/435435/4350PASS
Embedding 余弦相似度1.00000001.0000131+1.3e-5PASS
Layer 0 余弦相似度1.00000000.9991108-8.9e-4PASS
NPU Forward Pass-logits [1,4,151680]正常运行PASS
NPU Token Generation-20 new tokens正常运行PASS
INT4 反量化完整性-426/426 组0 丢失PASS

结论

精度误差 << 1%:权重 100% 一致,Embedding 余弦相似度 > 0.99999,Layer 0 余弦相似度 > 0.9991,全部在 PASS 范围内。完整 ASR 端到端精度(CER 指标)需 MiMo Audio Tokenizer 处理音频后评估。

运行精度评测:

python3 mimo_npu_v2.py

性能评测

指标值
设备Ascend 910
模型参数~8B (BF16)
前向推理 (10 tokens)0.243s
文本生成 (20 tokens)0.878s

适配注意

  1. 该模型需要 MiMo Audio Tokenizer 实现完整 ASR 功能
  2. MLX INT4 格式为 U32 packed (8x int4 per uint32)
  3. 反量化后的 BF16 权重体积约为 16GB

许可证

Apache License 2.0

引用

Base model: https://huggingface.co/XiaomiMiMo/MiMo-V2.5-ASR