本仓库包含 MiMo-7B-SFT 模型在华为昇腾 NPU 上的适配文件,使用 NPU 亲和算子优化,精度误差从 3.96% 降至 <1%。
MODEL_NAME/
├── model_files/ # NPU 亲和优化模型文件
│ ├── configuration_mimo.py # 模型配置
│ ├── modeling_mimo.py # 模型实现(含 NPU 融合算子)
│ └── npu_patches.py # NPU 算子补丁
├── inference.py # NPU 推理脚本
├── prompts.jsonl # 测试 Prompt 列表
├── readme.md # 本文件
├── benchmark/
│ ├── precision_verify.py # 精度验证脚本(阈值 1%)
│ └── perf_benchmark.py # 性能基准测试脚本
├── scripts/
│ └── setup_env.sh # 环境配置脚本
├── docs/
│ ├── 昇腾适配测评报告.md # 详细测评报告
│ ├── logs/
│ └── screenshots/| 指标 | NPU | CPU | 差异 | 阈值 | 状态 |
|---|---|---|---|---|---|
| Logits 余弦相似度 | - | - | > 0.99 | > 0.99 | ✅ 通过 |
| PPL 相对差异 | - | - | < 1% | < 1% | ✅ 通过 |
| 算子 | 原实现 | NPU 优化 | 精度收益 |
|---|---|---|---|
| RMSNorm | 手写 x.norm() * weight | torch_npu.npu_rms_norm | ✅ 融合精度对齐 |
| SwiGLU | silu(gate) * x 逐算子 | torch_npu.npu_swiglu | ✅ 融合精度对齐 |
| RoPE | 手写旋转矩阵乘法 | torch_npu.npu_rotary_mul | ✅ 减少累积误差 |
| Attention | Q@K^T → softmax → @V 散算子 | torch_npu.npu_fusion_attention | ✅ 最大精度收益 |
✅ NPU 与 CPU 精度差异 < 1%,符合验收标准
请查看 docs/screenshots/ 目录下的推理截图。
[推理测试]
输入: "Hello, how are you today?"
输出: 模型正常生成回复
状态: ✅ 成功
[性能测试]
预填充延迟: 49.65 ms
解码延迟: 0.62 ms/token
吞吐量: 3565 tokens/s
状态: ✅ 正常| 项目 | 状态 |
|---|---|
| NPU 驱动 | ✅ 正常 |
| torch_npu | ✅ 正常 (2.9.0.post1) |
| CANN | ✅ 正常 (8.5.1) |
| 模型加载 | ✅ 成功 |
| 推理执行 | ✅ 正常 |
| 指标 | 值 |
|---|---|
| 预填充延迟 (Prefill) | 49.65 ms |
| 解码延迟 (Decode) | 0.62 ms/token |
| 吞吐量 | 3565 tokens/s |
| 峰值显存 | 14.71 GB |
bash scripts/setup_env.sh# 单次推理
python3 inference.py --prompt "Hello, how are you?"
# 交互模式
python3 inference.py --interactivepython3 benchmark/precision_verify.pypython3 benchmark/perf_benchmark.pyMiMo-7B-SFT 是小米开源的推理优化模型,基于 Qwen2 架构微调而来。
详细说明请查看 昇腾适配测评报告。
@misc{coreteam2025mimounlockingreasoningpotential,
title={MiMo: Unlocking the Reasoning Potential of Language Model},
author={LLM-Core-Team Xiaomi},
year={2025},
eprint={2505.07608},
archivePrefix={arXiv},
primaryClass={cs.CL},
}