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已修改直接用)

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐