[XPU] Segfault in WanVAE CausalConv3d during VAE encode/decode on Intel GPU

用户在 ComfyUI 中加载 WanVAE 模型(例如 Qwen-Image VAE)执行 VAE encode(图生视频或视频处理)时,在 Intel XPU 设备上触发段错误。该问题影响所有基于 WanVAE 架构的模型,包括 Wan 2.1/2.2 视频模型和 Qwen-Image 模型。

[XPU] Segfault in WanVAE CausalConv3d during VAE encode/decode on Intel GPU

[XPU] Segfault in WanVAE CausalConv3d during VAE encode/decode on Intel GPU

快速结论:该段错误通常发生在 Intel Arc/Battlemage GPU 上运行 WanVAE 系列模型(Wan 2.1/2.2、Qwen-Image)的 VAE encode/decode 时。优先确认是否已启用 ComfyUI 自带的 CPU offload 工作区,或更新至最新的 oneAPI 工具包环境。

问题场景

用户在 ComfyUI 中加载 WanVAE 模型(例如 Qwen-Image VAE)执行 VAE encode(图生视频或视频处理)时,在 Intel XPU 设备上触发段错误。该问题影响所有基于 WanVAE 架构的模型,包括 Wan 2.1/2.2 视频模型和 Qwen-Image 模型。

报错原文

Fatal Python error: Segmentation fault

Current thread (most recent call first):
  File "repro1_vae_causal_conv.py", line 63 in main
    out = model.encode(x)

Segmentation fault (exit 139)

段错误发生在 C 层(PyTorch Conv3d on XPU),Python 堆栈在 .encode() 处终止。

原因分析

触发路径:VAEEncode → WanVAE.encode() → Encoder3d → CausalConv3d.forward()(单帧快路径)→ Conv3d._conv_forward(权重切片)→ torch.nn.functional.conv3d → 段错误。

可能原因:Intel XPU 的 PyTorch Conv3d 后端在权重切片(weight slicing)与 bf16 数据类型组合时存在缺陷。当 CausalConv3d.forward() 处理单帧输入(T=1)时,会进入快路径并触发 autopad="causal_zero" 的权重切片逻辑,产生非标准形状或 stride 的权重张量,导致 Intel XPU SYCL 后端的 conv3d 调用崩溃。

环境排查

  • ComfyUI 版本:验证是否在 v0.22.0-124-gc87384f2 或更高版本(commit c87384f2b8f9e9a7f717e1a269b860698b6634bf,2026-06-02)
  • PyTorch 版本:2.11.0+xpu 或当前使用版本
  • Python 版本:3.13.3
  • GPU 型号:Intel Arc/Battlemage(例如 Intel(R) Graphics [0xe211])
  • 驱动版本:xe kernel driver, Linux 6.14.0-1008-intel 或其他内核版本
  • oneAPI 版本:检查是否已更新至 Intel oneAPI 2026.0.0 或更高版本
  • 确认 ComfyUI 中 vae_cpu_offload 是否被禁用或回退

解决步骤

  1. 启用 CPU offload 工作区(可优先尝试)
    确认 comfy/sd.py:1143 中的现有工作区未被篡改或移除。此工作区会在检测到 XPU 设备且 latent_dim ≥ 3 时自动将 VAE encode/decode 卸载至 CPU:
    vae_cpu_offload = (self.device.type == 'xpu' and self.latent_dim >= 3)
    如果该代码已被硬编码绕过,请恢复。
  2. 更新至最新 oneAPI 环境
    Issue 已在 Intel oneAPI 2026.0.0(2026.0.0.20260331)环境中无法复现。建议将 Intel oneAPI 工具包更新至 2026.0.0 或更高版本,并重新安装对应的 PyTorch XPU 版本(如 2.11.0+xpu 或更新的兼容版本)。参考:oneAPI 2026 版本发布说明
  3. 确认 CPU offload 日志提示
    在启用 CPU offload 工作区后,可额外输出警告日志(例如 print("VAE offloaded to CPU due to XPU Conv3d issue")),以便确认 offload 是否正确生效。
  4. 降级或改用非 bf16 精度(如无 oneAPI 更新)
    如果更新 oneAPI 不可行,可尝试将 VAE 模型转换为 fp32 数据类型运行,以规避潜在的 bf16 Conv3d 缺陷。
  5. 提交上游 PyTorch XPU Bug 报告
    如果问题仍然存在,请向 intel/intel-extension-for-pytorch 或 PyTorch XPU 后端提交 Issue,附带复现代码和完整的段错误堆栈信息。

验证方法

执行一个 WanVAE encode 操作(例如加载 Qwen-Image VAE 模型对单帧图像进行 encode),确认不再出现 exit code 139 的段错误。如果使用 CPU offload,验证 VAE encode 是否正常完成,并留意日志中是否有 offload 相关输出。

参考来源

Comfy-Org/ComfyUI #14513

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 8628

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注