快速结论:此报错通常发生在 vLLM V1 引擎启用 draft_model 投机解码并开启张量并行(TP>1)时,且草稿模型的 hidden_size 大于目标模型的 hidden_size。优先排查 fused allreduce+RMSNorm workspace 的创建逻辑,确认其 hidden_dim 是否仅基于目标模型计算。
适用环境:vLLM v0.27.1,V1 引擎,dtype=torch.bfloat16;2×H100 PCIe 80GB 或 2×H100 NVL,tensor_parallel_size=2;compilation_config.pass_config.fuse_allreduce_rms: True(默认),FlashInfer allreduce 后端。
最快修复方案:暂无确认的一步修复方案。Issue 中尝试过在 pass __init__ 将 hidden_dim 改为 max(target_hidden, draft_hidden),但未能解决,因为实际校验的 workspace 元数据在更上游的位置创建。需要等待或实施针对 workspace 创建站点的修复。
注意事项:此问题与 MNNVL 后端(#50877 / #50932)是不同路径,不能混为一谈;MNNVL 的 admission guard 模式不适用于此 TRT-LLM fused allreduce 路径。若使用支持 MNNVL 的硬件并自动选择该后端,可能暂时规避,但 2×H100 PCIe 的 TRT-LLM 路径仍会触发。
问题场景
用户在 vLLM V1 引擎下运行投机解码(speculative decoding),使用 draft_model 方法,并设置了 --tensor-parallel-size 2。当草稿模型的 hidden_size(如 Qwen3-4B 的 2560)大于目标模型的 hidden_size(如 Qwen3-30B-A3B 的 2048)时,引擎在初始化阶段崩溃。复现参数为:目标模型 Qwen/Qwen3-30B-A3B,草稿模型 Qwen/Qwen3-4B,TP=2。
报错原文
ValueError: Workspace validation failed:
- token_num (8192) * hidden_dim (2560) exceeds workspace max_token_num (8192) * hidden_dim (2048). This may cause Illegal Memory Access.
原因分析
可能原因:vLLM 的 fuse_allreduce_rms 编译 pass 在构建 FlashInfer TRT-LLM fused allreduce+RMSNorm workspace 时,token 预算(max_token_num)是基于目标模型的 hidden_size 计算的。当草稿模型在 TP 下以更大的 hidden_size 运行其 forward 时,会超出该 workspace 的容量,触发 check_trtllm_allreduce_fusion_workspace_metadata 的校验失败。
Issue 中的诊断补丁已确认:workspace 创建发生在编译期 pass 的 __init__ 阶段(eager 创建),并非运行时。[DIAG-INIT] 显示 pass 初始化时已能看到草稿模型的 hidden_size(2560),但 [DIAG-CREATE] 创建的 workspace 仍使用目标模型的 hidden_dim(2048)。直接在 pass __init__ 中改用 max() 无效,说明校验所依据的元数据在更上游的创建站点生成,修复需要触及 workspace 实际创建代码。
环境排查
- 确认 vLLM 版本是否为 v0.27.1 或更高(V1 引擎)
- 确认
tensor_parallel_size是否大于 1(TP=1 时无此问题) - 确认草稿模型与目标模型的
hidden_size大小关系(draft > target 即触发) - 检查
compilation_config.pass_config.fuse_allreduce_rms是否为默认启用(True) - 确认 FlashInfer allreduce 后端是否为 TRT-LLM(非 MNNVL 路径)
解决步骤
- 复现问题:运行
vllm serve Qwen/Qwen3-30B-A3B --tensor-parallel-size 2 --max-model-len 4096 --speculative-config '{"method":"draft_model","model":"Qwen/Qwen3-4B","num_speculative_tokens":1}',确认报错。 - 先验证是否因 TP>1 且 draft_hidden > target_hidden 导致:将 TP 改为 1,或换用 hidden_size 较小的草稿模型(如 Qwen3-0.6B,1024),确认不崩溃。
- 如需诊断根因,可运行维护者提供的诊断分支(
khushali9/vllm@trt-llm-workspace-size),通过VLLM_USE_PRECOMPILED=1 uv pip install -e . --torch-backend=auto安装,然后复现并抓取DIAG*日志,确认 workspace 创建站点和实际 hidden_dim。 - 根据诊断结果,fix 需要修改 workspace 创建逻辑,使其 hidden_dim 同时考虑草稿模型的最大 hidden_size。在官方发布修复前,可优先尝试将 TP 设为 1,或改用 hidden_size 不超过目标模型的草稿模型。
验证方法
运行相同的 serve 命令,观察引擎能否正常完成初始化并进入推理。若使用诊断分支,检查 DIAG 日志中 _create_workspace 的 hidden_dim 是否已正确反映草稿模型的 hidden_size(2560),且不再出现 Workspace validation failed 错误。可参考 Issue 中的三组 A/B/C 对照测试确认修复效果。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![Eval bug: [Bug] server-intel latest crashes during warmup on Intel Arc iGPU (Meteor Lake) — regression from b8477](https://www.chat-gpts.plus/wp-content/uploads/2026/08/21474-57b95827-768x403.jpg)
