linux+rocm无法开启动态VRAM
-
遇到问题
使用的机智罗的工作流,都是7900XTX的卡,他是windows11,我是linux,据说使用动态VRAM能省时间
60-MiniMax-H3 文生视频测速工作流
hermes也处理了半天,最终还是关闭动态VRAM才能使用
https://github.com/Comfy-Org/comfy-aimdo注明了Nvidia GPUs only
社区也找了comfy-aimdo-rocm的,测试了也不行
论坛有没有linux+rocm的遇到这个问题# 动态 VRAM 问题总结 更新时间:2026-08-10 ## 环境 - GPU:AMD Radeon RX 7900 XTX,gfx1100,约 24 GiB VRAM - OS:Linux 6.8.0-136-generic - Python:3.10.12 - ComfyUI:0.31.0 - PyTorch:2.11.0+rocm7.2 - ROCm/HIP:7.2.26015 - comfy-aimdo:0.4.13 - comfy-kitchen:0.2.28 - XB_ToolBox:已安装并可加载 ## 问题概述 当前环境开启动态显存时,ComfyUI 可以正常启动,但大型视频工作流执行到模型加载或 VAE 解码阶段会报: `MemoryError: VBAR allocation failed` 日志对应: `comfy_aimdo.model_vbar.ModelVBAR` → `Could not reserve Virtual Address space for VBAR` 已在以下工作流中复现: - MiniMax H3:文本编码器/主模型加载阶段失败 ## 判断 这不是普通 GPU VRAM OOM:报错时仍有可用 VRAM,系统 RAM 和 Swap 也没有耗尽。问题位于 AMD ROCm 下 `comfy-aimdo` 动态 VBAR 虚拟地址分配路径,与工作流的分块数量不是直接因果关系;降低 VAE tile 可能改变负载,但不能根治。 ## 当前可用配置 已验证的稳定回退方案: - 启动参数:`--disable-dynamic-vram` - XB_ToolBox 静态 Block Swap:使用正数分块,例如 `50` 当前 ComfyUI 已恢复为静态显存模式。动态 VRAM 仅能作为实验配置使用,不能认为在本机大型视频工作流上稳定可用。 -
论坛里 Linux + ROCm 的 7900XTX 用户不少,这个问题基本就是 comfy-aimdo 的现状,不是你的配置问题。先给结论:官方只支持 NVIDIA(GitHub 上明写 Nvidia GPUs only),ROCm 全靠社区移植,动态 VRAM 在 Linux 上目前就是实验性质。
你报错的原因:VBAR(Virtual Base Address Register)只是预留 GPU 虚拟地址空间,本身零显存成本。
Could not reserve Virtual Address space for VBAR就是 HIP 版虚拟地址预留调用(hipMemAddressReserve)失败,发生在模型加载/VAE 解码阶段。和你判断的一致——不是显存 OOM,是 ROCm 下 VBAR 预留路径的问题。社区移植现状(两个来源都有坑):
- asagi4 的 PR(hipify-clang 转换)至今是草稿没合并,作者自己说「该释放内存时不释放,还会 pytorch OOM」。
- spheenik 的 fork(github.com/spheenik/comfy-aimdo 的 hip-rocm-support 分支)在 RX 9070 gfx1201 + ROCm 7.2 上验证可用,但只测过这一张卡。gfx1100(RDNA3)有人实测反馈:只有标准 ComfyUI 节点能走 AIMDO,自定义节点一包 ModelVBAR 就失效;fp8/fp16 标准权重在 gfx1100 上还会直接搞崩 amdgpu 驱动——H3 的 33B FP8 正好撞在枪口上。另外 HIP runtime 有个已知 bug:hipMemUnmap + hipMemRelease 不调 hipMemAddressFree 就不释放显存(ROCm/ROCm#6021),修复 4 月初才合进 rocm-systems#4363,发行版 HIP 未必带——多轮 eviction 会越跑越吃内存。
建议:
- 你现在的回退方案(--disable-dynamic-vram + XB_ToolBox 静态 block swap)就是 24G 跑 H3 FP8 在 Linux 上的正确姿势,继续用,别折腾动态了。
- 真想试动态:用 spheenik 的 fork 自己编译 aimdo.so,启动日志必须出现「comfy-aimdo inited for GPU: ...」和「DynamicVRAM support detected and enabled」两行——缺了就是移植没生效(有人手动拷 .so 结果没生效踩过这个坑);只跑标准节点;先 ulimit -v unlimited 并确认 /proc/sys/vm/overcommit_memory = 1,排除虚拟地址空间限制。
- 作者在 Windows 11 上不踩坑,是因为 Windows 的 7900XTX 走的是 DirectML/ROCm-Windows 预览路径,AIMDO 的 CUDA VMM 路径那边根本没激活,他的「动态显存省时间」经验跨不了平台。