Releases: DazzleML/comfyui-triton-and-sageattention-installer
Release list
v0.8.15 - Post-Install Verification & Phantom Triton Upgrade Fix
ComfyUI Triton and SageAttention Installer v0.8.15
Cross-platform installer for Triton and SageAttention on ComfyUI. Simplifies GPU-accelerated inference setup with automated dependency management and RTX 5090 support.
What's New in v0.8.15
Post-Install Verification (#24)
Every install and upgrade now ends by re-reading your environment and comparing it against the plan it showed you:
----------------------------------------------------------------------
Post-install verification (plan vs. environment)
----------------------------------------------------------------------
[OK] PyTorch KEEP 2.10.0+cu130 (unchanged)
[OK] Triton KEEP 3.6.0.post26 (unchanged)
[OK] SageAttention KEEP 2.2.0+cu130torch2.9.0andhigher.post4 (unchanged)
[OK] build tools pip/setuptools unchanged (not authorized)
Result: 4 check(s) passed, 0 deviation(s).
----------------------------------------------------------------------
Components the plan said it would keep must be unchanged, changes it said it would make must have actually happened, and pip/setuptools must be untouched unless the plan said otherwise. It changes nothing and can never fail an install. If something doesn't match, it prints a [DEVIATION] block built to be pasted straight into a bug report (and the final line reads Completed -- N verification deviation(s) instead of an unearned Success!).
Why this exists: three releases in this line (0.8.6, 0.8.12, 0.8.14) fixed cases where the preview said one thing and the install did another, and every one was found by luck. Now every run is a detector -- on your hardware, in the configurations I can't reproduce.
Phantom Triton Upgrade Fixed (#37)
On PyTorch 2.10, --upgrade --dryrun proposed Triton 3.6.0.post26 -> 3.7.1.post27, but Triton 3.7 is built for PyTorch 2.12, and upstream is explicit that each PyTorch minor pairs with exactly one Triton minor. The real run then refused and skipped, so the preview claimed that upgrade forever and never performed it.
The version table now maps each PyTorch minor to its one Triton minor, the update check asks pip for the newest compatible version instead of the newest overall, and the install step performs whatever the plan decided instead of re-deciding on its own.
# On a healthy PyTorch 2.10 + Triton 3.6.x setup, both now agree:
python comfyui_triton_sageattention.py --upgrade --dryrun
# Triton [KEEP] 3.6.0.post26 (already installed)Two things worth knowing:
- This should never touch a Triton you installed yourself. If you
pip install --upgrade triton-windowson your own, the installer leaves it alone -- combinations it doesn't recognize default to "don't touch," same as always. - On some ComfyUI Portable setups (no
packaginglibrary), the compatibility filter used to silently allow any proposed upgrade. It now verifies with a built-in fallback, and anything it can't verify it simply doesn't propose.
Smaller Fixes
- A no-change run no longer silently replaces setuptools (a side effect of the phantom upgrade above).
--with-custom-nodes --dryrunlisted four custom-node entries (two duplicates under inconsistent names); it now lists the same two the install acts on.- CI actually runs the 317-test suite on every push now. It previously installed the test runner and never invoked it (part of how the bug above survived three releases of "fixed.)"
Kick the Tires
Same request as the last three releases:
python comfyui_triton_sageattention.py --backup # before anything else
python comfyui_triton_sageattention.py --upgrade --dryrun # should propose nothing surprising
python comfyui_triton_sageattention.py --upgrade # healthy setup: all KEEP, verification passesIf the dryrun proposes something surprising, or the verification block ever prints [DEVIATION], that output pasted into an issue is the most valuable bug report you can send.
Installation
git clone https://github.com/DazzleML/comfyui-triton-and-sageattention-installer.gitAnd run the script directly:
python comfyui_triton_sageattention.py --installVersion History (0.8.x)
| Version | Key Change |
|---|---|
| v0.8.15 | Current — post-install verification; phantom Triton upgrade fixed |
| v0.8.14 | Safer --cleanup (PyTorch opt-in) & recovery guidance |
| v0.8.13 | Non-English Windows crash fix; rollback limited to the run's own installs |
| v0.8.12 | CUDA 13.2 install fix & plan/execute integrity |
| v0.8.10 | PyTorch 2.13 support; post6 wheels (black/noise fix) |
| v0.8.9 | CUDA 13.2 / PyTorch 2.12 support |
Platform Support
| Platform | Status |
|---|---|
| Windows (RTX 50-series / Blackwell, sm_120) | Tested (v0.8.15 verified end-to-end on RTX 5090, PyTorch 2.10 + CUDA 13.0) |
| Windows (RTX 40-series and earlier) | Expected to work |
| Linux / macOS | Experimental |
Requirements
- Windows with an NVIDIA GPU and a CUDA-enabled PyTorch build
- Python 3.9+ for most wheels; Python 3.10+ for the post5/post6 (PyTorch 2.12/2.13) wheels
- No system CUDA toolkit change needed — the CUDA runtime ships inside the PyTorch wheel
v0.8.14 - Safer --cleanup & PyTorch Recovery Guidance
Back up first. Then kick the tires.
If your ComfyUI works today, run this before anything else:
python comfyui_triton_sageattention.py --backupIt copies your whole environment and takes a couple of minutes. --backup list shows what you have, --backup-restore <n> puts it back. That is the difference between a bad afternoon and a five-minute recovery, and it is the single thing I would ask everyone to do.
Same request as 0.8.12, and for the same reason: this run of releases reworked how the installer decides what to do, and closed several ways it could touch things you never asked it to touch. If you are coming from 0.8.11 or earlier, everything below applies to you -- it covers 0.8.12 through 0.8.14.
It was tested on my dev box, including a from-scratch install and a GPU check confirming SageAttention's output still matches PyTorch's own attention. But this project runs on a multitude of hardware, drivers, CUDA and Python combinations I can't reproduce. Treat it accordingly, and please do not skip the backup.
Next, the check:
python comfyui_triton_sageattention.py --install --dryrunThat shouldn't change anything at all. It just prints what the installer would do. If it proposes anything surprising for a setup you know is fine, please open an issue with that output. That one command is the most valuable bug report I can get.
Then, if you're willing:
python comfyui_triton_sageattention.py --installOn an already-working setup this should report KEEP for all three components and change nothing whatsoever.
New in 0.8.14: --cleanup no longer removes PyTorch
--cleanup used to uninstall torch, torchvision and torchaudio alongside Triton and SageAttention -- the two were a single hardcoded list carried over from the original batch script. That made the documented "clean slate reinstall" (--cleanup then --install) delete a multi-gigabyte dependency that everything else in your ComfyUI environment imports, and then depend on the reinstall succeeding. As 0.8.13 showed, a reinstall can fail for reasons that have nothing to do with you.
It now removes Triton and SageAttention only. If you do want the full teardown:
python comfyui_triton_sageattention.py --cleanup allBoth forms list exactly what they will remove and ask before removing anything.
Also in 0.8.13: a failed install could remove PyTorch
The crash. Command output was decoded using the machine's ANSI codepage (cp1252 on a German system), but nvcc, cl and nmake print in the OEM console codepage (cp850). One umlaut was enough (ü is byte 0x81, which cp1252 cannot decode) so the install died with UnicodeDecodeError and then argument of type 'NoneType' is not iterable. Output is now decoded so that undecodable bytes cannot fail, in any locale.
The damage. When anything went wrong, the installer ran a "cleanup" that uninstalled a fixed list (torch, torchvision, torchaudio, triton, triton-windows, sageattention) regardless of whether that run had installed any of them. A crash before installation even began still removed all six. Rollback after a failure is now limited to packages the run actually installed; if it installed nothing, nothing is removed.
A third, found while verifying the above: switching a CPU-only PyTorch to a CUDA build requires uninstalling it first, and if the reinstall then failed you were left with neither. The installer now records the exact versions beforehand and puts them back, printing the manual pip install command if even that fails.
Reproduced with compiled nvcc/nmake tests emitting German cp850 output: before the fix, the install died at the build-tools check and triggered the cleanup above; after it, a full install completes and the kernel matches PyTorch's own attention at cosine 0.99933.
--cleanup now asks first. It removes PyTorch along with everything else, so it lists what will go and waits for confirmation, and declines under --non-interactive rather than assuming consent.
Also fixed while in there. --force crashed on Windows instead of showing its confirmation prompt, so it has been unusable since 0.8.12 on any machine that already had Visual Studio Build Tools -- if you tried it and it fell over, that was this, not your setup. On Linux and macOS, a virtual environment that failed a version check could be deleted along with every package in it; it is now left alone. And Ctrl-C during an install now tells you what state your environment is in, and how to put it back, instead of printing a traceback.
Original report from a German Windows install (#36).
Still worth knowing from 0.8.12
If you skipped that release, these matter more than the fixes above.
CUDA 13.2 installs were borked
A fresh install on CUDA 13.2 failed and installed nothing:
ERROR: Could not find a version that satisfies the requirement torchaudio (from versions: none)
PyTorch publishes torch and torchvision for CUDA 13.2 but has not published torchaudio for it on any platform, and the installer asked pip for all three at once. Installs on 13.2 now use the CUDA 13.0 packages, which are complete and run correctly on a 13.2 driver -- measured, not assumed, on an RTX 5090 at cosine similarity 0.99933.
This only affected setups without PyTorch already installed, which is why existing users never hit it.
The preview should be accurate
--dryrun exists so you can see what will happen before it happens. Bugs happen:
--sage-version 1previewed "Nothing to do" and then, if you had requested SageAttention 1, downgraded a working 2.x install to 1.0.6 (as requested -- just not matching the plan).- Answering "no" to a confirmation prompt did not cancel it. Only the single character
nworked. --forcequietly did nothing for Triton and SageAttention; it only applied to PyTorch.- A plain
--installon an up-to-date setup still reinstalled SageAttention, upgraded pip and setuptools, re-extracted Python headers, and overwrote yourrun_nvidia_gpu.bat-- discarding any edits. An install with nothing to do now genuinely writes nothing. - An explicit
--sage-version 2.1.1could be silently ignored depending on which Python you launched the installer with. - Asking about backups from a directory that isn't a ComfyUI install created a virtual environment there before reporting there was nothing to find.
Full list in the CHANGELOG.
What changed underneath
The installer builds a plan, then executes it. That was already the design, but parts of execution were quietly ignoring the plan and deciding for themselves -- which is how a preview and a real run drift apart. The through-line across both releases is narrower: the installer may undo its own work, but not yours.
Test count went from 158 to 249 across the two releases, and there are hand-runnable checklists in tests/checklists/ for what no mocked test can reach: real pip behaviour, GPU correctness, interactive prompts, console rendering, and non-English Windows.
Most of these bugs were found by running the installer against real setups, not by the test suite. That's why the request at the top is prominent rather than boilerplate.
Upgrading
Nothing to do differently -- git pull and run the installer as usual. No changes to how you invoke it, no new required flags.
v0.8.12 - CUDA 13.2 Install Fix & Plan/Execute Integrity
Please kick the tires on this one
This is not a routine wheel-table update. Most 0.8.x releases added support for a new SageAttention or PyTorch version and touched little else. This one reworks how the installer decides what to do and how faithfully it reports that back to you. In addition it fixes a bug that stopped new CUDA 13.2 users from installing at all.
It was tested on my dev machine: a from-scratch ComfyUI and empty environment through to a working install, plus a GPU check confirming SageAttention's output still matches PyTorch's own attention. But this project runs on a multitude of hardware, drivers, CUDA and Python combinations I can't reproduce. So...
If you have a setup that already works, the most useful thing you can do is:
python comfyui_triton_sageattention.py --install --dryrunThat changes nothing at all. It just prints what the installer would do. If it proposes anything surprising for a setup you know is fine, please open an issue with that output. That one command is the most valuable bug report I can get.
Then, if you're willing:
python comfyui_triton_sageattention.py --backup # optional, recommended
python comfyui_triton_sageattention.py --installOn an already-working setup this should now report KEEP for all three components and change nothing whatsoever.
The headline fix: CUDA 13.2 installs were borked
If you're on CUDA 13.2 and tried a fresh install, it failed and installed nothing:
ERROR: Could not find a version that satisfies the requirement torchaudio (from versions: none)
PyTorch publishes torch and torchvision for CUDA 13.2, but has not published torchaudio for it on any platform. Because the installer asked pip for all three at once, the missing one killed the whole transaction.
Installs on CUDA 13.2 now use the CUDA 13.0 packages, which are complete. CUDA minor versions are forward-compatible, so those run correctly on a 13.2 driver. And that isn't an assumption, it was measured: a full fresh install on an RTX 5090 with CUDA 13.2, ending in a SageAttention kernel matching PyTorch's own attention at cosine similarity 0.99933.
This only ever affected setups without PyTorch already installed, which is why existing users (hopefully) never hit it and why testing missed it, since every test environment already had PyTorch in it.
The theme: preview should be accurate
--dryrun exists so you can see what will happen before it happens. But bugs happen:
--sage-version 1previewed "Nothing to do" and then, if the user requested SageAttention 1, downgraded a working SageAttention 2.x install to 1.0.6 (as requested -- just not matching the plan)- Answering "no" to the confirmation prompt before a downgrade did not cancel it. Only the single character
nworked --nowas read as agreement, and the change went ahead and reported success. --forcequietly did nothing for Triton and SageAttention; it only ever applied to PyTorch.- A plain
--installon an up-to-date setup still reinstalled SageAttention, upgraded pip and setuptools, re-extracted Python headers, and overwrote yourrun_nvidia_gpu.bat-- discarding any edits you'd made to it. An install with nothing to do now genuinely writes nothing. - An explicit
--sage-version 2.1.1could be silently ignored depending on which Python you launched the installer with. - Asking about backups from a directory that isn't a ComfyUI install created a virtual environment there before reporting there was nothing to find. Only
--install,--upgradeand--runcreate an environment now.
Full list in the CHANGELOG.
What changed underneath
The installer builds a plan, then executes it. That was already the design, but several parts of execution were quietly ignoring the plan and deciding for themselves -- which is exactly how a preview and a real run drift apart.
This release closes those gaps and adds tests that can actually see the problem. The previous suite passed cleanly through every single one of the bugs, because it only checked that the plan was built correctly and never checked that execution followed it. Test count went from 158 to 224, and there's now a hand-runnable checklist in tests/checklists/ for what no mocked test can reach: real pip behaviour, GPU correctness, interactive prompts, console rendering.
Most of these bugs were found by running the installer against real setups, not by the test suite. That's why the request at the top is prominent rather than boilerplate.
Upgrading
Nothing to do differently -- git pull and run the installer as usual. No changes to how you invoke it, no new required flags.
If a previous version left setuptools out of range (the original #34 report), running the installer once puts it back.
Thanks to @cushycrux for the report that started this.
v0.8.10 - PyTorch 2.13 Support & Black/Noise Output Fix
ComfyUI Triton and SageAttention Installer v0.8.10
Cross-platform installer for Triton and SageAttention on ComfyUI. Simplifies GPU-accelerated inference setup with automated dependency management and RTX 5090 support.
What's New in v0.8.10
PyTorch 2.13 Support (#33)
A CUDA 13.0 + PyTorch 2.13 environment previously fell back to SageAttention 1.x — CUDA 13.0 was already supported, but there was no PyTorch 2.13 wheel config yet. Torch 2.13 now installs SageAttention 2.2.0.post6 (~3x speedup over FlashAttention2). CUDA 13.2 + torch 2.13 is also covered via the existing cu132 → cu130 alias.
# On a PyTorch 2.13 + CUDA 13.0 environment
python comfyui_triton_sageattention.py --show-installed
# CUDA | 13.0 | Detected
# SA 2.x Compatibility: [OK] Supported (SA 2.2.0.post6)
python comfyui_triton_sageattention.py --installVerified end-to-end on an RTX 5090: real --install pulls the post6 cu130 wheel, and a kernel run matches PyTorch's SDPA (cosine 0.99933).
andhigher Wheels Moved to post6 (black/noise fix)
The torch2.10.0andhigher wheels (used for PyTorch 2.12 and 2.13) now use upstream's post6 build, which fixes an out-of-bound bug that could cause black or noise outputs (woct0rdho/SageAttention#98). post5 — shipped for torch 2.12 in v0.8.9 — has that bug. Both torch 2.12+post6 and torch 2.13+post6 were verified end-to-end (cosine 0.99933).
Existing torch 2.12 users are not force-migrated. A plain --install keeps your current SageAttention install untouched. To move to the fixed post6 wheel, run:
python comfyui_triton_sageattention.py --upgradepost5 remains a valid upstream wheel — this just makes post6 the default so new installs get the fix.
Note: post6 wheels are cp310-abi3, i.e. they require Python 3.10+. Python 3.9 environments still fall back to SA 1.x.
Installation
git clone https://github.com/DazzleML/comfyui-triton-and-sageattention-installer.gitAnd run the script directly:
python comfyui_triton_sageattention.py --installVersion History (0.8.x)
| Version | Key Change |
|---|---|
| v0.8.10 | Current — PyTorch 2.13 support; andhigher wheels moved to post6 (black/noise fix) |
| v0.8.9 | CUDA 13.2 / PyTorch 2.12 support (post5 wheels) |
| v0.8.8 | CUDA 12.9 support via tested cu128 wheel alias |
| v0.8.7 | SA 2.x for PyTorch 2.11, post4 promoted to stable |
| v0.8.6 | Blackwell support + upgrade reliability fixes |
Platform Support
| Platform | Status |
|---|---|
| Windows (RTX 50-series / Blackwell, sm_120) | Tested (CUDA 12.9–13.2, PyTorch 2.10–2.13 verified on RTX 5090) |
| Windows (RTX 40-series and earlier) | Expected to work |
| Linux / macOS | Experimental |
Requirements
- Windows with an NVIDIA GPU and a CUDA-enabled PyTorch build
- Python 3.9+ for most wheels; Python 3.10+ for the post5/post6 (PyTorch 2.12/2.13) wheels
- For CUDA 13.0 / 13.2: any matching PyTorch build — no system CUDA toolkit change needed (the CUDA runtime ships inside the PyTorch wheel)
v0.8.9 - CUDA 13.2 / PyTorch 2.12 Support
ComfyUI Triton and SageAttention Installer v0.8.9
Cross-platform installer for Triton and SageAttention on ComfyUI. Simplifies GPU-accelerated inference setup with automated dependency management and RTX 5090 support.
This release extends SageAttention 2.x coverage to the newest CUDA toolkits and PyTorch builds -- and rounds out the CUDA 12.9 support added in v0.8.8 (just released, so it's highlighted again below in case you missed it).
What's New in v0.8.9
CUDA 13.2 + PyTorch 2.12 Support
PyTorch ships cu132 (CUDA 13.2) and torch 2.12 wheels, but SageAttention has no cu132 wheel. A cu132 environment now installs SageAttention 2.2.0.post5 using the cu130 wheel, which is ABI-compatible via CUDA's minor-version compatibility (same approach proven for cu129 in v0.8.8).
# On a PyTorch 2.12 + CUDA 13.2 environment
python comfyui_triton_sageattention.py --show-installed
# CUDA | 13.2 | Detected
# SA 2.x Compatibility: [OK] Supported (SA 2.2.0.post5)
python comfyui_triton_sageattention.py --installVerified before enabling -- not assumed. Isolated venv with torch 2.12.0+cu132, installed the cu130 post5 wheel, ran attention kernel vs PyTorch SDPA: cosine similarity 0.99933 on an RTX 5090 (sm_120). The full path was also confirmed through the installer (--show-installed, --dryrun, and an actual --install).
This release also brings the installer current with upstream's post5 wheels (the wheel line that targets PyTorch 2.12). post5 is cp310-abi3 -- i.e. it requires Python 3.10+ -- so the installer now derives the ABI tag per-wheel instead of assuming cp39.
CUDA 12.9 Support (from v0.8.8)
If you're on CUDA 12.9, v0.8.8 already added support: a cu129 environment installs SageAttention 2.2.0.post3 via the cu128 wheel (verified, cosine 0.99933). Previously these environments fell back to SageAttention 1.x. Thanks to @idolize for reporting it.
Tested-Only CUDA Aliasing
Both gap fills use a deliberately narrow alias map -- only combinations verified end-to-end are enabled:
| Detected CUDA | Wheel used | Status |
|---|---|---|
12.9 (cu129) |
cu128 |
Tested -- cosine 0.99933 vs SDPA on RTX 5090 |
13.2 (cu132) |
cu130 |
Tested -- cosine 0.99933 vs SDPA on RTX 5090 |
Any other CUDA-minor gap still falls back to SageAttention 1.x until individually verified (e.g. cu118/cu121 have no safe lower wheel to reuse; torch 2.12 on cu126 has no post5 wheel). A new read-only gap detector (tests/one-offs/detect_cuda_wheel_gaps.py) re-checks PyTorch vs SageAttention CUDA coverage on demand.
Installation
git clone https://github.com/DazzleML/comfyui-triton-and-sageattention-installer.gitAnd run the script directly:
python comfyui_triton_sageattention.py --installVersion History (0.8.x)
| Version | Key Change |
|---|---|
| v0.8.9 | Current -- CUDA 13.2 / PyTorch 2.12 support (post5 wheels) |
| v0.8.8 | CUDA 12.9 support via tested cu128 wheel alias |
| v0.8.7 | SA 2.x for PyTorch 2.11, post4 promoted to stable |
| v0.8.6 | Blackwell support + upgrade reliability fixes |
| v0.8.5 | SA 2.x wheel support for PyTorch 2.10 |
Platform Support
| Platform | Status |
|---|---|
| Windows (RTX 50-series / Blackwell, sm_120) | Tested (CUDA 12.9 and 13.2 verified on RTX 5090) |
| Windows (RTX 40-series and earlier) | Expected to work |
| Linux / macOS | Experimental |
Requirements
- Windows with an NVIDIA GPU and a CUDA-enabled PyTorch build
- Python 3.9+ for most wheels; Python 3.10+ for the post5 (PyTorch 2.12) wheels
- For CUDA 12.9 / 13.2: any matching PyTorch build -- no system CUDA toolkit change needed (the CUDA runtime ships inside the PyTorch wheel)
v0.8.8 - CUDA 12.9 Support
ComfyUI Triton and SageAttention Installer v0.8.8
Cross-platform installer for Triton and SageAttention on ComfyUI. Simplifies GPU-accelerated inference setup with automated dependency management and RTX 5090 support.
What's New in v0.8.8
CUDA 12.9 Support (#32)
A PyTorch build reporting CUDA 12.9 previously fell back to SageAttention 1.x because no cu129 wheel is published upstream (woct0rdho/SageAttention ships only cu124/126/128/130). The installer now recognizes CUDA 12.9 and installs SageAttention 2.2.0.post3 (~3x speedup over FlashAttention2) using the cu128 wheel, which is ABI-compatible thanks to CUDA's minor-version compatibility within the 12.x series.
# On a PyTorch + CUDA 12.9 environment
python comfyui_triton_sageattention.py --show-installed
# CUDA | 12.9 | Detected
# SA 2.x Compatibility: [OK] Supported (SA 2.2.0.post3)
python comfyui_triton_sageattention.py --installVerified before enabling -- not assumed. Rather than assuming/trust compatibility, built an isolated venv with torch 2.9.0+cu129, installed the cu128 SageAttention wheel, ran the attention kernel, and compared it against PyTorch's SDPA:
- Cosine similarity 0.99933 vs SDPA on an NVIDIA RTX 5090 (sm_120)
- No system CUDA toolkit change required -- the installer keys off
torch.version.cuda, and the CUDA runtime ships inside the PyTorch wheel
The end-to-end test ships as a reusable regression guard (tests/one-offs/test_cuda129_compat.py).
Tested-Only CUDA Aliasing
The mechanism is a deliberately narrow alias map -- only the combination we verified end-to-end is enabled:
| Detected CUDA | Wheel used | Status |
|---|---|---|
12.9 (cu129) |
cu128 |
Tested -- cosine 0.99933 vs SDPA on RTX 5090 |
Any other CUDA-minor gap still falls back to SA 1.x until individually verified, consistent with the project's principle of never enabling an untested version combination. A broader gap-coverage sweep is tracked as a follow-up.
Installation
git clone https://github.com/DazzleML/comfyui-triton-and-sageattention-installer.gitAnd run the script directly:
python comfyui_triton_sageattention.py --installVersion History (0.8.x)
| Version | Key Change |
|---|---|
| v0.8.8 | Current -- CUDA 12.9 support via tested cu128 wheel alias |
| v0.8.7 | SA 2.x for PyTorch 2.11, post4 promoted to stable |
| v0.8.6 | Blackwell support + upgrade reliability fixes |
| v0.8.5 | SA 2.x wheel support for PyTorch 2.10 |
| v0.8.0 | ComfyUI installation discovery |
Platform Support
| Platform | Status |
|---|---|
| Windows (RTX 50-series / Blackwell, sm_120) | Tested (CUDA 12.9 verified on RTX 5090) |
| Windows (RTX 40-series and earlier) | Expected to work |
| Linux / macOS | Experimental |
Requirements
- Windows with an NVIDIA GPU and a CUDA-enabled PyTorch build
- Python 3.9+ (ABI3 wheels); tested on 3.12
- For CUDA 12.9: any PyTorch
cu129build (e.g., torch 2.9.0+cu129) -- no system CUDA toolkit change needed
v0.8.7 - PyTorch 2.11 Wheels & post4 Promoted to Stable
ComfyUI Triton and SageAttention Installer v0.8.7
Cross-platform installer for Triton and SageAttention on ComfyUI. Simplifies GPU-accelerated inference setup with automated dependency management and RTX 5090 support.
What's New in v0.8.7
SA 2.x Wheel Support for PyTorch 2.11
PyTorch 2.11.0 shipped as the latest stable release with cu130 as the default CUDA build. The installer now recognizes this version and installs SageAttention 2.2.0.post4 (~3x speedup over FlashAttention2) using the same forward-compatible ABI3 wheel from woct0rdho/SageAttention.
Verified working: PyTorch 2.11.0+cu130, Python 3.12.0, NVIDIA RTX 5090, Triton 3.6.0
# Install or upgrade on a PyTorch 2.11 environment
python comfyui_triton_sageattention.py --install
# Check what would be installed
python comfyui_triton_sageattention.py --install --dryrunpost4 Promoted to Stable for PyTorch 2.9
SA 2.2.0.post4 no longer requires --experimental for PyTorch 2.9.x environments. The same wheel was already serving torch 2.10 and 2.11 as non-experimental -- gating it behind --experimental for 2.9 was inconsistent.
What post4 adds over post3: torch.compile support. SageAttention no longer needs to be wrapped in torch.compiler.disable, enabling full-graph compilation. The underlying attention kernels are identical.
Impact on existing users:
- Fresh installs on torch 2.9: get post4 (was post3)
- Existing post3 users: unaffected (plan says KEEP, no forced upgrade)
--experimentalflag: now reports "no experimental wheels available" instead of a misleading warning. The flag remains functional for future prerelease wheels.
Updated SA 2.x Wheel Matrix
| SA Version | CUDA | PyTorch | Notes |
|---|---|---|---|
| 2.2.0.post4 | 13.0 | 2.11.x | New |
| 2.2.0.post4 | 12.8 | 2.11.x | New |
| 2.2.0.post4 | 13.0 | 2.10.x | RTX 50-series / Blackwell |
| 2.2.0.post4 | 12.8 | 2.10.x | |
| 2.2.0.post4 | 13.0 | 2.9.x | Promoted from experimental |
| 2.2.0.post4 | 12.8 | 2.9.x | Promoted from experimental |
| 2.2.0.post3 | 13.0 | 2.9.x | Still available via --sage-version 2.2.0.post3 |
| 2.2.0.post3 | 12.8 | 2.7-2.9.x | |
| 2.2.0.post3 | 12.6 | 2.6.x | |
| 2.2.0.post3 | 12.4 | 2.5.x |
See docs/supported_wheels.md for the full matrix including SA 2.1.1 and legacy wheels.
Installation
git clone https://github.com/DazzleML/comfyui-triton-and-sageattention-installer.gitAnd run the script directly:
python comfyui_triton_sageattention.py --installVersion History (0.8.x)
| Version | Key Change |
|---|---|
| v0.8.7 | Current -- PyTorch 2.11 wheels, post4 promoted to stable |
| v0.8.6 | Upgrade reliability fixes (plan-execute consistency) |
| v0.8.5 | SA 2.x wheels for PyTorch 2.10 / Blackwell (Issue #29) |
| v0.8.0 | ComfyUI installation discovery mode |
Platform Support
| Platform | Status |
|---|---|
| Windows 11 + RTX 5090 (cu130) | Tested |
| Windows + RTX 40xx (cu128) | Expected to work |
| Windows + RTX 30xx (cu126/cu124) | Expected to work |
Testing
- 121 unit tests passing
- Live verified on RTX 5090: PyTorch 2.11.0+cu130, SageAttention 2.2.0.post4, Triton 3.6.0
Full Changelog
See CHANGELOG.md for complete details.
v0.8.6 - Blackwell Support + Upgrade Reliability Fixes
ComfyUI Triton and SageAttention Installer v0.8.6
This release pairs with v0.8.5 to bring RTX 50-series (Blackwell) GPU support and fix long-standing upgrade reliability issues.
RTX 50-series / PyTorch 2.10 Support (v0.8.5)
If you missed v0.8.5: this patch brings support for CUDA 13.0 and 12.8 + PyTorch 2.10 environments. Users with RTX 50-series (Blackwell) GPUs now get SageAttention 2.2.0.post4 installed automatically instead of falling back to SA 1.0.6.
Thanks to @joednemesis for reporting the missing configuration.
Blackwell note: SageAttention's CUDA kernel path has known instability on some RTX 50-series GPUs (woct0rdho/SageAttention#87). The Triton fallback path works but may not yet provide the expected speedup. This is an upstream issue being tracked there.
What's New in v0.8.6: Upgrade Reliability
During live testing of v0.8.5, it was discovered that --upgrade mode had two dryrun/actual disagreements. The preview showed one thing, but execution did another:
Bug 1 — Triton false upgrade: --upgrade --dryrun proposed upgrading Triton from 3.3.x to 3.6.x even on PyTorch 2.7 (which requires Triton 3.3.x). Running --upgrade for real correctly skipped the upgrade, but the preview was misleading.
Bug 2 — SageAttention unnecessary reinstall: --upgrade unconditionally uninstalled and reinstalled SageAttention even when already at the target version. The dryrun correctly said [KEEP], but execution ignored it and did a full uninstall/reinstall cycle of the same wheel. Initially this was intended as a feature to help check the install was valid with the user configuration by forcing the reinstall but to date it doesn't seem to catch anything and just seems to waste network traffic and CPU time.
The reason: The Plan-Execute architecture (introduced to prevent exactly this class of bug) was only applied to PyTorch. Triton and SageAttention still had their original "decide at execution time" logic, creating invisible divergence between --dryrun and --upgrade.
Fixes
| Fix | What changed |
|---|---|
| Triton plan filtering | Pip's upgrade proposal is now checked against the PyTorch-Triton compatibility constraint before being shown in the plan. Triton 3.6 won't be proposed for PyTorch 2.7. |
| Triton execution | install_triton() now consults the InstallPlan before acting (same pattern as install_pytorch()). If plan says KEEP, it returns immediately. |
| SA execution | clone_and_install_repositories() now consults the plan in upgrade mode. If plan says KEEP, it skips the uninstall/reinstall cycle. |
| Triton constraint split | _get_triton_version_constraint() now correctly returns >=3.6,<4 for PyTorch >= 2.10 (was lumped into >=3.5,<4 with PyTorch 2.9). |
| Future version safety | Compatibility checks now use exact-range lookups instead of cascading >=. Unknown future versions (e.g., Triton 4.0, PyTorch 3.0) assume compatible — we don't touch what we don't have data on. |
Design Principle: Don't Break Working Configs
This release formalizes the project's version compatibility philosophy:
- Known compatible (tested, upstream confirmed) — enforce the constraint
- Known incompatible (tested, breaks) — flag it
- Unknown (future versions, no data) — assume compatible, don't touch
The goal is to treat "unknown" as technical debt to close, not a permanent state. When upstream releases new versions, the intention is to proactively add them to the test matrix.
Updated Triton/PyTorch Compatibility Table
| PyTorch | Triton | Status |
|---|---|---|
| >= 2.10 | 3.6.x | Known compatible |
| 2.9.x | 3.5.x | Known compatible |
| 2.8.x | 3.4.x | Known compatible |
| 2.7.x | 3.3.x | Known compatible |
| 2.6.x | 3.2.x | Known compatible |
Updated SA 2.x Wheel Matrix
| SA Version | CUDA | PyTorch | Flag |
|---|---|---|---|
| 2.2.0.post4 | 13.0 | 2.10.x | -- |
| 2.2.0.post4 | 12.8 | 2.10.x | -- |
| 2.2.0.post4 | 13.0 | 2.9.x | --experimental |
| 2.2.0.post4 | 12.8 | 2.9.x | --experimental |
| 2.2.0.post3 | 13.0 | 2.9.x | -- |
| 2.2.0.post3 | 12.8 | 2.7-2.9.x | -- |
| 2.2.0.post3 | 12.6 | 2.6.x | -- |
| 2.2.0.post3 | 12.4 | 2.5.x | -- |
See docs/supported_wheels.md for the full matrix.
Testing
- 121 unit tests passing (6 new across v0.8.5 and v0.8.6)
- All 21 active wheel URLs verified via HTTP HEAD
- Live integration test confirmed:
--upgrade --dryrunand--upgradenow agree exactly
Full Changelog
See CHANGELOG.md for complete details.
v0.8.5 - SA 2.x Wheel Support for PyTorch 2.10 (Blackwell)
ComfyUI Triton and SageAttention Installer v0.8.5
This release adds SageAttention 2.x support for RTX 50-series (Blackwell) GPUs running PyTorch 2.10 with CUDA 13.0 or 12.8.
Thanks to @joednemesis for reporting the missing configuration.
What's New in v0.8.5
Users with PyTorch 2.10 + CUDA 13.0 (or 12.8) now get SA 2.2.0.post4 installed automatically -- no --experimental flag needed. Previously, these environments fell back to SA 1.0.6.
The fix uses woct0rdho's "andhigher" forward-compatible ABI3 wheels, which are confirmed working with PyTorch 2.10 by both the upstream maintainer (#83) and users (#86).
Blackwell caveat: SageAttention's CUDA kernel path has known instability on some RTX 50-series GPUs (woct0rdho/SageAttention#87). The Triton fallback path works but may not provide the expected speedup yet. This is being tracked upstream.
What's New Since v0.8.0
The 0.8.x series added significant infrastructure alongside the core installer:
| Version | Highlights |
|---|---|
| v0.8.5 | SA 2.x wheels for PyTorch 2.10 + CUDA 13.0/12.8 (Blackwell support) |
| v0.8.4 | Stats workflow: schema versioning, delta-based dedup, totals repair |
| v0.8.3 | CI clone detection, organic clone separation, Dev tab with GitHub Statistics API charts |
| v0.8.2 | Tabbed stats dashboard (Installs, Views, Community, Overview) |
| v0.8.1 | Install statistics dashboard and traffic badges (#27) |
| v0.8.0 | ComfyUI installation auto-discovery (#25, #26) |
Supported Wheel Matrix (Updated)
| SA Version | CUDA | PyTorch | Type | Flag |
|---|---|---|---|---|
| 2.2.0.post4 | 13.0 | 2.10.x | ABI3 | -- |
| 2.2.0.post4 | 12.8 | 2.10.x | ABI3 | -- |
| 2.2.0.post4 | 13.0 | 2.9.x | ABI3 | --experimental |
| 2.2.0.post4 | 12.8 | 2.9.x | ABI3 | --experimental |
| 2.2.0.post3 | 13.0 | 2.9.x | ABI3 | -- |
| 2.2.0.post3 | 12.8 | 2.7-2.9.x | ABI3 | -- |
| 2.2.0.post3 | 12.6 | 2.6.x | ABI3 | -- |
| 2.2.0.post3 | 12.4 | 2.5.x | ABI3 | -- |
See docs/supported_wheels.md for the full matrix including SA 2.1.1 and legacy versions.
Testing
- 118 unit tests passing (3 new for Issue #29 scenarios)
- All 21 active wheel URLs verified via HTTP HEAD
Full Changelog
See CHANGELOG.md for complete details.
v0.8.0 - ComfyUI Installation Discovery
ComfyUI Triton and SageAttention Installer v0.8.0
This release focuses on making the installer easier to use by automatically finding your ComfyUI installation. No more confusing errors when running from the wrong directory!
Fix for Issue #25 - "Where do I run this from?"
Users were unsure about where to clone and run the installer. Running from the wrong directory resulted in cryptic errors or accidentally installing to the wrong Python environment.
Solution: The installer now automatically discovers ComfyUI installations and offers to use them.
New: ComfyUI Installation Discovery
# From anywhere - installer finds your ComfyUI
python comfyui_triton_sageattention.py --install discover
# List all found installations
python comfyui_triton_sageattention.py --show-installed locations
# Smart auto-detection (single install = auto-select)
python comfyui_triton_sageattention.py --show-installedDiscovery sources:
- ComfyUI Desktop config (
%APPDATA%\ComfyUI\config.json) - Common locations (Documents, C:, D:)
- Current working directory (if valid ComfyUI)
New CLI Modes
| Flag | Description |
|---|---|
--install discover |
Find installations, select interactively |
--upgrade discover |
Same for upgrades |
--show-installed locations |
List all found ComfyUI installations |
--show-installed discover |
Select installation, then show components |
--base-path discover |
Force discovery mode |
--base-path auto |
Check CWD first, discover if invalid |
ComfyUI Desktop Support
Full support for the official ComfyUI Desktop application:
- Detects Desktop's user data directory structure (custom_nodes + models)
- Works with
.venvenvironments created by uv package manager - Reads Desktop's config.json for reliable path discovery
Smart Auto Mode
When running --show-installed from outside a ComfyUI directory:
- Single installation found: Auto-selects and shows components (no interaction needed)
- Multiple installations: Lists them with hint to use
--show-installed discover
Architecture Improvements
New abstractions for cleaner, more maintainable code:
PythonEnvironmentdataclass - Encapsulates environment detailsInstallationTargetdataclass - WHERE (base_path) + HOW (environment)is_comfyui_directory()- Validates ComfyUI installationsdiscover_comfyui_installations()- Finds all installationsselect_installation_interactive()- Menu for selection
Testing
- 32 new unit tests for discovery functionality
- Test count: 83 → 115
- All tests passing
Full Changelog
See CHANGELOG.md for complete details.