Atlas800T A2服务器部署Qwen2.5-Omni-7B音频模型全流程实战指南
在昇腾Atlas800T A2服务器上部署多模态大模型Qwen2.5-Omni-7B,对于需要处理音频转文字任务的开发者而言,既是技术挑战也是效率提升的关键一步。本文将带你从零开始,逐步完成从硬件驱动安装到vllm-ascend服务启动的全过程,特别针对实际部署中容易遇到的坑点提供解决方案。
1. 环境准备与硬件驱动安装
Atlas800T A2服务器作为昇腾AI计算的重要硬件平台,其环境配置需要格外注意版本匹配问题。我们首先需要确保硬件驱动和固件的正确安装。
创建专用用户组和用户是昇腾平台推荐的安全实践:
groupadd HwHiAiUser useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser驱动和固件安装包需要从昇腾官网获取对应版本:
- 驱动:Ascend-hdk-910b-npu-driver_25.2.0_linux-aarch64.run
- 固件:Ascend-hdk-910b-npu-firmware_7.7.0.6.236.run
安装命令如下:
./Ascend-hdk-910b-npu-driver_25.2.0_linux-aarch64.run --full ./Ascend-hdk-910b-npu-firmware_7.7.0.6.236.run --full常见问题排查:
- 如果安装过程中提示权限不足,请确保使用root用户执行
- 安装完成后建议重启服务器使驱动生效
- 可通过
npu-smi info命令验证驱动是否安装成功
2. CANN工具包安装与配置
CANN(Compute Architecture for Neural Networks)是昇腾AI处理器的软件栈核心,为上层应用提供基础运行环境。我们需要安装三个关键组件:
| 组件名称 | 版本 | 功能描述 |
|---|---|---|
| toolkit | 8.2.RC1 | 提供基础运行时环境和开发工具 |
| kernels | 8.2.RC1 | 包含昇腾处理器内核驱动 |
| nnal | 8.2.RC1 | 神经网络加速库 |
安装步骤:
./Ascend-cann-toolkit_8.2.RC1_linux-aarch64.run --full ./Ascend-cann-kernels-910b_8.2.RC1_linux-aarch64.run --install ./Ascend-cann-nnal_8.2.RC1_linux-aarch64.run --install安装完成后,需要设置环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh source /usr/local/Ascend/nnal/atb/set_env.sh注意:不同版本的CANN工具包可能存在兼容性问题,务必确保所有组件版本一致。
3. vllm-ascend环境搭建
vllm-ascend是针对昇腾平台优化的vLLM实现,能够充分发挥Atlas800T A2的硬件加速能力。安装前需要先配置Python环境(推荐Python 3.8+)。
安装依赖包:
pip install vllm==0.11.0 pip install torch==2.7.1 pip install torchaudio==2.7.1 pip install vllm-ascend==0.11.0rc0关键环境变量配置:
export VLLM_USE_MODELSCOPE=True export PYTORCH_NPU_ALLOC_CONF="max_split_size_mb:256" export ASCEND_RT_VISIBLE_DEVICES=0 export VLLM_TORCH_PROFILER_DIR="./vllm_profile"版本兼容性提示:
- vllm与vllm-ascend版本必须严格匹配
- torch版本需要与CANN工具包兼容
- 建议使用虚拟环境隔离不同项目的依赖
4. Qwen2.5-Omni-7B模型部署
Qwen2.5-Omni-7B作为支持多模态输入的大模型,其部署过程需要特别注意模型文件的下载和权限设置。
使用ModelScope下载模型:
pip install modelscope modelscope download --model Qwen/Qwen2.5-Omni-7B --local_dir ./模型下载完成后,启动vllm服务:
vllm serve /path/to/Qwen2.5-Omni-7B \ --host 0.0.0.0 \ --port 9988 \ --max-model-len 4096 \ --max-num-batched-tokens 4096 \ --max-num-seqs 5 \ --gpu-memory-utilization 0.4 \ --dtype bfloat16 \ --tensor-parallel-size 1 \ --trust-remote-code \ --served-model-name Qwen2.5-Omni-7B \ --block-size 128 \ --allowed-local-media-path /path/to/datasets/ \ --enable-prefix-caching服务启动后,可以通过以下命令测试音频转文字功能:
curl -s 127.0.0.1:9988/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen2.5-Omni-7B", "stream": false, "messages": [ { "role": "user", "content": [ {"type": "audio_url", "audio_url": {"url":"file:///path/to/audio.wav"}}, {"type": "text", "text": "识别音频中的内容"} ] } ] }'5. 性能测试与优化
使用aisbench工具可以对Qwen2.5-Omni-7B的音频处理性能进行压测。首先需要安装aisbench:
git clone https://gitee.com/aisbench/benchmark.git cd benchmark/ pip3 install -e ./ --use-pep517 pip3 install -r requirements/api.txt pip3 install -r requirements/extra.txt准备测试数据集时,建议将长音频分割为30秒左右的片段:
ffmpeg -i input.wav -f segment -segment_time 30 -c copy output%03d.wav关键配置文件修改:
- 修改
benchmark/ais_bench/benchmark/openicl/icl_prompt_template.py第243行:
template.append({'type':'audio_url', 'audio_url':{'url': 'file:///' + entry['audio_path']}})- 配置
benchmark/ais_bench/benchmark/configs/models/vllm_api/vllm_api_stream_chat.py中的连接参数
启动压测:
ais_bench --models vllm_api_stream_chat --datasets vocalsound_gen --summarizer default_perf --mode perf性能优化建议:
- 调整
--gpu-memory-utilization参数平衡内存使用和性能 - 根据实际负载调整
--max-num-batched-tokens和--max-num-seqs - 启用
--enable-prefix-caching可以显著提升重复查询的响应速度