comfyui wan2.2工作流中的节点Patch Sage Attention KJ的问题

Sage Attention KJ的问题解决方案

备注:显卡最好5090以上,最差也要4090.4090太过于入门,要让你吐血。😔

我的显卡:3090和4090,comfyui用3090 。windows11环境

注意:要cd "你的ComfyUI-aki-v1.3路径\python" 才可以./python.exe

一、问题描述:
comfyui出错日记含

torch.OutOfMemoryError: Allocation on device Got an OOM,

unloading all loaded models.

原因分析: ComfyUI-KJNodes 插件中的 PathchSageAttentionKJ 节点尝试使用 Sage Attention 加速注意力计算,但您的 Python 环境中没有安装 sageattention 这个包。

二、解决方法:

1、下载:SageAttention

.\python.exe -m pip install git+https://github.com/thu-ml/SageAttention.git

2、如果出现错误:

sageattention → core.py → import triton → ModuleNotFoundError: No module named 'triton'

则下载triton:.\python.exe -m pip install triton-windows

备注:Triton 是 NVIDIA 开发的一个 Python 库,用于编写 GPU 加速的自定义内核。Sage Attention 需要 Triton 来运行其 CUDA 内核。

三,问题延伸

Triton 安装后,PyPI 版本的 sageattention 可以导入了,但它没有 sageattn_qk_int8_pv_fp8_cuda 这个函数。

有以下错误:ImportError: cannot import name 'sageattn_qk_int8_pv_fp8_cuda' from 'sageattention'

这说明 PyPI 上的 sageattention 包不是 ComfyUI-KJNodes 需要的那一个,

需要卸载 PyPI 版本,从 GitHub 安装正确的版本。

1、卸载:.\python.exe -m pip uninstall sageattention -y

2、 GitHub 安装正确的 Sage Attention

.\python.exe -m pip install git+https://github.com/thu-ml/SageAttention.git

注意: 这个需要从源码编译 CUDA 扩展,需要:
Visual Studio Build Tools(C++ 编译器)
下载精简版:
https://aka.ms/vs/17/release/vs_BuildTools.exe

  1. 下载好,2. 运行安装程序 3. 勾选 "使用 C++ 的桌面开发"(约 8GB)4. 点击安装,等待完成

如果安装出现错误:

则:

解决方案:安装 Windows SDK

步骤 1:打开 Visual Studio Installer

点击 "修改" Visual Studio 生成工具 2022

步骤 2:勾选 Windows SDK

在右侧组件列表中找到并勾选:

Windows 11 SDK (10.0.26100.0) 或Windows 10 SDK (10.0.19041.0)

如果 Win11SDK 安装失败,尝试勾选 Windows 10 SDK。

步骤 3:点击修改,等待安装完成

或者手动下载 Windows SDK

如果 VS Installer 里安装失败,可以单独下载:

https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/

下载 Windows 11 SDK 或 Windows 10 SDK,安装即可。

四、到这步还出现问题

1、用 设置系统环境变量CUDA_HOME(需要管理员权限)

Environment::SetEnvironmentVariable("CUDA_HOME", "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4", "User")

Environment::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin", "User")

同时重新下载SageAttention.ZIP

2、重新安装:.\python.exe -m pip install "I:\kimiProject\SageAttention"

3、如果还是失败。则修改setup.py (可以下载我的)

修复 setup.py

用记事本打开 I:\kimiProject\SageAttention\setup.py ,做两处修改:

修改 1:第 34-42 行,git 版本获取

原来的代码:

python

def get_git_commit_timestamp():

try:

timestamp = subprocess.check_output(

"git", "-C", os.path.dirname(os.path.abspath(__file__)), "log", "-1", "--format=%ct"

).strip().decode("utf-8")

except Exception:

return None

return timestamp if timestamp.isdigit() else None

Make wheel ZIP metadata deterministic

If SOURCE_DATE_EPOCH is unspecified, then query with git, then fallback to Unix epoch

os.environ.setdefault("SOURCE_DATE_EPOCH", get_git_commit_timestamp() or "315532800")

改成:

python

def get_git_commit_timestamp():

return "315532800" # 直接返回固定时间戳,跳过 git 检测

Make wheel ZIP metadata deterministic

os.environ.setdefault("SOURCE_DATE_EPOCH", "315532800")

修改 2:第 108-110 行,CUDA_HOME 检测

原来的代码:

python

if CUDA_HOME is None:

raise RuntimeError(

"Cannot find CUDA_HOME. CUDA must be available to build the package.")

改成:

python

强制指定 CUDA_HOME

import os

os.environ"CUDA_HOME" = r"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4"

CUDA_HOME = os.environ"CUDA_HOME"

if CUDA_HOME is None or not os.path.exists(CUDA_HOME):

raise RuntimeError(

"Cannot find CUDA_HOME. CUDA must be available to build the package.")

Compiler flags.

if os.name == "nt":

TODO: Detect MSVC rather than OS

源代码

#CXX_FLAGS = "/O2", "/permissive-", "-DENABLE_BF16"

#修改代码

CXX_FLAGS = "/O2", "/permissive-", "/std:c++17", "-DENABLE_BF16"

LINK_FLAGS = "/Brepro"

else:

CXX_FLAGS = "-O3", "-DENABLE_BF16"

LINK_FLAGS = \[\]

4、设置环境变量

右键 "此电脑" -> "属性" -> "高级系统设置" -> "环境变量"

在用户变量中添加:

变量名:INCLUDE

值:

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared

变量名:LIB

值:

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\lib\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64

在 Path 变量中添加(新建三行):

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64

C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin

注意:如果 MSVC 版本号不是 14.44.35207,请替换为实际版本号

编译安装 Sage Attention

cd "你的ComfyUI-aki-v1.3路径\python"

设置临时环境变量(确保当前会话有效)

$env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4"

env:PATH = "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.4\\bin;" + env:PATH

$env:SOURCE_DATE_EPOCH = "315532800"

安装

.\python.exe -m pip install "I:\kimiProject\SageAttention" --no-build-isolation --force-reinstall

步骤 7:验证安装

.\python.exe -c "from sageattention import sageattn_qk_int8_pv_fp8_cuda; print('OK')"

预期输出:

OK

有关文件下载(setup.py已修改直接用)