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
- 下载好,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