AMD GPU 上的 ComfyUI:使用 ROCm 逐 步操作

在 AMD 显卡上运行 ComfyUI 已不再是 Linux 专属的折腾:AMD 和 Comfy.org 如今已为 Windows 下基于 ROCm 的安装提供文档,与 Linux 下从源码安装的传统途径并列。本 ComfyUI AMD 指南介绍三种可靠的途径(ComfyUI Desktop、手动安装、Docker)、证明 Radeon 确实在执行计算的检查方法,以及最常遇到的驱动或内存错误。本指南不包含任何速度测试:只有操作步骤、其局限性以及可供查阅的资料来源。
#ComfyUI AMD:该选择哪种安装方式
ComfyUI 依赖于 PyTorch。在 NVIDIA 显卡上,PyTorch 通过 CUDA 运行;在 Radeon 上,则通过 ROCm——AMD 的计算栈,其 HIP 层有意提供与 CUDA 相近的接口。正因如此,即使在 AMD 显卡上,ComfyUI 也会显示“cuda”:无论品牌如何,PyTorch 都沿用这个名称来指代设备。因此,全部工作就在于获得一个针对 ROCm 编译的 PyTorch 版本,以及一个允许它访问 GPU 的驱动。
- Windows,新款 Radeon
- 带 ROCm 的 ComfyUI Desktop,这是 AMD 文档中介绍、Comfy.org 宣布的官方方式。它也是最简单的:安装程序会自动处理 Python、PyTorch 及各项依赖。
- Linux
- 使用 Python 虚拟环境和 PyTorch ROCm wheel 包从源码安装。这是历史最久、文档最完善、支持显卡最多的方式,对于未列入支持列表的型号也可通过变通方法使用。
- Linux、服务器或共享机器
- 基于 AMD 提供的 ROCm 镜像使用 Docker。便于将 ComfyUI 与系统其他部分隔离,出现问题时也能从头重来。
- Windows,旧款 Radeon
- 没有官方 ROCm 方案。备选方案(DirectML,或改用 Linux)在故障排查部分介绍。
如果你是 ComfyUI 新手,请把我们的新手安装指南放在手边:界面、节点和模型存放位置在 AMD 与 NVIDIA 上完全相同。唯一不同的是硬件层,而这正是本指南要讲的内容。
#前提条件与支持的显卡
借助我们的经验和引导式路径,上手你的工具,在本地创作图像。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
ROCm 支持的 GPU 列表每个版本都会变化,而且 Windows 和 Linux 下的列表也不相同。不要轻信论坛或旧教程:请在安装时打开「ROCm on Radeon and Ryzen」文档中的兼容性矩阵,在当前版本的表格中查找您的显卡和系统。
- 架构
- 官方途径主要面向 RDNA 3(RX 7000)和 RDNA 4(RX 9000)Radeon 显卡,以及部分带集成显卡的 Ryzen AI 处理器。RDNA 2(RX 6000)在 Linux 下仍可使用,但通常需要设置一个绕过变量。请在兼容性矩阵中核实您的确切型号。
- Windows 驱动
- AMD Software Adrenalin Edition,版本不低于 AMD 安装页面标明的最低版本。版本过旧是 Windows 下安装失败的首要原因。
- Linux 驱动
- 使用较新发行版自带的 amdgpu 内核驱动,并确保可以访问 /dev/kfd 和 /dev/dri 设备。PyTorch ROCm wheel 包已内置所需的计算库;不过安装完整的 ROCm 仍然有用,可以获得 rocminfo 等诊断工具。
- Python
- 手动安装时,需要所选 PyTorch wheel 包支持的 Python 版本。pytorch.org 的选择器会给出说明。
- 磁盘
- 仅 PyTorch ROCm 本身就需要数 GB 空间,此外还要加上图像模型的大小,每个模型从几 GB 到十几 GB 不等。
- 视频内存
- 它决定了可以使用哪些模型,这一点与 NVIDIA 上相同。在带集成显卡的 Ryzen 处理器上,分配给 GPU 的内存大小可在 BIOS 或 AMD 软件中设置。
#Windows:搭配 ROCm 的 ComfyUI Desktop
ComfyUI Desktop 是 Comfy.org 的官方安装程序。在受支持的 AMD 显卡上,它会安装兼容 ROCm 的 PyTorch 版本,无需你手动处理 pip 索引。AMD 关于在 Windows 下安装 ComfyUI 的页面以及 Comfy.org 关于官方支持 AMD ROCm 的公告是两份应当遵循的参考资料:如与本指南有出入,以它们为准。
- 01更新驱动程序安装 AMD 文档要求的 AMD Software Adrenalin Edition 版本,然后重启。视版本而定,Adrenalin 安装程序还会提供一些可选的 AI 组件:按照本指南操作并不需要它们。
- 02下载 ComfyUI Desktop请从 comfy.org 的下载页面获取 Windows 安装程序,切勿从镜像站点下载。使用您平常的用户账户运行它。
- 03选择 AMD GPU在选择硬件的步骤中,选择 AMD 选项。如果该选项没有出现或呈灰色不可选,说明您的安装程序版本或显卡不受支持:请先查看兼容性矩阵,再继续操作。
- 04选择数据存放位置请指定一个位于有足够空间的磁盘上的文件夹:模型、输出和自定义节点会很快在其中累积。如果您之前已经安装过 ComfyUI,安装向导可以沿用其中的模型。
- 05等待安装完成首次启动时会下载 Python、PyTorch 及其依赖项。过程耗时且体积庞大,这是正常的。在界面显示出来之前,请不要关闭窗口。
- 06检查日志从应用菜单中打开日志,查找“Device”一行:其中应显示您的 Radeon 显卡名称。如果显示的是处理器,说明 PyTorch 没有找到 GPU:请参阅故障排除部分。
如需无安装程序的便携版,请查看 ComfyUI GitHub 仓库的发布页面:确认当前版本是否提供面向 AMD 显卡的压缩包,并按照随附说明操作。不要将为 NVIDIA 设计的压缩包用于 AMD 显卡:其中包含的是 CUDA 版 PyTorch,永远无法识别你的 Radeon。
#Linux:从源码安装 AMD 版 ComfyUI
在 Linux 下,手动安装仍是最灵活的方式。其原理可归纳为三点:授予您的用户访问 GPU 的权限,在虚拟环境中安装 PyTorch ROCm,然后在其上安装 ComfyUI,且不覆盖该 PyTorch。
- 01授予 GPU 访问权限将你的用户添加到 render 和 video 组,然后注销并重新登录。否则,PyTorch 无法打开 /dev/kfd,也就识别不到任何 GPU。
- 02确认系统能识别显卡如果已安装 ROCm,rocminfo 应会列出一个 GPU 类型的代理(agent),并带有 gfx 标识符(例如 RX 7900 XTX 对应 gfx1100,RX 9070 XT 对应 gfx1201)。请记下这个标识符:排查故障时会用到。
- 03创建 Python 环境克隆 ComfyUI,在其目录中创建虚拟环境并激活。此后每次工作会话都要先执行这一激活步骤。
- 04首先安装 PyTorch ROCm在 pytorch.org 的 Get Started 页面上,依次选择 Linux、Pip、Python 和 ROCm:网站会显示确切的命令以及当前的 ROCm 版本。请在安装其他任何依赖项之前先安装这个 PyTorch。
- 05安装并启动 ComfyUI安装 ComfyUI 的依赖项,然后运行 main.py。界面默认在 http://127.0.0.1:8188 上响应。
ComfyUI 的 README 还介绍了一种适用于 Windows 和 Linux 的实验性方式,使用 AMD 为部分 RDNA 3、3.5 和 4 架构发布的 PyTorch wheel 包。这一方式变化很快:如果想尝试,请直接从 README 的 AMD 部分复制命令,而不要照搬教程,因为索引地址取决于你显卡的架构。
#使用 ROCm 镜像的 Docker
AMD 在 Docker Hub 上发布了 rocm/pytorch 镜像,其中包含 ROCm 以及已针对其编译的 PyTorch。据我们所知,目前并没有面向 AMD 的官方 ComfyUI 镜像:最干净的做法是以 AMD 的镜像为基础,在其中安装 ComfyUI。宿主机只需具备 amdgpu 驱动;容器通过 /dev/kfd 和 /dev/dri 设备获得 GPU 访问权限。
- 镜像标签
- latest 会随每个 ROCm 版本而变化。如果希望安装可复现,请记下所用的具体标签并重复使用,但事先要确认它支持你的显卡。
- 数量
- 挂载到 /workspace 的目录会在容器被删除后保留 ComfyUI、模型及输出文件。没有它,一切都要从头开始。
- Exposition
- 端口发布在 127.0.0.1 上:只有宿主机可以访问界面。请勿将 ComfyUI 暴露在开放网络上:它默认没有身份验证,而且自定义节点会执行代码。
- Relance
- docker start -ai comfyui-rocm rouvre le même conteneur, sans réinstaller.
与手动安装相同的注意事项同样适用:执行 pip install 后,请确认容器中的 PyTorch 仍是 AMD 提供的版本。
#确认 AMD GPU 确实在工作
安装后能启动并不能说明任何问题:ComfyUI 会自动回退到 CPU 运行。只需做两项检查。第一项是在运行 ComfyUI 的环境中直接查询 PyTorch。
- torch.version.hip
- 应显示一个版本号。None 表示该 PyTorch 并非针对 ROCm 编译:这几乎总是因为误装了 CUDA 版或 CPU 版的 PyTorch。
- torch.cuda.is_available()
- 应显示 True。在 AMD 上出现 cuda 字样是正常的:PyTorch 为 HIP 复用了这一接口。
- get_device_name(0)
- 应显示您的 Radeon 显卡名称。如果显示的是处理器的集成显卡,请参阅故障排除部分中关于选错 GPU 的说明。
第二项检查在渲染过程中进行:在 Linux 下,rocm-smi 或 amd-smi 会显示 GPU 的占用率和已用显存;在 Windows 下,任务管理器或 Adrenalin 软件会显示显卡负载。如果处理器占用升至 100 %,而 GPU 仍处于空闲状态,说明计算并没有经过 Radeon。
#常见的驱动与检测错误
- “hipErrorNoBinaryForGpu”或“Unable to find code object”
- 已安装的 PyTorch 不包含适用于你显卡架构的代码。在 Linux 下,对于架构接近受支持架构的显卡,ComfyUI 的 README 给出了 HSA_OVERRIDE_GFX_VERSION 变量:RDNA 2 显卡(如 RX 6700 或 6600)设为 10.3.0,RDNA 3 显卡(如 RX 7600)设为 11.0.0。这是一种变通方法,AMD 并不提供保证。
- Linux 下未检测到 GPU
- 重新登录后,检查用户是否属于 render 和 video 组(使用 groups 命令),再确认 /dev/kfd 是否存在。在 Docker 中,请确认已正确传入 --device 选项。
- 选错了 GPU
- 在同时配备 AMD 集成显卡和 Radeon 的机器上,PyTorch 可能会识别到两个设备。请参考 rocminfo 显示的顺序,使用 HIP_VISIBLE_DEVICES 将其限定为独立显卡。
- ComfyUI Desktop 中没有 AMD 选项
- 驱动过旧、安装程序版本早于 ROCm 支持,或显卡不在兼容性矩阵中。请更新 Adrenalin 和安装程序,然后重新检查兼容性。
- 添加节点后 ComfyUI 改在 CPU 上运行
- 某个节点重新安装了 torch。请使用 pytorch.org 提供的命令重新安装 PyTorch ROCm,然后检查 torch.version.hip。
- Windows 下的旧款 Radeon
- ComfyUI 支持配合 torch-directml 包使用 --directml 选项。但 README 称其支持有限:请仅将其用于故障排查。若要在 RX 6000 上长期使用,Linux 仍是最可靠的方案。
#显存不足:实用设置
在 AMD 上,显存不足表现为“HIP out of memory”之类的错误,而不是“CUDA out of memory”。解决办法与 NVIDIA 上相同:首先调整 ComfyUI 的启动选项,其次是选择合适的模型和分辨率。
- --lowvram
- 将模型拆分并分块加载。速度较慢,但可以容纳更大的模型。
- --novram
- 在 --lowvram 仍不够用时,进一步降低显存占用。
- --reserve-vram
- 预留一定量的内存(以 GB 为单位),ComfyUI 不会占用这部分。当显示器、浏览器或其他程序共用同一张显卡时很有用。
- --cpu-vae
- 将 VAE 解码转移到处理器上进行。VAE Decode (Tiled) 节点是另一种方案,它以分块方式继续在 GPU 上运行。
- 分辨率与批次
- 在更换模型之前,先降低图像尺寸或每批次的图像数量:解码过程中占用的内存会随之增加。
- 量化模型
- 多个大型图像模型都有精简版本(FP8,或通过专用节点使用的 GGUF)。在依赖它们之前,请确认你的 PyTorch ROCm 版本支持该格式。
- PYTORCH_HIP_ALLOC_CONF
- 相当于 AMD 版的 PYTORCH_CUDA_ALLOC_CONF。设为 expandable_segments:True 可能会减少显存碎片;实际效果取决于 PyTorch 版本。
ComfyUI 的 README 还提到一个环境变量 TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1,需与 --use-pytorch-cross-attention 配合使用,可在部分 AMD 显卡上启用更节省显存的注意力机制。该功能仍属实验性质;如果引发错误,请先移除它,再排查其他原因。
#本指南不承诺的内容
本指南未进行任何速度测试,因此您在这里既找不到渲染时间,也找不到与 NVIDIA 显卡的对比。ComfyUI 在 AMD 上的性能取决于显卡、ROCm 版本、PyTorch 版本、模型以及注意力选项:缺少这些信息的孤立数字对您毫无参考价值。上文的命令依据 AMD 和 PyTorch 的文档以及 ComfyUI 的 README 编写;至于版本号,则有意留给您到这些来源中自行查看,因为它们的变化速度比指南更新快。
还要记住,自定义节点大多是为 CUDA 编写的。其中一些会调用 NVIDIA 专有的库,即使 ComfyUI 本身运行正常,它们在 Radeon 上也会失败。在安装复杂的工作流之前,请在每个节点的代码仓库中确认是否提及 ROCm 或 AMD。
#深入了解
当 ComfyUI 在您的 Radeon 上正常运行后,以下指南可作为安装后的延伸:界面入门、如果您还想运行 LLM,可参考针对 Ollama 的同类 ROCm 配置工作,以及最常见 AMD 显卡的介绍页。
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。