基于 Qwen3-ASR-0.6B 微调的雷州话方言模型,已适配华为昇腾 NPU (Ascend 910) 推理。
本页面向:已在昇腾机器上装好驱动与 CANN 的用户,使用 torch_npu 后端跑通 ASR 推理并验证精度。
技术细节以 Qwen3-ASR 官方文档 为准。
按下面顺序执行后:在昇腾 Atlas 800 A2 上,用 torch_npu 后端完成 Qwen3-ASR-0.6B-leizhou 方言模型的单卡推理,验证 NPU vs CPU 精度误差 < 1%,并获取性能基准数据。
本页不解决:宿主机未装昇腾驱动、无对应机型、无 CANN——请先完成 昇腾环境准备。
在宿主机执行,确认 NPU 正常:
npu-smi info # 应看到 Ascend910 芯片
python3 -c "import torch_npu; print(torch_npu.npu.device_count())" # 应 > 0| 组件 | 验证版本 |
|---|---|
| 芯片 | Ascend 910 (Atlas 800 A2) |
| CANN | 8.5.1 |
| torch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| qwen-asr | 0.0.6 |
| Python | 3.11 |
# 核心依赖
pip install transformers==4.57.6 accelerate==1.12.0
# Qwen3-ASR 推理包
pip install qwen-asr==0.0.6 --no-deps
pip install pytz qwen-omni-utils sox soynlp==0.0.493
# 音频处理
pip install librosa soundfile注意:torch_npu 是华为定制 PyTorch,不可用
pip install torch覆盖。
若 qwen-asr 提示nagisa缺失可忽略(仅日本语强制对齐需要,本模型不使用)。
pip install modelscope
modelscope download --model ziweidamowang/Qwen3-ASR-0.6B-leizhou模型将缓存至 ~/.cache/modelscope/hub/models/ziweidamowang/Qwen3-ASR-0___6B-leizhou/。
模型信息:
| 属性 | 值 |
|---|---|
| 基础模型 | Qwen/Qwen3-ASR-0.6B |
| 参数量 | ~0.6B (BF16) |
| 模型大小 | ~782 MB |
| 支持语言 | 雷州话 (微调), 中文/英文/粤语等 37 种语言 |
| 指标 | WER (字准率 ~70%) |
| 架构 | Qwen3ASRForConditionalGeneration (Audio Encoder + Text Decoder) |
| 许可证 | Apache 2.0 |
python3 inference.py --backend npu --audio /path/to/audio.wav关键参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--backend | npu | 推理后端:npu / cpu / gpu |
--audio | (test.wav) | 音频文件路径,支持 .wav 16kHz |
--dtype | bfloat16 | 模型精度:bfloat16 / float16 / float32 |
--language | None | 语言提示(自动检测) |
--benchmark | false | 是否运行性能基准测试 |
--compare | false | 是否对比 NPU vs CPU 精度 |
--output | None | JSON 结果输出路径 |
import torch
from qwen_asr import Qwen3ASRModel
# NPU 适配关键:device_map="npu:0", attn_implementation="sdpa"
model = Qwen3ASRModel.from_pretrained(
"qwen3-asr-0.6b-finetuning-out/",
dtype=torch.bfloat16,
device_map="npu:0",
attn_implementation="sdpa", # NPU 使用 SDPA 替代 flash_attention_2
max_inference_batch_size=16,
max_new_tokens=256,
)
results = model.transcribe(audio=["test.wav"], language=None)
print(results[0].text)| 原始 CUDA 参数 | NPU 对应参数 | 说明 |
|---|---|---|
device_map="cuda:0" | device_map="npu:0" | 设备映射 |
attn_implementation="flash_attention_2" | attn_implementation="sdpa" | NPU 通过 torch_npu 支持 SDPA |
torch.cuda.synchronize() | torch.npu.synchronize() | 设备同步 |
python3 inference.py --compare --output eval_results/accuracy_compare.json| 指标 | 值 | 阈值 | 状态 |
|---|---|---|---|
| Char Error Rate (CER) | 0.0000% | < 1% | ✅ PASS |
| Word Error Rate (WER) | 0.0000% | < 1% | ✅ PASS |
| Exact Match | True | - | ✅ PASS |
测试样本:test/test.wav (16kHz mono WAV, 72.9 KB)
| 后端 | 转录结果 | 耗时 |
|---|---|---|
| CPU (参考) | 遵循这些传统习俗 | 6.76s |
| NPU (Ascend 910) | 遵循这些传统习俗 | 0.31s |
结论:NPU 与 CPU 输出完全一致,精度误差 0.00%,通过 < 1% 阈值。
python3 eval_perf.py| 指标 | NPU (Ascend 910) | CPU (ARM) | 加速比 |
|---|---|---|---|
| 平均延迟 | 0.310 s | 6.136 s | 19.78x |
| 中位数延迟 | 0.310 s | 6.145 s | 19.84x |
| P90 延迟 | 0.315 s | - | - |
| P95 延迟 | 0.318 s | - | - |
| P99 延迟 | 0.320 s | - | - |
| 最小延迟 | 0.302 s | - | - |
| 最大延迟 | 0.320 s | - | - |
| 标准差 | 0.004 s | - | - |
| 模型加载 | 2.80 s | 0.98 s | - |
| NPU 显存占用 | 1,498 MB | - | - |
| 文件 | 说明 | 路径 |
|---|---|---|
| inference.py | NPU 适配推理脚本 | qwen3-asr-npu/inference.py |
| README.md | 部署文档 (本文件) | qwen3-asr-npu/README.md |
| eval_accuracy.py | 精度评测源代码 | qwen3-asr-npu/eval_accuracy.py |
| eval_perf.py | 性能评测源代码 | qwen3-asr-npu/eval_perf.py |
| accuracy_report.json | 精度评测结果 | qwen3-asr-npu/eval_results/accuracy_compare.json |
| perf_report.json | 性能评测结果 | qwen3-asr-npu/eval_results/perf_report.json |
---
language:
- zh
tags:
- NPU
- Ascend
- Ascend910
- torch_npu
- CANN
- auto-speech-recognition
- qwen3-asr
- leizhou-dialect
- 雷州话
license: Apache-2.0
datasets:
- leizhou-dialect-asr
metrics:
- WER
- CER
hardware:
- NPU
- Ascend 910
- Atlas 800 A2
library:
- transformers
- qwen-asr
- torch_npu
pipeline_tag: automatic-speech-recognition
base_model: Qwen/Qwen3-ASR-0.6B
---
# Qwen3-ASR-0.6B-leizhou (昇腾 NPU 适配版)
## 模型简介
基于 Qwen3-ASR-0.6B 微调的雷州话方言语音识别模型,已完成华为昇腾 Ascend 910 NPU 适配。
通过 torch_npu 后端运行推理,NPU vs CPU 精度误差 < 1%,推理加速比约 20x。
## 适配环境
- **硬件**: Atlas 800 A2 (Ascend 910 × 2)
- **CANN**: 8.5.1
- **torch_npu**: 2.9.0.post1
- **框架**: qwen-asr 0.0.6 + transformers 4.57.6
## 精度验证
| 指标 | NPU vs CPU |
|------|-----------|
| CER | 0.00% ✅ |
| WER | 0.00% ✅ |
| Exact Match | True ✅ |
## 性能数据
| 指标 | NPU | CPU |
|------|-----|-----|
| 推理延迟 (avg) | 0.310 s | 6.136 s |
| 加速比 | **19.78x** | baseline |
| 显存占用 | 1,498 MB | N/A || 现象 | 建议 |
|---|---|
ModuleNotFoundError: No module named 'nagisa' | 推理脚本已内置 mock,不影响使用 |
| NPU 设备不可见 | 检查 npu-smi info 确认驱动正常;确认 torch_npu 版本与 CANN 匹配 |
| OOM / 显存不足 | 模型仅需 ~1.5 GB 显存,单卡即可运行 |
| 精度差异 > 1% | 确认使用 bfloat16 dtype 和 sdpa attention 实现 |
| 说明 | 链接 |
|---|---|
| Qwen3-ASR 官方 | GitHub |
| 模型原始页面 | ModelScope |
| 昇腾开发者社区 | hiascend.com |
| torch_npu 文档 | gitee |
本 README 于 2026-05-18 生成,基于 Ascend 910 / CANN 8.5.1 / torch_npu 2.9.0 验证通过。