Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

摘要:Caovan vLLM SM75 Turbo3 v0.4.35 是一款面向 NVIDIA RTX 2080 Ti(Turing / SM75)的 vLLM 外部推理加速插件。本版继续采用已经完成实机验证的 vLLM 0.21.0 + FlashInfer + FP8 KV Cache 技术路线,在 v0.4.33 稳定版基础上增加了四卡自动 MTP=4、少于四卡自动 MTP=3,以及面向首次请求卡顿问题的 Worker 侧冷内核预热机制。

Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

本文将从零开始介绍 Ubuntu 环境准备、Miniconda 安装、虚拟环境创建、vLLM 0.21.0 安装、插件安装、自检、模型启动、日志记录、全部启动参数的作用,以及大家比较关心的 Prefill 速度和首字延迟

一、v0.4.35 的实机验证结果

本次测试使用以下环境:

项目 测试配置
操作系统 Ubuntu 22.04
GPU 4 × NVIDIA RTX 2080 Ti 22GB,Compute Capability 7.5
Python Python 3.10.20(本次新服务器实测;Python 3.10/3.11 均可)
PyTorch 2.11.0+cu130
CUDA Runtime CUDA 13.0
vLLM 0.21.0
插件 Caovan vLLM SM75 Turbo3 v0.4.35
模型 Qwen3.6-27B-AWQ-INT4
上下文 262144 tokens
KV Cache FP8
张量并行 TP=4
MTP 插件自动设置为 MTP=4

本次分别测试了两类难度和输出形态差异很大的任务:

  1. 生成一个可以直接部署的网页版俄罗斯方块游戏,要求界面美观、支持键盘操作和音效;(生成一个网页版的“俄罗斯方块”的游戏,要求UI界面漂亮,可以实际通过键盘进行操作,有音效效果!可以直接上线发布!)
  2. 完成一道包含空间翻折与二面角最值计算的高中立体几何题。(在平面四边形ABCD中,AB=AC=CD=1,\angle ADC=30^{\circ}, \angle DAB =120^{\circ}。将 \triangle ACD 沿 AC 翻折至 \triangle ACP,其中 P 为动点。求二面角 A-CP-B 的 余弦值的最小值。)

测试结果:两道题均正常完成,代码任务可以完整输出,数学推理结果正确,生成过程中没有出现 OOM、乱码、异常短停或推理中断。

在编译和首次真实请求逐步完成后,第一项长输出任务的日志中出现了多个 100 tokens/s 以上的持续区间,最高一个统计区间达到约 112.7 tokens/s;MTP 平均草稿接受率在部分区间达到约 86%~93%。需要强调,这些数据是特定模型、特定提示词、四卡服务器和当前缓存状态下的运行日志,不等于所有设备都能得到完全相同的速度。

二、为什么 v0.4.35 继续使用 vLLM 0.21.0?

插件开发的目标是提高 RTX 2080 Ti 的实际推理性能,而不是单纯追求最新的 vLLM 版本。

在当前 SM75 环境中,vLLM 0.21.0 可以继续使用:

  • FlashInfer 注意力后端;
  • FP8 KV Cache
  • 长上下文下更高的 KV Cache 容量;
  • 已经完成多轮实测的 GDN + MTP 插件挂载路径。

而较新的 vLLM 版本在 RTX 2080 Ti 上可能需要把 KV Cache 退回 FP16,显存占用和长上下文解码带宽都会受到影响。因此,v0.4.35 选择在已经验证稳定、速度更有优势的 vLLM 0.21.0 基线上继续优化。

三、v0.4.35 的主要功能

1. 四卡自动使用 MTP=4

插件会结合 CUDA_VISIBLE_DEVICES、实际可见 SM75 显卡数量和 --tensor-parallel-size 判断 MTP 深度:

实际参与 TP 的 SM75 显卡数量 自动 MTP
1~3 张 MTP=3
4 张及以上 MTP=4

只有在 --tensor-parallel-size >= 4,并且确实检测到足够的 SM75 显卡时,插件才会设置 MTP=4,避免因为错误的显卡可见性或 TP 参数而误启用。

2. 保留 FP8 KV Cache 与 FlashInfer

启动参数仍可使用:

--kv-cache-dtype fp8

FP8 KV Cache 可以显著降低 KV Cache 的显存占用,对 128K、262K 等长上下文和多请求并发尤其重要。实际日志中应看到:

Using fp8 data type to store kv cache
Using FLASHINFER attention backend

3. Worker 侧冷内核预热

旧版本在首次真实请求时可能临时编译以下 Triton 内核,从而造成首个请求长时间等待:

_zero_kv_blocks_kernel
_compute_slot_mapping_kernel
_copy_page_indices_kernel

v0.4.35 把关键冷内核预热逻辑接入 Worker 启动阶段,并支持严格模式。这样可以尽量把编译成本放到服务启动阶段,而不是让第一个真实用户承担。

4. GDNCore Real Prefill 与 MTP 解码加速

插件保留 v0.4.33 已经验证稳定的 GDNCore Real Prefill、AcceptanceLock、split-QK 与 fused V/GDN 解码路径,重点减少 SM75 上 MTP 解码阶段的小内核调度和中间显存读写。

5. AutoMem 与 Elastic-KV

用户没有手动指定 --gpu-memory-utilization 时,插件会根据显卡显存、上下文长度、并发数、Batch Token 数和 MTP 深度自动保留安全显存空间。

例如本次四卡、262K、MTP=4 的测试中,插件自动注入了约:

--gpu-memory-utilization 0.868

普通用户建议先让插件自动计算,不要直接照搬其他服务器的显存利用率。

四、Prefill 和首字延迟

这是很多用户非常关心的问题。首先需要区分三个概念:

概念 含义
Prefill 模型读取和处理用户输入提示词的阶段。
首字延迟 / TTFT 从提交请求到收到第一个输出 Token 的时间。
Decode 速度 首个 Token 之后持续生成内容的速度,通常以 tokens/s 表示。

 

v0.4.35 教程提供了独立 Prefill 基准脚本:使用 vLLM 0.21 官方 vllm bench serve,分别测试 2K、4K、8K、16K、32K 输入,输出固定为 1 Token、并发固定为 1,并记录每次请求的 TTFT。随后通过“TTFT = 固定开销 + 输入Token数 / Prefill速度”做线性回归,计算 Prefill tokens/s,同时给出每种上下文长度的 TTFT 中位数和 P90。这样可以把持续 Decode 和大部分固定请求开销分离开,数据比直接读取日志中的 Avg prompt throughput 更可靠。不同服务器、模型、GPU数量和上下文长度结果会不同,建议以脚本生成的实机报告为准。

本次四卡服务器的 Prefill 实测结果

在 4×RTX 2080 Ti 22GB、vLLM 0.21.0、Turbo3 v0.4.35、Qwen3.6-27B-AWQ-INT4、TP=4、MTP=4、FP8 KV Cache、单并发、输出 1 Token 的条件下,得到以下结果:

输入长度 TTFT中位数 TTFT P90 端到端有效Prefill
2048 tokens 1.151 秒 1.153 秒 1780 tokens/s
4096 tokens 2.274 秒 2.280 秒 1801 tokens/s
8192 tokens 3.815 秒 3.824 秒 2147 tokens/s
16384 tokens 5.778 秒 5.790 秒 2836 tokens/s
32768 tokens 12.203 秒 12.209 秒 2685 tokens/s

多长度回归 Prefill 速度:约 2873 tokens/s。

固定开销估计约 0.625 秒,拟合优度 R²=0.9930。R² 接近 1,说明测试结果具有较好的线性一致性。

统计时已经剔除每组测试的第一个正式请求。原因是 vLLM 0.21 的基准预热会复用第一条提示词,主测试随后又包含同一条提示词;开启 Prefix Cache 时,这个样本可能命中缓存,从而获得不真实的超低 TTFT。修正版测试脚本默认发送 8 个正式请求,剔除第一个后保留 7 个有效样本。

五、安装前准备

本文以 Ubuntu 22.04、x86_64 服务器为例。建议先确认 NVIDIA 驱动和显卡识别正常:

nvidia-smi
uname -m
lsb_release -a

Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

RTX 2080 Ti 的计算能力应为 7.5。安装基础工具:

sudo -v
sudo apt update
sudo apt install -y wget curl git unzip build-essential ninja-build

检查 CUDA Toolkit 与 ptxas

vLLM 的预编译包会携带主要 CUDA 运行时依赖,但 Triton 编译仍建议系统中存在可用的 ptxas

which ptxas || true

/usr/local/cuda/bin/ptxas --version

本文实测使用 CUDA 13.0,并设置:

TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas

如果该文件不存在,请先按照 NVIDIA 对应 Ubuntu 版本的官方方式安装 CUDA Toolkit。已经配置 NVIDIA CUDA 软件源的系统,可尝试:

sudo apt update
sudo apt install -y cuda-toolkit-13-0

六、安装 Miniconda

1. 下载 Miniconda 安装程序

cd /tmp

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

2. 安装到当前用户目录

bash Miniconda3-latest-Linux-x86_64.sh -b -p "$HOME/miniconda3"

参数说明:

  • -b:批处理模式,不进入交互式安装界面;
  • -p "$HOME/miniconda3":把 Miniconda 安装到当前用户家目录。

3. 加载 Conda

source ~/miniconda3/etc/profile.d/conda.sh

4. 初始化 Bash

conda init bash

conda config --set auto_activate_base false

执行完成后可以关闭并重新打开终端,也可以继续手动执行:

source ~/.bashrc

5. 确认 Conda 安装成功

conda --version

七、新建 vLLM 虚拟环境

建议为本插件单独建立环境,不要和其他 vLLM 版本混装。本次客户新服务器使用 Python 3.10.20 已完成正常启动、复杂代码生成和数学推理测试,证明插件可以正常运行在 Python 3.10 环境中。Python 3.11 也可以使用,但并非硬性要求。

source ~/miniconda3/etc/profile.d/conda.sh

conda create -n caovan-vllm python=3.10 -y && conda activate caovan-vllm

上面的 caovan-vllm 只是虚拟环境名称,也可以改成 vllm 或其他名称,但后续激活环境时必须使用相同名称。例如:

conda create -n vllm python=3.10 -y && conda activate vllm

确认当前 Python 来自新环境:

which python

python --version

升级 Python 安装工具:

python -m pip install --upgrade pip setuptools wheel

八、安装 vLLM 0.21.0

重要:v0.4.35 当前正式验证的主线是 vLLM==0.21.0。不要在同一环境中安装 vLLM 0.24 或其他未验证版本。

安装 vLLM:

source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

python -m pip install "vllm==0.21.0"

安装过程会同时安装匹配的 PyTorch、Triton、FlashInfer 和其他依赖。安装完成后检查:

python - <<'PY'
import sys
import platform
import torch
import vllm

print("Python version:", platform.python_version())
print("Python full version:", sys.version.replace("\n", " "))
print("Python executable:", sys.executable)
print("PyTorch:", torch.__version__)
print("PyTorch CUDA:", torch.version.cuda)
print("vLLM:", vllm.__version__)
print("CUDA available:", torch.cuda.is_available())
print("GPU count:", torch.cuda.device_count())

for i in range(torch.cuda.device_count()):
    p = torch.cuda.get_device_properties(i)
    print(
        f"GPU {i}: {p.name}, "
        f"capability={p.major}.{p.minor}, "
        f"VRAM={p.total_memory / 1024**3:.2f} GiB"
    )
PY

本文实测结果为:

Python version: 3.10.20
Python full version: 3.10.20 (main, Jun 11 2026, 15:17:37) [GCC 14.3.0]
Python executable: /home/user/miniconda3/envs/caovan-vllm/bin/python
PyTorch: 2.11.0+cu130
PyTorch CUDA: 13.0
vLLM: 0.21.0
CUDA available: True
GPU count: 4
GPU 0: NVIDIA GeForce RTX 2080 Ti, capability=7.5, VRAM=21.48 GiB
GPU 1: NVIDIA GeForce RTX 2080 Ti, capability=7.5, VRAM=21.48 GiB
GPU 2: NVIDIA GeForce RTX 2080 Ti, capability=7.5, VRAM=21.48 GiB
GPU 3: NVIDIA GeForce RTX 2080 Ti, capability=7.5, VRAM=21.48 GiB

Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

实际安装结果可能因官方发布包和平台不同而存在小版本差异。当前已实测 Python 3.10.20 可以正常运行插件;Python 3.10 与 Python 3.11 均属于推荐范围。关键是确认 vLLM0.21.0,并且 GPU 能够被 PyTorch 正确识别。

九、安装 Caovan vLLM SM75 Turbo3 v0.4.35

下载插件:

Premium

PREMIUM ACCESS

会员专属内容

开通会员后可查看完整内容、下载资源和使用隐藏教程。

1. 将插件压缩包上传到用户家目录

假设插件文件位于:

~/caovan-vllm-sm75-turbo3-v0.4.35-external-plugin.zip

2. 解压插件

cd ~

unzip -o caovan-vllm-sm75-turbo3-v0.4.35-external-plugin.zip

3. 激活 vLLM 环境

source ~/miniconda3/etc/profile.d/conda.sh

conda activate caovan-vllm

4. 进入插件目录

cd ~/caovan-vllm-sm75-turbo3-v0.4.35

5. 卸载旧版插件

python -m pip uninstall -y caovan-vllm-sm75-turbo3

如果从未安装过旧版,出现“未找到已安装包”的提示可以忽略。

6. 安装 v0.4.35 Wheel

python -m pip install --no-deps --force-reinstall \
  ./dist/caovan_vllm_sm75_turbo3-0.4.35-py3-none-any.whl

参数说明:

  • --no-deps:不让插件重新修改当前已经安装好的 vLLM、PyTorch 和 Triton 依赖;
  • --force-reinstall:即使系统中存在同版本,也强制重新安装完整 Wheel。

十、安装后环境检查

source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

python - <<'PY'
import torch
import vllm
import caovan_vllm_sm75_turbo3 as caovan

print("torch=", torch.__version__)
print("torch CUDA=", torch.version.cuda)
print("vLLM=", vllm.__version__)
print("plugin=", caovan.__version__)
print("CUDA available=", torch.cuda.is_available())
print("GPU count=", torch.cuda.device_count())

for i in range(torch.cuda.device_count()):
    print(
        i,
        torch.cuda.get_device_name(i),
        torch.cuda.get_device_capability(i)
    )
PY

本文实测结果为:

torch= 2.11.0+cu130
torch CUDA= 13.0
vLLM= 0.21.0
plugin= 0.4.35
CUDA available= True
GPU count= 4
0 NVIDIA GeForce RTX 2080 Ti (7, 5)
1 NVIDIA GeForce RTX 2080 Ti (7, 5)
2 NVIDIA GeForce RTX 2080 Ti (7, 5)
3 NVIDIA GeForce RTX 2080 Ti (7, 5)

Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

其中,下面的内容应该包含在每个用户的测试结果中:

vLLM= 0.21.0
plugin= 0.4.35
CUDA available= True

十一、运行插件 Doctor

Doctor 会检查 Python、PyTorch、CUDA、Triton、vLLM、SM75 显卡、插件入口、GDN 接口、模型路径、自动 MTP 和自动显存策略。

四卡、262K 上下文参考命令:

source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

caovan-sm75-doctor /home/user/models/Qwen3.6-27B-AWQ-INT4 \
  --tensor-parallel-size 4 \
  --max-model-len 262144 \
  --max-num-seqs 4 \
  --max-num-batched-tokens 8192

Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

请把模型路径改为自己的路径。四卡时应看到类似:

AutoSpec 结果:MTP=4
vLLM 状态:PASS
插件入口发现:PASS
GDN 接口检查:PASS

十二、验证 Turbo3 内核与模型结构(可选步骤)

1. 使用一张 GPU 运行内核验证

CUDA_VISIBLE_DEVICES=0 caovan-sm75-verify

该命令使用合成张量进行结构安全测试,不会加载完整模型。

2. 检查模型配置

caovan-sm75-check-model /home/user/models/Qwen3.6-27B-AWQ-INT4

静态检查通过只代表模型属于兼容候选。插件是否真实生效,仍需结合启动日志和实际请求判断。

十三、四卡完整启动命令

不同用户应根据自己的模型路径、GPU 数量、端口和上下文需求自行设置启动参数。

cd ~
source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

export CUDA_VISIBLE_DEVICES=0,1,2,3
export OMP_NUM_THREADS=12
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
export PYTORCH_NVML_BASED_CUDA_CHECK=1

export CAOVAN_REQUIRE_TURBO3=1
export CAOVAN_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/caovan-sm75-turbo3"
export CAOVAN_COLD_KERNEL_WARMUP=1
export CAOVAN_COLD_KERNEL_WARMUP_STRICT=1

unset CAOVAN_FLASHQLA_PRECOMPILE
unset CAOVAN_FLASHQLA_FORCE
unset CAOVAN_FLASHQLA_DISABLE

export TORCHINDUCTOR_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/torchinductor"
export TORCHINDUCTOR_COMPILE_THREADS=1
export TRITON_CACHE_AUTOTUNING=1
export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas

VER="v0.4.35-vllm021"
TS="$(date +%Y%m%d-%H%M%S)"
LOG_DIR="$HOME/caovan-vllm-logs"
LOG_FILE="$LOG_DIR/${VER}-serve-${TS}.log"
mkdir -p "$LOG_DIR"

echo "日志:$LOG_FILE"

caovan-vllm-serve /home/user/models/Qwen3.6-27B-AWQ-INT4 \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name Qwen3.6-27B-AWQ-INT4 \
  --tensor-parallel-size 4 \
  --dtype half \
  --max-model-len 262144 \
  --max-num-seqs 4 \
  --max-num-batched-tokens 8192 \
  --kv-cache-dtype fp8 \
  --disable-custom-all-reduce \
  --enable-prefix-caching \
  --mamba-cache-mode align \
  --additional-config '{"caovan":true,"caovan_mode":"auto","caovan_require_turbo3":true}' \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  2>&1 | tee "$LOG_FILE"

必须修改的内容:

  • /home/user/models/Qwen3.6-27B-AWQ-INT4:改成自己的模型路径;
  • Qwen3.6-27B-AWQ-INT4:可改成自己的服务名称;
  • CUDA_VISIBLE_DEVICES--tensor-parallel-size:按实际显卡数量修改;
  • --port:端口被占用时改成其他端口。

如果你不想生成完整的log日志文件,你可以使用下面的启动参数:

cd ~
source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

export CUDA_VISIBLE_DEVICES=0,1,2,3
export OMP_NUM_THREADS=12
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
export PYTORCH_NVML_BASED_CUDA_CHECK=1

export CAOVAN_REQUIRE_TURBO3=1
export CAOVAN_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/caovan-sm75-turbo3"
export CAOVAN_COLD_KERNEL_WARMUP=1
export CAOVAN_COLD_KERNEL_WARMUP_STRICT=1

unset CAOVAN_FLASHQLA_PRECOMPILE
unset CAOVAN_FLASHQLA_FORCE
unset CAOVAN_FLASHQLA_DISABLE

export TORCHINDUCTOR_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/torchinductor"
export TORCHINDUCTOR_COMPILE_THREADS=1
export TRITON_CACHE_AUTOTUNING=1
export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas

caovan-vllm-serve /home/user/models/Qwen3.6-27B-AWQ-INT4 \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name Qwen3.6-27B-AWQ-INT4 \
  --tensor-parallel-size 4 \
  --dtype half \
  --max-model-len 262144 \
  --max-num-seqs 4 \
  --max-num-batched-tokens 8192 \
  --kv-cache-dtype fp8 \
  --disable-custom-all-reduce \
  --enable-prefix-caching \
  --mamba-cache-mode align \
  --additional-config '{"caovan":true,"caovan_mode":"auto","caovan_require_turbo3":true}' \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder

十四、环境变量详细说明

环境变量 作用
CUDA_VISIBLE_DEVICES=0,1,2,3 指定当前服务可以看到哪些 GPU。这里表示使用物理编号 0、1、2、3。
OMP_NUM_THREADS=12 限制 CPU OpenMP 线程数量,避免多进程环境下线程数过度膨胀。
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True 启用可扩展 CUDA 显存段,降低显存碎片风险。
PYTORCH_NVML_BASED_CUDA_CHECK=1 让 PyTorch 优先通过 NVML 检查 CUDA 状态,多进程启动时更稳妥。
CAOVAN_REQUIRE_TURBO3=1 要求 Turbo3 必须正确加载。如果插件核心路径没有生效,阻止静默退回普通路径。
CAOVAN_CACHE_DIR 保存 Caovan 插件缓存、锁文件和预热标记。
CAOVAN_COLD_KERNEL_WARMUP=1 启用 Worker 侧冷内核预热。
CAOVAN_COLD_KERNEL_WARMUP_STRICT=1 启用严格预热模式。关键内核预热失败时直接报告错误,避免把故障留到第一个用户请求。
unset CAOVAN_FLASHQLA_* 清除旧 FlashQLA 实验变量,确保使用当前自研 GDNCore 路径。
TORCHINDUCTOR_CACHE_DIR 指定 TorchInductor 编译缓存目录。不要频繁删除,否则下次启动需要重新编译。
TORCHINDUCTOR_COMPILE_THREADS=1 限制 Inductor 编译线程,降低多 Worker 同时编译造成的 CPU 和内存压力。
TRITON_CACHE_AUTOTUNING=1 允许 Triton 使用和复用自动调优缓存。
TRITON_PTXAS_PATH 明确指定 CUDA 汇编器 ptxas 的路径。
VER / TS / LOG_FILE 生成包含版本号和时间戳的完整日志文件,便于排错与性能对比。

十五、vLLM 启动参数详细说明

参数 作用与建议
caovan-vllm-serve 模型路径 使用插件提供的启动入口运行模型。第一个位置参数是本地模型目录或 Hugging Face 模型标识。
--host 0.0.0.0 监听所有网络接口。只供本机使用时可以改为 127.0.0.1
--port 8000 OpenAI 兼容 API 服务端口。
--served-model-name API 请求中填写的模型名称,可以与本地文件夹名称不同。
--tensor-parallel-size 4 将模型张量切分到 4 张 GPU。该值必须与实际参与推理的 GPU 数量匹配。
--dtype half 模型非量化计算部分使用 FP16。
--max-model-len 262144 最大上下文长度为 262144 tokens。上下文越大,KV Cache 和启动规划开销越高。
--max-num-seqs 4 调度器同时管理的最大序列数量。它不是 MTP 深度。
--max-num-batched-tokens 8192 每轮调度允许处理的最大 Token 总数。较大值有利于吞吐,但会增加瞬时显存和调度压力。
--kv-cache-dtype fp8 使用 FP8 保存 KV Cache,降低长上下文显存占用并减少解码阶段的数据读取量。
--disable-custom-all-reduce 禁用 vLLM 自定义 All-Reduce,使用 NCCL/PyNCCL 路径。在部分老卡和复杂拓扑下更稳定。
--enable-prefix-caching 重复前缀请求可以复用已计算的缓存,降低重复 Prefill 成本。
--mamba-cache-mode align 让混合 Attention/Mamba/GDN 模型的缓存页进行对齐。
--additional-config 启用 Caovan 插件自动模式,并要求 Turbo3 路径必须可用。
--reasoning-parser qwen3 解析 Qwen3 系列模型的思考内容。
--enable-auto-tool-choice 允许模型自动决定是否进行工具调用。
--tool-call-parser qwen3_coder 使用适配 Qwen3 Coder 格式的工具调用解析器。
2>&1 | tee "$LOG_FILE" 把标准输出和错误输出同时显示在终端,并完整写入日志文件。

十六、两卡如何启动?

两卡示例:

export CUDA_VISIBLE_DEVICES=0,1

并把启动参数改为:

--tensor-parallel-size 2

少于四张参与 TP 的 SM75 GPU 时,插件自动使用 MTP=3

两卡完整启动参数(不带生成log日志文件)

cd ~
source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

export CUDA_VISIBLE_DEVICES=0,1
export OMP_NUM_THREADS=12
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
export PYTORCH_NVML_BASED_CUDA_CHECK=1

export CAOVAN_REQUIRE_TURBO3=1
export CAOVAN_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/caovan-sm75-turbo3"
export CAOVAN_COLD_KERNEL_WARMUP=1
export CAOVAN_COLD_KERNEL_WARMUP_STRICT=1

unset CAOVAN_FLASHQLA_PRECOMPILE
unset CAOVAN_FLASHQLA_FORCE
unset CAOVAN_FLASHQLA_DISABLE

export TORCHINDUCTOR_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/torchinductor"
export TORCHINDUCTOR_COMPILE_THREADS=1
export TRITON_CACHE_AUTOTUNING=1
export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas

caovan-vllm-serve /home/user/models/Qwen3.6-27B-AWQ-INT4 \
--host 0.0.0.0 \
--port 8000 \
--served-model-name Qwen3.6-27B-AWQ-INT4 \
--tensor-parallel-size 2 \
--dtype half \
--max-model-len 262144 \
--max-num-seqs 4 \
--max-num-batched-tokens 8192 \
--kv-cache-dtype fp8 \
--disable-custom-all-reduce \
--enable-prefix-caching \
--mamba-cache-mode align \
--additional-config '{"caovan":true,"caovan_mode":"auto","caovan_require_turbo3":true}' \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder

两卡启动参数状态下,两道测试题的表现:

  1. 生成一个可以直接部署的网页版俄罗斯方块游戏,要求界面美观、支持键盘操作和音效;(生成一个网页版的“俄罗斯方块”的游戏,要求UI界面漂亮,可以实际通过键盘进行操作,有音效效果!可以直接上线发布!)
    Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程
  2. 完成一道包含空间翻折与二面角最值计算的高中立体几何题。(在平面四边形ABCD中,AB=AC=CD=1,\angle ADC=30^{\circ}, \angle DAB =120^{\circ}。将 \triangle ACD 沿 AC 翻折至 \triangle ACP,其中 P 为动点。求二面角 A-CP-B 的 余弦值的最小值。)
    Caovan vLLM SM75 Turbo3 v0.4.35 vLLM外部推理加速插件的安装与使用教程

十七、如何手动对比 MTP=3 和 MTP=4?

四卡环境默认自动使用 MTP=4。需要强制测试 MTP=3 时,在启动前增加:

export CAOVAN_AUTO_SPEC=3

恢复四卡自动 MTP=4:

unset CAOVAN_AUTO_SPEC

公平对比时必须保持同一模型、同一提示词、同一最大输出长度、同一采样参数和相同缓存状态。建议至少测试三轮,并同时记录:

  • 持续生成 tokens/s;
  • MTP Mean acceptance length;
  • Avg Draft acceptance rate;
  • 首字延迟;
  • 显存占用;
  • 输出是否完整、正确和稳定。

十八、如何确认插件真正生效?

启动日志中应重点检查以下内容:

Caovan vLLM SM75 Turbo3 external plugin v0.4.35

speculative_config=auto MTP=4

vllm=0.21.0

Using fp8 data type to store kv cache

Using FLASHINFER attention backend

[Caovan GDNCore] ACTIVE REAL PREFILL

Application startup complete

实际请求后,还可以检查 Caovan 专用内核:

grep -E "caovan_sm75|caovan_gdncore|SpecDecoding metrics|Avg generation throughput" \
  ~/caovan-vllm-logs/v0.4.35-vllm021-serve-*.log

十九、测速方法

服务启动并完成一次预热后,可以使用插件自带基准工具:

source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

caovan-sm75-benchmark \
  --model Qwen3.6-27B-AWQ-INT4 \
  --max-tokens 768 \
  --repeats 3 \
  --output ~/caovan-vllm-logs/v0.4.35-benchmark.json

请把模型名称改成自己的 --served-model-name

该工具会输出每次请求的:

  • 完成 Token 数;
  • 总耗时;
  • 平均 tokens/s;
  • 输出字符数;
  • 输出内容摘要哈希;
  • 全部测试的平均速度和中位数。

当前基准工具测量的是整个非流式请求的平均生成速度,不等同于独立的 Prefill 吞吐或 TTFT 测试。

二十、常见日志说明

1. FA2 不支持 SM75

Cannot use FA version 2 ... compute capability >= 8

RTX 2080 Ti 是 SM75,不支持 FlashAttention 2。只要后续日志正常选择:

Using FLASHINFER attention backend

并最终完成服务启动,该提示不代表整个服务启动失败。

2. 首次启动出现 shared memory broadcast 提示

No available shared memory broadcast block found in 60 seconds

如果它出现在第一次 torch.compile 或 AOT 编译期间,而 Worker 日志仍在继续、最终能够出现 Application startup complete,通常表示某个 Worker 正在执行耗时编译,不一定是死锁。

如果它在 API 已启动之后持续重复,并且请求长时间没有任何输出,则需要检查是否仍有未覆盖的首次请求 JIT、Worker 异常或多卡通信阻塞。

3. 第一个请求仍出现 JIT compilation during inference

v0.4.35 已经预热关键公共内核,但不同模型、不同 Batch、不同输入长度和 MTP 形状仍可能触发新的编译变体。正式上线前执行一次 caovan-sm75-warmup 是当前更稳妥的生产部署方法。

4. 第一次启动很慢,第二次明显更快

这是 TorchInductor、AOT 和 Triton 缓存生效后的正常现象。不要随意删除:

~/.cache/torchinductor
~/.cache/vllm
~/.cache/caovan-sm75-turbo3

删除这些目录会让下次启动重新编译。

二十一、卸载插件

source ~/miniconda3/etc/profile.d/conda.sh
conda activate caovan-vllm

python -m pip uninstall -y caovan-vllm-sm75-turbo3

插件是独立 Wheel,不需要恢复被覆盖的 vLLM 源码文件。

二十二、总结

Caovan vLLM SM75 Turbo3 v0.4.35 的重点不是追逐最新框架版本,而是在 RTX 2080 Ti 仍然具有实际优势的 vLLM 0.21.0 + FlashInfer + FP8 KV Cache 基线上继续提升性能和稳定性。

本次四卡实测证明:

  • 四卡自动 MTP=4 正常生效;
  • 262K 上下文与 FP8 KV Cache 可以正常启动;
  • 复杂代码生成和数学推理均能完整正确输出;
  • 测试过程中没有出现 OOM;
  • 预热后长输出可以进入 100 tokens/s 以上区间;
  • 第一个冷请求仍可能存在模型特定 JIT,生产环境建议在开放流量前执行一次主动预热。

原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/caovan-vllm-sm75-turbo3-v0435-rtx-2080ti-guide/.html

(0)
打赏 微信扫一扫 微信扫一扫
朋远方的头像朋远方
caovan-vLLM SM75 Turbo3 v0.4.22 升级到 v0.4.33
上一篇 2026年6月11日 下午10:31
stable diffusion如何在最大程度地保持原姿势的基础上解决手部崩坏的问题|手部修复hands fix
下一篇 2023年12月18日 上午11:29

相关推荐

发表回复

登录后才能评论