Blank invalid/outputs using dynamic vram on ROCM 7.14 on gfx1201

在 AMD RDNA4(gfx1201,如 RX 9070 XT)上使用 ROCm 7.14 及更高版本且开启动态显存( --enable-dynamic-vram )时,ComfyUI 输出的图片或视频会出现全灰、部分灰或保存失败。优先尝试关闭动态显存(加 --disable-dynamic-vr

快速结论:在 AMD RDNA4(gfx1201,如 RX 9070 XT)上使用 ROCm 7.14 及更高版本且开启动态显存(--enable-dynamic-vram)时,ComfyUI 输出的图片或视频会出现全灰、部分灰或保存失败。优先尝试关闭动态显存(加 --disable-dynamic-vram)或回退到 ROCm 7.13 官方轮子。

适用环境:ComfyUI;Linux(Arch);AMD Radeon RX 9070 XT(gfx1201,16GB VRAM);ROCm 7.14/7.15/10.1 nightly;PyTorch 2.13 或 2.14 nightly;Python 3.14(尝试过)。

最快修复方案:暂无确认的一步修复方案。Issue 中用户验证可行的临时方案包括:①启动时加 --disable-dynamic-vram;②加 --fp32-vae(但会明显变慢,并可能需配合平铺解码);③回退到 ROCm 7.13 官方轮子(torch 2.11.0+rocm7.13.0 等)。

注意事项:ROCm 7.14 轮子、7.15 nightly、10.1 nightly 均复现了此问题;用户表示在 ROCm 7.13 下无需全精度 VAE 即可正常工作。可能原因或与 ROCm 7.14 中 HIP 缓存分配器/Dynamic VRAM 实现有关,但尚未在 Issue 中被完全定性。

问题场景

在 Linux 下(Arch)使用 AMD Radeon RX 9070 XT(gfx1201)运行 ComfyUI,安装了 ROCm 7.14 的 wheel(或 7.15/10.1 nightly),并通过以下命令启动:python main.py --supports-fp8-compute --fast --enable-manager --use-sage-attention --enable-dynamic-vram --disable-pinned-memory。用户使用 Anima 生成图像时,输出全灰或部分灰;1536×1536 每次必现,1024×1024 相对稳定;使用 Minimax 或 LTX 生成视频时,能跑完所有步骤但保存失败。

报错原文

Blank invalid/outputs using dynamic vram on ROCM 7.14 on gfx1201
[W808 20:56:06.299300604 HIPCachingAllocator.cpp:3934] memory allocation failed with OOM on device 0 while trying to allocate 8153726976 bytes (free: 6113198080, total: 17095983104).
av.error.ArgumentError: Invalid argument: 'avcodec_send_frame()' returned 22

原因分析

可能原因:动态显存(Dynamic VRAM)在 ROCm 7.14 的 gfx1201(RDNA4)上存在缺陷,导致 VAE 解码时显存被错误回收或分配(甚至先在解码阶段触发 OOM),进而输出损坏的图像/视频数据。ROCm 7.13 官方轮子(torch 2.11)未被影响,且用户尝试 ROCm 7.15 nightly、10.1 nightly 也无法解决,说明该问题很可能是 ROCm 7.14 之后(含)的 HIP 分配器/Dynamic VRAM 引入的回归。另有评论提到“Dynamic VRAM 已在 ROCm ≥7.14 默认开启”,这与用户仅加 --enable-dynamic-vram 也无法回避的现象一致。

环境排查

  • 确认 GPU 是 RDNA4(gfx1201,如 RX 9070 XT),显存大小 16GB。
  • 确认 PyTorch 版本为 2.13.0+rocm7.14.0(或 2.14.0a0+rocm10.1.0 等 nightly)。
  • 确认 ROCm SDK 版本为 7.14.0(或 7.15/10.1 nightly)。
  • 确认 Python 环境为 3.14(可尝试,但不是决定因素)。
  • 检查启动参数中是否包含 --enable-dynamic-vram(或系统是否默认启用了 dynamic VRAM)。
  • 对比环境:ROCm 7.13 + torch 2.11.0+rocm7.13.0 是否可正常工作。

解决步骤

  1. 首选临时方案:在启动命令中追加 --disable-dynamic-vram,例如 python main.py --disable-dynamic-vram --enable-manager --use-sage-attention,并测试 Anima/视频生成。
  2. 若无效或需要保留动态显存:尝试追加 --fp32-vae,这会强制 VAE 使用全精度,但会显著降低速度,且在高分辨率下可能需要配合 --tiled-vae 或 tiled decode 避免 OOM。
  3. 若可接受降级:卸载 ROCm 7.14 轮子,回退到已确认正常的 ROCm 7.13 官方列表:
    pip install --index-url https://repo.amd.com/rocm/whl-multi-arch/ "rocm[devel]==7.13.0" "torch[device-gfx1201]==2.11.0+rocm7.13.0" "torchvision[device-gfx1201]==0.26.0+rocm7.13.0" "torchaudio==2.11.0+rocm7.13.0" "amd-torch-device-gfx1201"
  4. 可优先尝试但未被确认有效:若需要保持 7.14,可尝试其他模型量化(如 Anima int8 convrot、fp8 等)或只保留必要启动参数(不设置环境变量)。但评论反馈这些均不能彻底解决。
  5. 报告上游:如果以上方案都不能接受,建议在 ROCm 仓库提交 Issue,说明是 ROCm 7.14 引入的动态显存回归(注意:ROCm 7.13 无此问题)。

验证方法

用 Anima 生成 1536×1536 图片,连续生成两张以上;若图像不再出现全灰/部分灰,且能正常保存,说明生效。若使用 Minimax/LTX 视频,需确认生成完成后成功保存视频文件(不再报 avcodec_send_frame() 错误)。

参考来源

Comfy-Org/ComfyUI #15436

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19387

发表回复

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