文章目录
Qwen3-Omni 本地部署指南
本文档提供在本地服务器上部署 Qwen3-Omni-30B-A3B-Instruct 模型的步骤,使用 vLLM 框架,监听端口 9137,运行在 NVIDIA A800 80GB PCIe(GPU 5)。GPU 5 当前显存占用为 74,845 MiB(接近 81,920 MiB 上限),需优化配置以避免 OOM。
环境信息
- GPU:NVIDIA A800 80GB PCIe(GPU 5)
- 显存占用:74,845 MiB / 81,920 MiB
- CUDA 版本:11.5(工具包),驱动支持 12.4
- PyTorch 版本:2.7.0+cu126
- Conda 环境:
qwen-vllm - 目标端口:9137
- 模型:Qwen/Qwen3-Omni-30B-A3B-Instruct
部署步骤
1. 准备环境
-
激活 Conda 环境:
conda activate qwen-vllm若环境不存在,创建:
conda create -n qwen-vllm python=3.10 conda activate qwen-vllm -
安装 vLLM:
pip install vllm --upgrade -
安装音频支持(为语音转录):
pip install vllm[audio]
2. 下载模型
下载 Qwen3-Omni-30B-A3B-Instruct 模型到本地:
huggingface-cli download Qwen/Qwen3-Omni-30B-A3B-Instruct --local-dir /mnt/data/models/Qwen/Qwen3-Omni-30B-A3B-Instruct
3. 安装性能优化库
优化推理速度和精度,解决 FlashInfer 和 flash-attn 警告:
-
FlashInfer(加速采样):
pip install flashinfer-python -i https://pypi.org/simple若失败,编译源码:
git clone https://github.com/flashinfer-ai/flashinfer.git cd flashinfer/python python setup.py install -
flash-attn(优化音频/视觉模块):
pip uninstall vllm-flash-attn -y pip install flash-attn==2.6.3 --no-build-isolation --index-url https://download.pytorch.org/whl/cu115 -
验证安装:
pip show flashinfer-python pip show flash-attn
4. 启动 vLLM 服务器
在 GPU 5 上启动服务器,监听端口 9137:
conda activate qwen-vllm
CUDA_VISIBLE_DEVICES=5 vllm serve /mnt/data/models/Qwen/Qwen3-Omni-30B-A3B-Instruct --port 9137 --host 127.0.0.1 --dtype bfloat16 --max-model-len 16384 --allowed-local-media-path /mnt/data/speech2txt-test/datasets -tp 1
-
参数说明:
--port 9137:监听端口。--host 127.0.0.1:本地访问。--dtype bfloat16:降低显存占用。--max-model-len 16384:显存占用 74,845 MiB 接近上限,降低上下文长度以防 OOM。--allowed-local-media-path:允许访问音频文件路径。-tp 1:单 GPU 张量并行。
-
若 OOM,尝试多 GPU:
CUDA_VISIBLE_DEVICES=5,7 vllm serve /mnt/data/models/Qwen/Qwen3-Omni-30B-A3B-Instruct --port 9137 --host 127.0.0.1 --dtype bfloat16 --max-model-len 16384 --allowed-local-media-path /mnt/data/speech2txt-test/datasets -tp 2
5. 验证服务器
检查服务器状态:
curl http://127.0.0.1:9137/health
- 预期输出:
{"status": "healthy"}
查看进程:
ps aux | grep '[v]llm.*9137'
lsof -i :9137
6. 测试语音转录
使用优化参数测试 6 分钟音频转录:
curl http://127.0.0.1:9137/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/mnt/data/models/Qwen/Qwen3-Omni-30B-A3B-Instruct",
"messages": [
{
"role": "user",
"content": [
{
"type": "audio_url",
"audio_url": {
"url": "file:///mnt/data/speech2txt-test/datasets/demo/out003.wav"
}
},
{
"type": "text",
"text": "请将这段中文语音转换为纯文本,忽略填充词(如‘嗯’‘啊’)和背景噪声,仅输出清晰的说话内容。"
}
]
}
],
"temperature": 0.3,
"max_tokens": 2048,
"top_p": 0.8,
"frequency_penalty": 0.8
}'
7. 优化长音频
- 分割音频(每段 60 秒):
ffmpeg -i /mnt/data/speech2txt-test/datasets/demo/out003.wav -f segment -segment_time 60 -c copy /mnt/data/speech2txt-test/datasets/demo/out%03d.wav - 预处理(确保 16kHz,降噪):
ffmpeg -i /mnt/data/speech2txt-test/datasets/demo/out003.wav -ar 16000 /mnt/data/speech2txt-test/datasets/demo/out003_converted.wav sox /mnt/data/speech2txt-test/datasets/demo/out003_converted.wav /mnt/data/speech2txt-test/datasets/demo/out003_clean.wav noisered noise.prof 0.21
注意事项
- 显存管理:GPU 5 显存接近上限。若 OOM,降低
--max-model-len或用多 GPU。 - 文件权限:
chmod 644 /mnt/data/speech2txt-test/datasets/demo/out003.wav - 日志检查:启动后查看日志,确保无 FlashInfer/flash-attn 警告。
- Captioner 模型(可选):若转录质量不佳,切换到 Qwen3-Omni-30B-A3B-Captioner:
huggingface-cli download Qwen/Qwen3-Omni-30B-A3B-Captioner --local-dir /mnt/data/models/Qwen/Qwen3-Omni-30B-A3B-Captioner CUDA_VISIBLE_DEVICES=5 vllm serve /mnt/data/models/Qwen/Qwen3-Omni-30B-A3B-Captioner --port 9137 --host 127.0.0.1 --dtype bfloat16 --max-model-len 16384 --allowed-local-media-path /mnt/data/speech2txt-test/datasets -tp 1
总结
通过以上步骤,Qwen3-Omni-30B-A3B-Instruct 成功部署在端口 9137,优化参数和音频预处理可确保高质量转录。若需进一步调试,提供日志、nvidia-smi 输出或转录结果。
2770

被折叠的 条评论
为什么被折叠?



