跳转至

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 --filter name=vllm-ascend
pip show vllm vllm-ascend

预期结果:docker ps 列出状态为 Up 的容器,且 pip show 显示两个软件包的版本信息。

4.2 源代码安装

如果您更倾向于从源代码构建而不是使用 Docker 镜像,请按照 安装指南 安装 vLLM-Ascend。

Note

对于 Atlas 300I DUO,源代码安装可能会引入 triton 和 triton-ascend。在 Atlas 300I DUO 上运行 vLLM-Ascend 之前,请卸载它们:

pip uninstall -y triton-ascend triton

验证源代码安装:

pip show 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 \
  --max-model-len 4096 \
  --gpu-memory-utilization 0.9 \
  --enforce-eager \
  --port 8000
# 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