目前跑的是Qwen/Qwen3.6-35B-A3B-FP8, vllm version 0.21.0, 局域网组网使用了Tailscale, 远程登录没问题. 客户机里面运行Hermes agent. , vLLM + tensor-parallel 的参数自己不会搞, 准备让hermes自己优化.
分享个启动脚本
ames@ames-P10DRG:~$ cat vllm/start_vllm.sh
#!/bin/bash
# =============================================================================
# Qwen3.6-35B-A3B-FP8 vLLM Optimized Startup Script v4.0
# 基于 start_qwen3.6_claude.sh v3.1 的架构,针对 RTX 5880 Ada 全面优化
# 优化项:
# 1. max-num-batched-tokens 8192 -> 32768 (吞吐提升 ~4x)
# 2. max-num-seqs 16 -> 32 (并发请求翻倍)
# 3. max-model-len 262144 -> 40960 (MoE 线性注意力层 KV cache 实际上限 ~40K)
# 4. gpu-memory-utilization 0.92 -> 0.90 (更安全,避免 OOM)
# 5. 保留动态 NUMA 检测 + v0.21.0 内置 --numa-bind
# =============================================================================
set -euo pipefail
# --- 配置区 ---
VENV_PATH="$HOME/vllm_env/bin/activate"
MODEL_NAME="Qwen/Qwen3.6-35B-A3B-FP8"
SERVED_NAME="qwen3.6-35b"
PORT=8000
# --- 1. 激活虚拟环境 ---
echo "[1/3] 正在激活 Python 虚拟环境..."
source "$VENV_PATH"
# --- 2. 硬件级 NUMA 优化 ---
# 动态检测 GPU 所在 NUMA 节点,避免硬编码(双路 CPU 架构下降低跨桥延迟)
echo "[2/3] 正在检测显卡 NUMA 拓扑节点..."
NUMA_NODE=$(cat /sys/bus/pci/devices/0000:af:00.0/numa_node 2>/dev/null || echo "0")
if [[ "$NUMA_NODE" == "-1" ]]; then NUMA_NODE="0"; fi
echo " 已锁定至 NUMA Node ${NUMA_NODE}"
# --- 3. 启动 vLLM ---
echo "[3/3] 正在拉起 vLLM 推理引擎..."
VLLM_ARGS=(
# ── 模型 ─────────────────────────────────────────────────────────────────
--model "$MODEL_NAME"
--served-model-name "$SERVED_NAME"
--port "$PORT"
# ── GPU 资源 ──────────────────────────────────────────────────────────────
--tensor-parallel-size 1
--gpu-memory-utilization 0.90
# ── NUMA 绑定(v0.21.0 内置,无需 numactl)───────────────────────────────
--numa-bind
--numa-bind-nodes "$NUMA_NODE"
# ── 上下文窗口 ────────────────────────────────────────────────────────────
# MoE 模型 40 层中 30 层为线性注意力,每位置 KV cache 约 250 KB
# 48 GB GPU 扣除 ~35 GB 权重后,KV 预算仅 ~9 GB ≈ 39K positions
--max-model-len 40960
--max-num-batched-tokens 32768
--max-num-seqs 32
# ── 推理解析 ──────────────────────────────────────────────────────────────
--reasoning-parser qwen3
# ── 工具调用 ──────────────────────────────────────────────────────────────
--enable-auto-tool-choice
--tool-call-parser qwen3_coder
# ── 投机解码(MTP)───────────────────────────────────────────────────────
# num_speculative_tokens=1 已验证接受率最佳,>1 会降低整体吞吐
--speculative-config '{"method":"mtp","num_speculative_tokens":1}'
# ── FP8 KV Cache(节省约 30% VRAM)───────────────────────────────────────
--kv-cache-dtype fp8
# ── 性能优化 ──────────────────────────────────────────────────────────────
--performance-mode throughput
--enable-chunked-prefill
--enable-prefix-caching
# ── 日志精简 ──────────────────────────────────────────────────────────────
--disable-uvicorn-access-log
--disable-log-stats
--trust-remote-code
)
exec python3 -m vllm.entrypoints.openai.api_server "${VLLM_ARGS[@]}"