caovan-vLLM SM75 Turbo3 v0.4.13 升级到 v0.4.22

caovan-vLLM SM75 Turbo3 是面向 RTX 2080Ti / SM75 架构显卡的 vLLM 外部加速插件,主要用于在老架构显卡上尽可能释放大模型推理性能。本文整理 caovan-vLLM SM75 Turbo3 从 v0.4.13 升级到 v0.4.22 的主要变化、适用场景、升级方法和注意事项。

本次升级的重点不是简单修改版本号,而是围绕真实用户环境中遇到的问题进行了连续修复:CUDA / Triton / vLLM 版本兼容、FlashInfer Sampler 编译失败、首次推理 JIT 卡顿、vLLM 多进程超时、FlashQLA legacy GDN 在部分客户环境中的 CUDA 资源句柄异常等。

caovan-vLLM SM75 Turbo3 v0.4.13 升级到 v0.4.22

一、v0.4.13 到 v0.4.22 的升级重点

点击下载v0.4.22版:

Premium

PREMIUM ACCESS

会员专属内容

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

v0.4.22 进一步面向真实客户环境进行兼容性增强,重点包括:

  • 增强 CUDA / Triton / vLLM 运行环境检测;
  • 强制 SM75-only 编译路径,减少多架构 JIT 混乱;
  • 隔离 JIT 缓存目录,避免不同插件版本、Python、Torch、CUDA 环境互相污染;
  • 默认保护 FlashInfer top-k / top-p Sampler,避免 SM75 + CUDA 13 环境中 sampler JIT 编译失败;
  • 关闭不稳定的自动 HTTP warmup,避免插件内部 warmup 请求打死 vLLM EngineCore;
  • 增加 vLLM 多进程冷启动 JIT 超时保护;
  • 新增 caovan-sm75-warmup 受控预热命令,把首次推理 JIT 成本提前到部署阶段;
  • 真正接入 CAOVAN_GDN_LEGACY_DISABLE=1,用于关闭客户环境中不稳定的 FlashQLA legacy GDN bridge;
  • 明确提醒:不要每次启动都清理 JIT 缓存,否则每次都会重新编译。

二、v0.4.22 解决了哪些实际问题?

1. 解决 FlashInfer Sampler 在 SM75 环境中的 JIT 编译失败问题

在部分 vLLM 0.21 + CUDA 13 + FlashInfer 环境中,vLLM 默认启用的 FlashInfer top-k / top-p sampler 会在运行时触发 JIT 编译。如果客户环境中的 nvcc、ptxas 或 CUDA 架构参数不兼容,就可能导致服务无法启动或首次推理失败。

v0.4.22 会默认禁用这条容易出问题的 sampler JIT 路径:

VLLM_USE_FLASHINFER_SAMPLER=0

这不是关闭 caovan 插件加速,而是让 vLLM 采样器回到更稳定的 PyTorch-native 路径。Turbo3、MTP、Marlin、PIECEWISE CUDA Graph 等主加速路径仍然保留。

2. 解决 vLLM TP=2 冷启动 JIT 容易被默认超时误杀的问题

在 TP=2 多进程推理时,SM75 首次启动可能需要进行较长时间的 Triton / Torch Compile / MTP 编译。vLLM 默认执行超时时间较短,可能把正常编译误判为 worker 卡死。

v0.4.22 默认拉长以下超时时间:

VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS=1800
VLLM_ENGINE_ITERATION_TIMEOUT_S=1800
VLLM_RPC_TIMEOUT=1800000

这样可以避免首次 JIT 编译尚未完成时,vLLM EngineCore 被提前判定为异常。

3. 取消自动 HTTP warmup,避免插件内部请求打死 EngineCore

早期测试中曾尝试在服务启动后由插件自动发起本机 HTTP warmup 请求,用来提前触发首次推理 JIT。但真实环境证明,这种自动 warmup 可能会和 vLLM EngineCore 的首次编译过程冲突,甚至造成 EngineDeadError

因此 v0.4.22 默认关闭自动 HTTP warmup。启动日志中看到下面这行是正常的:

post_start_warmup=disabled-default

4. 新增受控预热命令 caovan-sm75-warmup

虽然自动 HTTP warmup 被关闭,但首次真实推理仍然可能触发一些 Triton / MTP / slot-mapping / Mamba / GDN / Eagle kernel 的 JIT 编译,从而导致第一次请求等待较久。

v0.4.22 新增独立命令:

caovan-sm75-warmup

正确使用方式是:先启动 vLLM 服务,等待 Application startup complete,然后另开一个终端执行:

caovan-sm75-warmup \
  --api-base http://127.0.0.1:8000 \
  --model Qwen3.6-27B-AWQ-INT4

等看到:

[Caovan] warmup=READY

再接入 One-API 或正式客户端。这样可以把用户第一次请求需要承担的 JIT 编译成本,提前移动到部署预热阶段。

5. 真正接入 GDN Legacy 关闭开关

部分客户机器,尤其是系统内存较小、DDR3 平台、CUDA 工具链较复杂的环境,在 FlashQLA legacy GDN prefill warmup 阶段可能出现:

CUDA error: invalid resource handle
GDN prefill kernel warmup failed
Caovan SM75 Turbo3 dispatch failed on interface legacy-gdn-linear-attn-v020

这类问题说明 FlashQLA legacy GDN bridge 在该客户环境中不稳定,不能强行继续走这条路径。

v0.4.22 真正接入了以下开关:

export CAOVAN_GDN_LEGACY_DISABLE=1

设置后,插件不会再把 vLLM 上游 GDN rule 替换成 flashqla_legacy。启动日志中应看到:

gdn_legacy=disabled-by-user

三、推荐升级环境

当前 v0.4.22 主线建议环境如下:

  • 系统:Ubuntu 22.04 LTS
  • 显卡:RTX 2080Ti / SM75,推荐 2 张 22G 版本
  • Python:3.10 或 3.11
  • vLLM:0.21.0
  • CUDA:12.x / 13.x,取决于 PyTorch 与 Triton 环境
  • 模型:Qwen3.6-27B-AWQ-INT4
  • 系统内存:最低建议 64G,推荐 128G 或更高

需要特别说明:NVLink 不能替代系统内存。NVLink 主要用于 GPU 与 GPU 之间通信,而 vLLM 启动、模型加载、JIT 编译、MTP 草稿模型和调度缓存仍然会占用系统内存。

如果客户机器只有 32G DDR3 内存,虽然不一定完全不能启动,但属于高风险环境。尤其当模型 checkpoint 接近 19G 时,系统内存余量会非常紧,首次编译和预热阶段更容易出现异常。

四、v0.4.13 升级到 v0.4.22 的安装命令

假设压缩包已经放在用户根目录,例如:

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

可以执行以下命令升级:

cd ~

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

pkill -f "vllm|caovan-vllm-serve" || true

rm -rf ~/caovan-vllm-sm75-turbo3-v0.4.22
rm -rf ~/caovan-vllm-sm75-turbo3-v0.4.22-external-plugin

unzip -o ~/caovan-vllm-sm75-turbo3-v0.4.22-external-plugin.zip -d ~

WHL="$(find ~ -type f -path '*caovan-vllm-sm75-turbo3-v0.4.22*/dist/caovan_vllm_sm75_turbo3-0.4.22-py3-none-any.whl' | head -n 1)"

test -n "$WHL" || { echo "没有找到 v0.4.22 whl 文件"; exit 1; }

python -m pip uninstall -y caovan-vllm-sm75-turbo3 caovan_vllm_sm75_turbo3
python -m pip install --force-reinstall --no-cache-dir "$WHL"

python - <<'PY'
import caovan_vllm_sm75_turbo3, pathlib
print("插件实际加载路径:", pathlib.Path(caovan_vllm_sm75_turbo3.__file__).resolve())
print("插件版本:", getattr(caovan_vllm_sm75_turbo3, "__version__", "unknown"))
PY

最后必须看到:

插件版本: 0.4.22

五、标准启动参数

下面是推荐的 2×RTX 2080Ti 22G / TP=2 启动参数:

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_FLASHQLA_PRECOMPILE=1
export CAOVAN_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/caovan-sm75-turbo3"

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 /data/qwen/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 2 \
  --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

启动后应重点确认日志中出现:

Caovan vLLM SM75 Turbo3 external plugin v0.4.22
runtime=PASS
sm75=2/2
flashinfer_sampler=disabled-sm75-guard
post_start_warmup=disabled-default

六、不要每次启动都清理缓存

升级插件、CUDA、PyTorch、vLLM 或缓存损坏时,可以清理缓存。但日常启动不建议每次都执行清理命令。

以下命令只建议在升级或排错时使用:

rm -rf ~/.cache/caovan-sm75-turbo3
rm -rf ~/.cache/torch_extensions
rm -rf ~/.cache/torchinductor
rm -rf ~/.cache/flashinfer
rm -rf ~/.cache/vllm

如果每次启动前都清理这些目录,就等于每次都强制重新编译,第一次启动和第一次推理都会重新变慢。

七、常见问题说明

1. NVLink 能不能代替系统内存?

不能。NVLink 主要用于 GPU 与 GPU 之间通信,不能代替系统内存。vLLM 启动、模型加载、JIT 编译、MTP 草稿模型和调度缓存仍然会占用系统内存。

2. 32G DDR3 内存能不能跑?

32G DDR3 属于高风险环境。即使显卡显存足够,系统内存也可能在模型加载和编译阶段非常紧张。建议最低升级到 64G,比较稳妥的是 128G 或更高。

3. 看到 No available shared memory broadcast block found 是不是一定失败?

不一定。如果它出现在启动或首次推理阶段,通常说明某个 worker 正在进行耗时编译、模型加载或缓存初始化。只要后续服务能继续运行并返回 200,就不一定是致命错误。但如果后面出现 EngineDeadErrorTimeoutError 或 500 错误,就需要进一步排查。

4. 看到 FlashInfer top-k/top-p sampling disabled 是不是关闭加速?

不是。这只是关闭 FlashInfer sampler JIT 路径,避免 SM75 / CUDA 13 环境中采样器编译失败。Turbo3、MTP、Marlin 等主推理加速路径仍然保留。

5. 什么时候需要设置 CAOVAN_GDN_LEGACY_DISABLE=1?

当日志中出现 CUDA error: invalid resource handleGDN prefill kernel warmup failedflashqla_legacy.pylegacy-gdn-linear-attn-v020 相关错误时,建议设置:

export CAOVAN_GDN_LEGACY_DISABLE=1

这会关闭可选的 FlashQLA legacy GDN bridge,避免客户环境中不稳定的增强路径影响服务启动和推理。

八、总结

caovan-vLLM SM75 Turbo3 从 v0.4.13 升级到 v0.4.22,主要目标是让 RTX 2080Ti / SM75 老架构显卡在 vLLM 0.21 环境中获得更稳定的推理加速体验。

v0.4.13 更偏向基础自动配置和启动展示;v0.4.22 则针对真实客户环境补齐了 CUDA 兼容性、JIT 缓存隔离、FlashInfer sampler 保护、vLLM 超时保护、受控 warmup、GDN Legacy 可选关闭等关键能力。

对于标准 2×RTX 2080Ti 22G、系统内存 64G 以上的环境,v0.4.22 可以作为当前推荐测试版本。对于 32G DDR3、X99、混合 CUDA 工具链等高风险环境,建议使用兼容启动参数,并优先确认 gdn_legacy=disabled-by-user 是否生效。

后续版本将继续围绕真实客户反馈完善兼容性表,逐步把不同硬件、不同 CUDA / Python / vLLM 环境下的最佳启动参数固化下来。

参考项目 / 致谢 / References

[1] vLLM Project. vLLM: high-throughput LLM serving engine.

https://github.com/vllm-project/vllm

[2] Qwen Team, Alibaba Group. FlashQLA: Flash Qwen Linear Attention.

https://github.com/QwenLM/FlashQLA

https://qwen.ai/blog?id=flashqla

[3] FlashInfer Team. FlashInfer: GPU kernels for LLM serving.

https://github.com/flashinfer-ai/flashinfer

[4] Qwen Team, Alibaba Group. Qwen / Qwen3 / Qwen3.6 model family.

https://github.com/QwenLM/Qwen

https://github.com/QwenLM/Qwen3

https://github.com/QwenLM/Qwen3.6

[5] PyTorch Contributors. PyTorch.

https://github.com/pytorch/pytorch

[6] Triton Contributors. Triton.

https://github.com/triton-lang/triton

[7] Flash Linear Attention Contributors. Flash Linear Attention.

https://github.com/fla-org/flash-linear-attention

[8] Hugging Face. Transformers.

https://github.com/huggingface/transformers

[9] vLLM Project. compressed-tensors.

https://github.com/vllm-project/compressed-tensors

[10] Dao-AILab. FlashAttention.

https://github.com/Dao-AILab/flash-attention

[11] NVIDIA. CUDA Toolkit.

https://developer.nvidia.com/cuda-toolkit

[12] weicj. vLLM-2080Ti-Definitive.

https://github.com/weicj/vLLM-2080Ti-Definitive

[13] weicj. 2080Ti-LLM-Toolbox.

https://github.com/weicj/2080Ti-LLM-Toolbox

[14] weicj. FlashQLA-SM70-SM75.

https://github.com/weicj/FlashQLA-SM70-SM75

[15] vLLM Project. FlashQLA integration discussion.

https://github.com/vllm-project/vllm/issues/43089

特别感谢@SPOTLITE 贡献:

https://github.com/weicj/vLLM-2080Ti-Definitive

https://github.com/weicj/2080Ti-LLM-Toolbox

https://github.com/weicj/FlashQLA-SM70-SM75

原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/caovan-vllm-sm75-turbo3-v0413-to-v0422-upgrade/.html

(0)
打赏 微信扫一扫 微信扫一扫
朋远方的头像朋远方
IPMonitor Windows桌面右上角实时显示IP的轻量网络状态查看工具
上一篇 2026年6月7日 下午3:42
Ubuntu22.04安装NVIDIA驱动+cuda
下一篇 2024年10月10日 上午10:38

相关推荐

发表回复

登录后才能评论