Skip to main content

Sparse / variable-length attention dispatch for ComfyUI custom nodes

Project description

comfy-sparse-attn

Sparse / variable-length attention dispatch for ComfyUI custom nodes, plus a filesystem-link utility for staging sparse primitives under the comfy namespace ahead of their upstream merge.

Quick Start

pip install comfy-sparse-attn

Varlen Attention

Handles the varlen case that ComfyUI's built-in attention doesn't cover: packed sequences of different lengths across a batch, as produced by sparse 3D models (point clouds, voxels, VarLenTensors). For ordinary dense attention use optimized_attention_for_device from ComfyUI directly.

from comfy_sparse_attn import dispatch_varlen_attention

# q, k, v: [T, H, D]  — total tokens packed across the batch
# cu_seqlens_q / cu_seqlens_kv: [B+1] int32 cumulative lengths
# max_seqlen_q / max_seqlen_kv: int, longest sequence in the batch
out = dispatch_varlen_attention(
    q, k, v,
    cu_seqlens_q, cu_seqlens_kv,
    max_seqlen_q, max_seqlen_kv,
)
# out: [T, H, D]

Backend Priority

GPU Priority
SM ≥ 8.0 (Ampere / Ada / Hopper / Blackwell) sage2 > flash > xformers > sdpa
Older / CPU xformers > sdpa

comfy Namespace Injection

Sparse primitives (comfy.sparse, comfy.ops_sparse, comfy.attention_sparse) are written as if already merged into ComfyUI main. setup_link creates symlinks at those paths at node-load time so the imports work today. When ComfyUI ships the real files, setup_link detects them and becomes a no-op — no code changes needed.

Call it from your node's __init__.py before any model imports:

import pathlib
from comfy_sparse_attn import setup_link

_HERE = pathlib.Path(__file__).parent / "my_model"
setup_link(_HERE / "sparse.py",           "sparse.py")            # → comfy/sparse.py
setup_link(_HERE / "ops_sparse.py",       "ops_sparse.py")        # → comfy/ops_sparse.py
setup_link(_HERE / "attention_sparse.py", "attention_sparse.py")  # → comfy/attention_sparse.py

setup_link skips silently if:

  • The target is a real file (ComfyUI shipped it natively).
  • The target is already a symlink pointing to the same source.

What This Package Is Not

  • Not a dense attention dispatcher. Use comfy.ldm.modules.attention.optimized_attention_for_device.
  • Not a kernel implementation. Routes to ComfyUI's built-in backends or xformers/SDPA.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

comfy_sparse_attn-0.0.5.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

comfy_sparse_attn-0.0.5-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file comfy_sparse_attn-0.0.5.tar.gz.

File metadata

  • Download URL: comfy_sparse_attn-0.0.5.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for comfy_sparse_attn-0.0.5.tar.gz
Algorithm Hash digest
SHA256 57e3f1ec1efeb3b7ad249dc2494e06210485180480af5dabc8598be1d7ea152a
MD5 269fa8eb77f6abba6776104080ada49d
BLAKE2b-256 ce8f9cf2c4ebb2e39bd45e2fec975a7b78d42c7613ce0d370f7c9c0d9627ff4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for comfy_sparse_attn-0.0.5.tar.gz:

Publisher: publish.yml on PozzettiAndrea/comfy-sparse-attn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file comfy_sparse_attn-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for comfy_sparse_attn-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0e5ae91d5a7d95cb2efe3cea88d67fef1d2620baf6857df4742edd93dad1ee9c
MD5 43f4cedcf4a5025aaa6db1dcf53f3d7e
BLAKE2b-256 a70243fd96dc15896f43dbd08cc40947e0269acf81ec6a5c00d44ace45964acd

See more details on using hashes here.

Provenance

The following attestation bundles were made for comfy_sparse_attn-0.0.5-py3-none-any.whl:

Publisher: publish.yml on PozzettiAndrea/comfy-sparse-attn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page