#!/usr/bin/env bash # ============================================================================= # Qwen3-Omni vLLM-Omni 服务启动脚本 # # 使用方法 (在远程服务器上): # 1. 安装 vllm-omni: # pip install vllm-omni # # 2. 下载模型: # modelscope download --model Qwen/Qwen3-Omni-30B-A3B-Instruct \ # --local_dir ./models/Qwen/Qwen3-Omni-30B-A3B-Instruct # # 3. 启动服务: # bash start_qwen3_omni.sh # # 端口: 8904 # API: # - WebSocket 实时: ws://127.0.0.1:8904/v1/realtime # - Chat Completions: http://127.0.0.1:8904/v1/chat/completions # - Health: http://127.0.0.1:8904/health # ============================================================================= set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MODEL_PATH="${SCRIPT_DIR}/models/Qwen/Qwen3-Omni-30B-A3B-Instruct" PORT="${PORT:-8904}" echo "============================================" echo " Qwen3-Omni vLLM-Omni 服务启动" echo "============================================" echo " 模型路径: ${MODEL_PATH}" echo " 端口: ${PORT}" echo "============================================" # 检查模型是否存在 if [ ! -d "${MODEL_PATH}" ]; then echo "" echo "❌ 模型未找到: ${MODEL_PATH}" echo "" echo "请先下载模型:" echo " pip install modelscope -U" echo " modelscope download --model Qwen/Qwen3-Omni-30B-A3B-Instruct \\" echo " --local_dir ${MODEL_PATH}" exit 1 fi # 检查 vllm-omni 是否安装 if ! python3 -c "import vllm_omni" 2>/dev/null; then echo "" echo "❌ vllm-omni 未安装" echo "" echo "请安装:" echo " pip install vllm-omni" echo "" echo "或从源码安装:" echo " git clone https://github.com/vllm-project/vllm-omni.git" echo " cd vllm-omni" echo " pip install -e ." exit 1 fi echo "" echo "🚀 启动 vLLM-Omni 服务..." # 停止旧进程 (如果存在) OLD_PID=$(lsof -t -i:${PORT} 2>/dev/null || true) if [ -n "${OLD_PID}" ]; then echo " 停止旧进程 (PID: ${OLD_PID})..." kill ${OLD_PID} 2>/dev/null || true sleep 2 fi # 启动服务 # --omni: 启用多阶段编排 (Thinker → Talker → Code2Wav) # 默认配置: vllm_omni/deploy/qwen3_omni_moe.yaml # 异步 chunk 流式传输默认开启 vllm serve "${MODEL_PATH}" \ --omni \ --port "${PORT}" \ --host 0.0.0.0 \ --gpu-memory-utilization 0.85 \ --max-model-len 32768 \ 2>&1 | tee "${SCRIPT_DIR}/qwen3_omni_server.log" echo "" echo "服务已停止."