双卡3090 vLLM跑Qwen3.6-27B,强烈建议关注: https://github.com/noonghunna/club-3090 。
我自己的环境: 双卡3090 nvlink,模型Qwen3.6-27B-autoround-int4。 kv cache fp8_e5m2量化, 上下文长度 262144 。采用 dual-mtp 的vllm运行参数和测试脚本(soak-test.sh), p50_decode_tps:61.34;p95_ttft_ms:4864 。
官方给的测试,应该能到接近70tps,我的还有优化空间,但是能用了就没折腾,参考DUAL_CARD.md。
num_speculative_tokens我测了2,3,4,5。效果上3最好。
启动脚本:
root@NV-AI-3090Dual2:~# cat vllm.qwen3.6-27b.sh
#!/bin/bash
source /root/.bashrc
source /root/venv/bin/activate
# vLLM 启动脚本 — Qwen3.6-27B-AutoRound-INT4
# 用法: bash start-vllm-qwen3.6.sh [TP] [PP]
# TP: tensor-parallel size,默认 2
# PP: pipeline-parallel size,默认 1
set -e
# ========== 参数 ==========
TP="${1:-${TP:-2}}"
PP="${2:-${PP:-1}}"
MODEL_PATH="/root/models/qwen3.6-27b-autoround-int4"
PORT="${PORT:-8000}"
HOST="${HOST:-0.0.0.0}"
MAX_MODEL_LEN="${MAX_MODEL_LEN:-262144}"
GPU_MEM_UTIL="${GPU_MEMORY_UTILIZATION:-0.92}"
KV_CACHE_DTYPE="${KV_CACHE_DTYPE:-fp8_e5m2}"
TEMP="${TEMP:-${TEMPERATURE:-0.6}}"
TOP_P="${TOP_P:-0.95}"
TOP_K="${TOP_K:-20}"
MIN_P="${MIN_P:-0.0}"
REPEAT_PENALTY="${REPEAT_PENALTY:-1.0}"
# speculative decoding
SPECULATIVE_CONFIG='{"method":"mtp","num_speculative_tokens":3}'
# 推理模板参数(关闭 thinking)
CHAT_TEMPLATE_KWARGS='{"enable_thinking": false}'
# ========== 环境变量 ==========
export NVIDIA_VISIBLE_DEVICES="${NVIDIA_VISIBLE_DEVICES:-all}"
export HUGGING_FACE_HUB_TOKEN="${HF_TOKEN:-}"
export VLLM_WORKER_MULTIPROC_METHOD=spawn
export NCCL_CUMEM_ENABLE=0
export NCCL_P2P_DISABLE=0
export VLLM_NO_USAGE_STATS=1
export VLLM_USE_FLASHINFER_SAMPLER=1
export OMP_NUM_THREADS=1
export PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True,max_split_size_mb:512"
# NVLink 检测(自行补充 detect_nvlink.sh 逻辑,或删掉这两行)
# source /etc/club3090/detect_nvlink.sh
# _NVLINK_ENABLED=0 # 手动设置:0=无NVLink, 1=NvLink开启
# ========== 构建命令 ==========
ARGS=(
--model "$MODEL_PATH"
--served-model-name qwen3.6-27b-autoround
--quantization auto_round
--dtype float16
--tensor-parallel-size "$TP"
--pipeline-parallel-size "$PP"
--max-model-len "$MAX_MODEL_LEN"
--gpu-memory-utilization "$GPU_MEM_UTIL"
--max-num-seqs 2
--max-num-batched-tokens 8192
--kv-cache-dtype "$KV_CACHE_DTYPE"
--trust-remote-code
# --chat-template "${CHAT_TEMPLATE}" # 没有自定义模板文件则删除此行
--reasoning-parser qwen3
--default-chat-template-kwargs "$CHAT_TEMPLATE_KWARGS"
--enable-auto-tool-choice
--tool-call-parser qwen3_coder
--enable-prefix-caching
--enable-chunked-prefill
--disable-custom-all-reduce
--speculative-config "$SPECULATIVE_CONFIG"
--override-generation-config "{\"temperature\":${TEMP},\"top_p\":${TOP_P},\"top_k\":${TOP_K},\"min_p\":${MIN_P},\"repetition_penalty\":${REPEAT_PENALTY}}"
--host "$HOST"
--port "$PORT"
)
echo "=========================================="
echo "启动 vLLM | TP=$TP PP=$PP | $MODEL_PATH"
echo "=========================================="
echo "命令: vllm serve ${ARGS[*]}"
echo ""
exec vllm serve "${ARGS[@]}"
deactivate






