No module named ‘sageattention’

该问题通常出现在 ComfyUI 同一进程内连续排队第二次生成任务时,表现为第二次运行每步明显变慢(约 2.4 倍),优先通过 POST /free 并设置 unload_models 与 free_memory 为 true 来清理模型与显存,再重新排队。

快速结论:该问题通常出现在 ComfyUI 同一进程内连续排队第二次生成任务时,表现为第二次运行每步明显变慢(约 2.4 倍),优先通过 POST /free 并设置 unload_models 与 free_memory 为 true 来清理模型与显存,再重新排队。

适用环境:ComfyUI 主程序(python main.py –listen 0.0.0.0 –port 8188,无特殊内存参数);AMD Ryzen AI Max+ 395 / Strix Halo(gfx1151)统一内存平台;ROCm;128 GB 内存;工作流使用 WanVideoWrapper(I2V、A14B fp8、85 帧 @ 704×704、8 steps)。Issue 结论表明根因位于 ComfyUI-WanVideoWrapper 而非核心 ComfyUI。

最快修复方案:在两次排队之间执行 curl -X POST http://127.0.0.1:8188/free -H "Content-Type: application/json" -d '{"unload_models": true, "free_memory": true}',该操作已由报告者验证可在同一进程内恢复首次运行速度。

注意事项:该缓解方式只解决“再次排队变慢”,并未在 WanVideoWrapper 侧修复;Issue 中确认慢状态与 WanVideoWrapper 保留的模型对象跨第二次运行有关,核心 ComfyUI 的同类测试未复现。此外,切换 –highvram、–disable-smart-memory、–disable-async-offload、–disable-pinned-memory、–disable-dynamic-vram 均不能消除该现象;设置 PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True 反而使第一次运行也变慢。

问题场景

用户在 gfx1151(AMD Ryzen AI Max+ 395 / Strix Halo,统一内存,ROCm)上运行 ComfyUI,工作流使用 WanVideoWrapper 的 I2V、A14B fp8、85 帧 @ 704×704、8 steps。第一次排队运行正常(约 38 分钟),在同一 ComfyUI 进程内不重启直接排队第二次相同提示词时,每个采样步的 s/it 上升约 2.4 倍(约 38 分钟变约 87 分钟)。只有重启进程或手动 POST /free 并释放内存后,速度才恢复。Issue 最终结论指出该现象特定于 ComfyUI-WanVideoWrapper,而非核心 ComfyUI。

报错原文

No module named 'sageattention'
Loading transformer parameters to cuda:0: 100%|████████████████████| 1095/1095 [00:02<00:00, 379.65it/s]

原因分析

报告者最初怀疑是 PyTorch/HIP 缓存分配器在跨提示词时未刷新,导致回收块布局在统一内存 iGPU 上访问变慢;但后续隔离测试否定了该方向:快速与慢速运行中 torch.cuda.memory_stats() 字节完全一致(reserved、segments、inactive_split、retries 均相同),纯 PyTorch 反复运行也保持平坦。最终测试显示,使用原生节点(如 sdxl_simple_example)在同一进程内跑第二次不会变慢,而慢状态与 WanVideoWrapper 跨第二次运行保留的模型对象绑定。因此“可能原因”指向 WanVideoWrapper 在第二次进程内运行中保留了某些模型对象或状态,导致每步计算变慢;ComfyUI 核心的内存管理、跨提示词对象复用与采样器处理在报告者环境中均正常。另外,评论中出现的 No module named 'sageattention' 与 Loading transformer parameters to cuda:0 日志被指出属于 Kijai 的 ComfyUI-WanVideoWrapper 输出,不是核心 ComfyUI 的标准加载日志。

环境排查

  • 确认 ComfyUI 启动方式:python main.py --listen 0.0.0.0 --port 8188,且未添加特殊内存参数。
  • 确认硬件平台:gfx1151(AMD Ryzen AI Max+ 395 / Strix Halo),统一内存,128 GB。
  • 确认后端:ROCm。
  • 确认是否使用自定义节点:重点检查是否加载 ComfyUI-WanVideoWrapper,以及对应工作流与模型(Wan I2V、A14B fp8)。
  • 确认对比测试条件:同一进程内连续排队两次相同提示词,仅输入文本框末尾标点有增删(因平台不执行完全相同运行)。
  • 确认已排除的因素:时钟/温度(慢速运行 SCLK 更高、温度更低)、ComfyUI 内存标志(–highvram、–disable-smart-memory、–disable-async-offload、–disable-pinned-memory、–disable-dynamic-vram)、DynamicVRAM/aimdo、MIOpen 缓存(MIOPEN_DISABLE_CACHE=1)、hipBLASLt 路径(DISABLE_ADDMM_HIP_LT=1)、裸 PyTorch 重复运行。

解决步骤

  1. 在两次排队之间,调用 ComfyUI 的 /free 端点释放模型与显存:
    curl -X POST http://127.0.0.1:8188/free -H "Content-Type: application/json" -d '{"unload_models": true, "free_memory": true}'
  2. 观察第三次排队是否恢复第一次运行的速度。Issue 中报告者确认该操作可在同一进程内恢复全速。
  3. 如果必须保持同一进程连续运行,可将上述 /free 调用作为两次工作流之间的固定清理步骤;当前问题已在 WanVideoWrapper 仓库重新提交,核心 ComfyUI 侧无确认的代码级修复。
  4. 如未使用 WanVideoWrapper,请先用原生节点(如 sdxl_simple_example)在同一进程内运行两次,确认是否复现;若不复现,则优先排查自定义节点而非 ComfyUI 核心。

验证方法

记录第一次与第二次排队的控制台每步 s/it。若第二次明显高于第一次(约 2.4 倍),在两次之间执行 /free 并再次排队,第三次的 s/it 应回到第一次水平;同时可检查 sysfs 中 SCLK 与温度,慢速运行时 SCLK 更高、温度更低,说明并非降频导致。

参考来源

Comfy-Org/ComfyUI #14475

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27283

发表回复

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