weixin_62994174/MooER-MTL-80K
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

MooER-MTL-80K 昇腾NPU适配

MooER(摩耳)是摩尔线程推出的基于大语言模型(LLM)的语音识别与翻译模型,本项目针对华为昇腾NPU进行了适配。

本仓库包含MooER-MTL-80K的昇腾NPU适配版本,并已完成推理验证、精度确认及性能基准测试。


模型架构

组件描述参数规模
编码器Paraformer(SANMEncoder)158M
适配器线性下采样 + 投影9.4M
大语言模型Qwen2-7B-Instruct + LoRA7.6B

处理流程: 音频(16kHz)-> FBank特征 -> LFR(长时特征重塑)-> CMVN( cepstral均值方差归一化)-> Paraformer编码器 -> 线性适配器 -> Qwen2-7B(已合并LoRA)-> 文本


昇腾NPU适配详情

软硬件环境

项目版本
NPU昇腾910(2颗)
CANN8.5.1
PyTorch2.9.0
torch_npu已安装
Python3.11

关键适配点

  1. 设备注册:在mooer/utils/utils.py中添加torch_npu支持,采用基于优先级的设备选择机制
  2. 自动混合精度(AMP):将torch.musa.amp.autocast / torch.cuda.amp.autocast替换为torch.npu.amp.autocast
  3. 音频加载:使用soundfile + scipy.signal.resample进行音频输入输出(NPU环境下torchcodec不可用)
  4. 模型部署:所有模型组件(编码器、适配器、大语言模型)均迁移至npu:0设备

适配文件

  • inference_npu.py - NPU推理脚本(支持单WAV文件和批量SCP文件模式)
  • eval_npu_simple.py - 精度与性能基准测试脚本
  • eval_accuracy.py - NPU与CPU精度对比脚本
  • src/mooer/utils/utils.py - 新增NPU设备注册功能

评估结果

精度验证

指标数值阈值状态
NPU与CPU文本匹配度完全匹配< 1% 误差通过
字符错误率(CER)0.00%< 1%通过
NPU一致性(5次运行)100%-通过

CPU参考输出:

欢迎使用由摩尔线程开发的基于大语言模型的语音识别及语音翻译系统

NPU 输出(所有 5 次运行结果一致):

欢迎使用由摩尔线程开发的基于大语言模型的语音识别及语音翻译系统

性能基准测试

指标数值
模型加载时间134.75秒
平均推理时间0.734秒
推理时间标准差0.004秒
CPU推理时间277.29秒
NPU相对CPU加速比378倍

基准测试迭代详情

运行次数时间(秒)字符错误率(CER)文本匹配
10.7340.00%通过(PASS)
20.7360.00%通过(PASS)
30.7380.00%通过(PASS)
40.7270.00%通过(PASS)
50.7330.00%通过(PASS)

快速开始

1. 环境配置

# Install dependencies
pip install torch_npu transformers peft soundfile scipy numpy
pip install modelscope

# Or use requirements
pip install -r requirements.txt

2. 下载模型

# Download MooER-MTL-80K
modelscope download --model MooreThreadsSpeech/MooER-MTL-80K

# Download Qwen2-7B-Instruct
modelscope download --model Qwen/Qwen2-7B-Instruct --local_dir ./pretrained_models/Qwen2-7B-Instruct

3. 运行推理

# Single file inference
PYTHONPATH=src:$PYTHONPATH python3 inference_npu.py \
    --wav_path demo/resources/demo.wav \
    --task asr

# Batch inference with SCP file
PYTHONPATH=src:$PYTHONPATH python3 inference_npu.py \
    --wav_scp test.scp \
    --task asr \
    --batch_size 10

4. 运行评估

# Quick NPU benchmark (5 iterations)
PYTHONPATH=src:$PYTHONPATH python3 eval_npu_simple.py

# Full NPU vs CPU accuracy comparison
PYTHONPATH=src:$PYTHONPATH python3 eval_accuracy.py

SCP 文件格式

uttid1 /path/to/audio1.wav
uttid2 /path/to/audio2.wav

模型来源

原始模型:MooreThreadsSpeech/MooER-MTL-80K

GitHub:MooreThreads/MooER

论文:MooER: LLM-based Speech Recognition and Translation Model from Moore Threads


许可证

MIT许可证。详情参见LICENSE。


引用

@article{liang2024mooer,
  title   = {MooER: an LLM-based Speech Recognition and Translation Model from Moore Threads},
  author  = {Zhenlin Liang, Junhao Xu, Yi Liu, Yichao Hu, Jian Li, Yajun Zheng, Meng Cai, Hua Wang},
  journal = {arXiv preprint arXiv:2408.05101},
  url     = {https://arxiv.org/abs/2408.05101},
  year    = {2024}
}