快速结论:这个报错通常出现在使用 VLLM_TARGET_DEVICE=empty 构建的 vLLM v0.20.2 上,而 v0.20.2 默认启用 V1 engine,V1 engine 的模型初始化会调用未编译进 empty 构建的 C++ 扩展,从而抛出 No module named 'vllm._C' 相关错误。优先排查构建类型与 vLLM 版本是否匹配,新版本可能已修复。
适用环境:Issue 已确认环境为 vLLM v0.20.2、empty 构建(VLLM_TARGET_DEVICE=empty)、Kunlunxin P800 × 8、Python 3.10、PyTorch 2.9.0。后续评论验证使用当前 main 分支、empty 构建、平台解析为 UnspecifiedPlatform(未检测到 CUDA/ROCm/CPU/XPU)。
最快修复方案:暂无确认的一步修复方案。Issue 报告者未找到可行 workaround,只能改用包含 C++ 扩展的完整构建,或降级到 V1 成为默认引擎之前的 vLLM 版本。后续评论指出当前 main 分支已无法复现,可优先尝试升级到已包含 CustomOp dispatch 修复的较新版本。
注意事项:“升级到 main 已修复”来自评论者手动复现,并非官方针对性修复,相关改动可能源于 #32806 或 #30547 等无关的 CustomOp dispatch 变更,尚未在 v0.20.2 上验证。Issue 中未提供 v0.20.2 强制回退 V0 engine 的环境变量或参数。
问题场景
在 vLLM v0.20.2 上使用 empty 构建(VLLM_TARGET_DEVICE=empty),通过 python -m vllm.entrypoints.openai.api_server 启动 OpenAI 兼容服务,或直接调用 LLM() API 加载任意模型时触发。v0.20.2 默认使用 V1 engine(vllm.v1.engine.async_llm.AsyncLLM),而 empty 构建不编译 C++ 扩展,V1 engine 的模型初始化路径依赖 torch.ops._C.silu_and_mul 等 C++ 算子,导致初始化失败。
报错原文
WARNING: Failed to import from vllm._C: ModuleNotFoundError("No module named 'vllm._C'")
...
(EngineCore) self.act_fn = SiluAndMul()
(EngineCore) self.op = torch.ops._C.silu_and_mul
(EngineCore) AttributeError: '_OpNamespace' '_C' object has no attribute 'silu_and_mul'
原因分析
最可能的原因是三者的组合不兼容:
- vLLM v0.20.2 默认启用 V1 engine;
- empty 构建不编译 C++ 扩展,因此不存在
vllm._C模块; - V1 engine 的模型初始化依赖
torch.ops._C.silu_and_mul等 C++ 算子。
调用链为 AsyncLLM.from_vllm_config() → EngineCoreClient.make_async_mp_client() → executor_class(vllm_config) → driver_worker.load_model() → initialize_model() → Qwen3ForCausalLM.__init__() → Qwen3MLP.__init__() → SiluAndMul.__init__() → self.op = torch.ops._C.silu_and_mul,最终在该行失败。Issue 报告者未找到强制使用 V0 engine 的环境变量或参数。
环境排查
- 确认 vLLM 版本是否为 v0.20.2,以及是否使用默认 V1 engine。
- 确认构建类型:是否设置了
VLLM_TARGET_DEVICE=empty。 - 确认是否安装了包含 C++ 扩展的完整构建,可以检查
vllm._C模块是否存在。 - 确认 Python 版本(Issue 为 3.10)与 PyTorch 版本(Issue 为 2.9.0)。
- 确认硬件平台:Issue 为 Kunlunxin P800 × 8;后续评论中的空构建复现环境为
current_platform解析到UnspecifiedPlatform(未检测到 CUDA/ROCm/CPU/XPU)。 - 确认当前代码分支或版本是否已包含 CustomOp dispatch 相关修复。
解决步骤
- 先确认问题是否与 empty 构建有关:检查运行环境中是否存在
vllm._C模块,或日志中是否出现Failed to import from vllm._C。 - 如果必须使用 v0.20.2:该版本下 empty 构建与默认 V1 engine 不兼容。Issue 中未提供可用的强制 V0 engine 方案,报告者认为只能改用完整构建(包含 C++ 扩展),或降级到 V1 成为默认引擎之前的 vLLM 版本。
- 可优先尝试升级到较新版本:后续评论者在当前 main 分支(远晚于 v0.20.2)使用 empty 构建、平台解析为
UnspecifiedPlatform时,直接实例化SiluAndMul不再触发AttributeError,dispatch_forward会在算子对当前平台未启用时回退到forward_native,而不是默认走forward_cuda。 - 评论者推测该行为变化来自无关的 CustomOp dispatch 改动(可能为 #32806 或 #30547),并非针对本 Issue 的定向修复。升级后建议自行复现验证,确认所选版本确实包含相应改动。
验证方法
在目标版本上使用 empty 构建重新启动 vLLM 服务或调用 LLM() API 加载模型。如果不再出现 No module named 'vllm._C' 或 AttributeError: '_OpNamespace' '_C' object has no attribute 'silu_and_mul',且模型能够正常完成初始化并推理,则说明问题已缓解或解决。由于后续验证仅覆盖手动设置 vllm_config 上下文后实例化 SiluAndMul 的场景,建议再跑一遍完整的 server 或 LLM() 加载流程确认。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


