Qwen3-ASR-1.7B¶
1 简介¶
Qwen3-ASR-1.7B 是 Qwen 团队推出的 1.7B 参数自动语音识别(ASR)模型。它支持中文和英文语音、中文方言、多语言语音以及歌声转写,并提供长音频和流式推理能力。
本文档介绍 Qwen3-ASR-1.7B 在 Ascend NPU 上支持的功能、环境准备、单节点部署、功能验证和评估流程。
Qwen3-ASR-1.7B 随上游 vLLM v0.19.0 引入。请使用与您的 vLLM 版本匹配的 vLLM-Ascend 镜像,并参考支持矩阵了解当前发布状态。
2 支持的功能¶
请参考 支持功能列表 查看模型支持矩阵。
请参考 功能指南 查看功能配置信息。
3 前提条件¶
3.1 模型权重¶
| 权重版本 | 硬件要求 | 下载链接 |
|---|---|---|
| BF16 | 一块 Ascend Atlas 800I A2 64 GB NPU 或一块 Ascend Atlas 300I DUO 48 GB NPU | ModelScope |
将权重下载到部署环境可访问的目录。对于多节点部署,请使用共享目录;例如,/root/.cache/。
路径说明:将模型权重下载到您选择的目录并记录该路径。确保后续部署命令中的模型路径与此目录一致。
4 安装¶
4.1 Docker 镜像安装¶
请使用与您的硬件对应的 vLLM-Ascend Docker 镜像。将模型权重挂载替换为您环境中使用的路径。
export IMAGE=quay.io/ascend/vllm-ascend:v0.23.0
docker run --rm \
--name vllm-ascend \
--shm-size=1g \
--net host \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-it -d $IMAGE bash
export IMAGE=quay.io/ascend/vllm-ascend:v0.23.0-310p
docker run --rm \
--name vllm-ascend \
--shm-size=10g \
--net host \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-it -d $IMAGE bash
验证容器正在运行,且已安装的软件包版本与镜像标签匹配:
预期结果:docker ps 列出状态为 Up 的容器,且 pip show 显示两个软件包的版本信息。
4.2 源代码安装¶
如果您更倾向于从源代码构建而不是使用 Docker 镜像,请按照 安装指南 安装 vLLM-Ascend。
Note
对于 Atlas 300I DUO,源代码安装可能会引入 triton 和 triton-ascend。在 Atlas 300I DUO 上运行 vLLM-Ascend 之前,请卸载它们:
验证源代码安装:
5 在线服务部署¶
5.1 单节点在线部署¶
单节点部署将音频预填充和解码都运行在一块 NPU 上,适用于开发、测试和小型 ASR 服务。请将 your_model_path 替换为本地模型目录,或使用 Qwen/Qwen3-ASR-1.7B 通过已配置的模型中心下载模型。
# Ensure the model path matches the directory recorded during download
vllm serve your_model_path \
--served-model-name qwen3-asr \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9 \
--dtype float16 \
--max-model-len 4096 \
--additional-config '{"ascend_compilation_config": {"fuse_norm_quant": false,"enable_npu_graph_ex":false}}' \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY", "cudagraph_capture_sizes": [1,4]}' \
--port 8000
Note
--tensor-parallel-size 1使用一块 NPU。仅在确认硬件和部署拓扑支持所选并行配置后再增加该值。--max-model-len 4096限制最大序列长度。在 Atlas 300I DUO 上,请始终显式指定一个保守值;自动检测可能会分配过大的注意力掩码并导致内存不足错误。--gpu-memory-utilization 0.9设置可供 vLLM 执行器使用的设备内存比例。如果其他工作负载共享 NPU,请降低此值。--enforce-eager禁用图执行。在 Atlas 300I A2 2UP 示例中用于兼容性。
当服务成功启动时,日志中包含 Application startup complete。如果启动失败,请参阅公共常见问题。
6 功能验证¶
服务启动后,可以通过发送 prompt 来调用模型。
Chat Completions API:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-asr",
"messages": [
{
"role": "user",
"content": [
{
"type": "audio_url",
"audio_url": {
"url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav"
}
}
]
}
]
}'
请将 localhost、8000 和 qwen3-asr 替换为您的部署所使用的地址、端口和 --served-model-name。预期结果:HTTP 200,以及一个 JSON 响应,其中 choices 字段包含转录文本。
7 准确性评估¶
使用词错误率(WER)评估词级别识别的转录质量,使用字符错误率(CER)评估字符级别识别的转录质量。
8 性能评估¶
使用代表生产工作负载的音频样本测量 ASR 服务性能。至少记录音频时长、请求并发数、端到端延迟、实时因子和吞吐量。这样可以确保结果中包含音频预处理、请求构建、API 通信、推理和响应解析。
实际性能会随硬件、音频时长、并发数和部署配置而变化。在选择生产配置之前,请分别评估短音频、长音频和并发请求。
9 性能调优¶
以下配置是起点,而非全局最优配置。请根据音频时长、并发数、延迟要求和可用 NPU 内存进行调整。
| 场景 | 推荐起点 | 关键考虑因素 |
|---|---|---|
| 低延迟 | --tensor-parallel-size 1、--max-model-len 4096 |
使用短音频输入,并避免与其他工作负载共享 NPU。 |
| 高吞吐量 | 在建立延迟基线后增加请求并发数 | 监控 NPU 内存和端到端延迟;不要将合成的纯文本请求用作 ASR 流量的代理指标。 |
| 长音频 | 仅在需要时增加 --max-model-len |
在 Atlas 300I DUO 上,请保持该值保守,因为注意力掩码内存会随配置的最大长度增长。 |
对于通用参数调优,请参阅公共性能调优文档。
10 常见问题¶
对于常见的环境、安装和通用参数问题,请参阅公共常见问题。本节涵盖模型和硬件相关的指导。
Atlas 300I DUO 启动时内存不足¶
症状: 服务器在初始化注意力时因内存不足错误而失败。
原因: 在 Atlas 300I DUO 上,自动检测到的较大上下文长度可能会创建完整的因果注意力掩码,其内存消耗会随 max_model_len 呈二次方增长。
解决方案: 始终显式将 --max-model-len 设置为保守值,例如 4096,并在验证可用 NPU 内存后再增加它。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 vl/vllm-ascend