From b57d526b5bf74bf01acd68f6c93c2a43ca0b145f Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Fri, 4 Sep 2026 07:52:46 +0200 Subject: [PATCH] update numpy/scripy and add SD_SKIP_AUTOTUNE Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 10 +++++++--- constraints.txt | 2 +- installer.py | 12 ++++++------ modules/sd_hijack_triton.py | 6 ++++++ requirements.txt | 8 ++++---- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d917c9976..acd7fa139 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log for SD.Next -## Update for 2026-09-02 +## Update for 2026-09-04 - **LoRA** - *TODO*: see [LoRA docs](https://vladmandic.github.io/sdnext-docs/LoRA) for all of the improvements and usage instructions @@ -36,11 +36,15 @@ - on-demand convert standard model on-demand - **Compute** - openvino: update `openvino==2026.3.1` with `torch==2.13.0` -- **Other** - - Video Preview: TAESD support for **MiniMax** + - add `SD_SKIP_AUTOTUNE` env variable to skip triton autotune and use default config for all triton kernels + *note*: this may improve initial generate time, but may also reduce performance on some models - new optional transformer hooks: *settings -> compute add-ons* *PAG: Perturbed attention guidance, PAB: Pyramid attention broadcast, FBC: First Block Cache, FC: Faster Cache, LS: Layer Skip, MC: Mag Cache, TS: TaylorSeer* *note*: compatibility of different methods varies across different models + - update `numpy` and `scipy` frozen requirements as required by new compute drivers + *note*: this may break compatibility with some legacy packages, so report any finidings +- **Other** + - Video Preview: TAESD support for **MiniMax** - remove `/redocs` as `/docs` are primary api docs - **Wiki/Docs**: - [MiniMax](https://vladmandic.github.io/sdnext-docs/MiniMax) updated with LoRA, Turbo and other improvements diff --git a/constraints.txt b/constraints.txt index a14553032..1eb39948b 100644 --- a/constraints.txt +++ b/constraints.txt @@ -1,3 +1,3 @@ fastapi==0.124.4 -numpy==2.1.2 +numpy==2.5.2 Pillow==12.2.0 diff --git a/installer.py b/installer.py index 42f8ae462..95b6fc85a 100644 --- a/installer.py +++ b/installer.py @@ -1277,10 +1277,8 @@ def install_pydantic(): def install_scipy(): - if args.new or (sys.version_info >= (3, 14)): - install('scipy==1.17.1', ignore=True, quiet=True) - else: - install('scipy==1.14.1', ignore=True, quiet=True) + # install('scipy==1.14.1', ignore=True, quiet=True) + install('scipy==1.18.1', ignore=True, quiet=True) def install_opencv(): @@ -1311,7 +1309,6 @@ def install_insightface(): def install_optional(): t_start = time.time() log.info('Installing optional requirements...') - install('pillow-heif') install('addict') install('yapf') install('--no-build-isolation git+https://github.com/Disty0/BasicSR@23c1fb6f5c559ef5ce7ad657f2fa56e41b121754', 'basicsr', ignore=True, quiet=True) @@ -1322,11 +1319,14 @@ def install_optional(): install('Cython', ignore=True, quiet=True) install('gguf', ignore=True, quiet=True) install('hf_transfer', ignore=True, quiet=True) - install('hf_xet', ignore=True, quiet=True) install('nvidia-ml-py', ignore=True, quiet=True) + install('pillow-heif') install('pillow-jxl-plugin==1.3.7', ignore=True, quiet=True) install('ultralytics==8.4.67', ignore=True, quiet=True) install('open-clip-torch', no_deps=True, quiet=True) + install('runai_model_streamer', ignore=True, quiet=True) + install('facexlib', ignore=True, quiet=True) + install('omegaconf', ignore=True, quiet=True) install('git+https://github.com/tencent-ailab/IP-Adapter.git', 'ip_adapter', ignore=True, quiet=True) # install('git+https://github.com/openai/CLIP.git', 'clip', quiet=True, no_build_isolation=True) ts('optional', t_start) diff --git a/modules/sd_hijack_triton.py b/modules/sd_hijack_triton.py index 28bb6530a..94aeba161 100644 --- a/modules/sd_hijack_triton.py +++ b/modules/sd_hijack_triton.py @@ -171,6 +171,12 @@ def run_hook(orig): if hasattr(arg, 'dtype'): key += (str(arg.dtype),) needs_benchmark = len(self.configs) > 1 and key not in self.cache + import os + skip_autotune = os.environ.get('SD_SKIP_AUTOTUNE', None) is not None + if needs_benchmark and skip_autotune: + log.trace('Autotune: skip') + self.cache[key] = self.configs[0] # pre-seed the cache so orig() takes its cache-hit path and skips the sweep + needs_benchmark = False if needs_benchmark: try: total = len(self.prune_configs(kwargs)) diff --git a/requirements.txt b/requirements.txt index 0e99da630..89a95dbdf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,15 +32,15 @@ requests==2.34.2 tqdm==4.70.0 accelerate==1.14.0 einops==0.8.2 -huggingface_hub==1.28.0 +huggingface_hub==1.30.0 hf_xet==1.6.0 -numpy==2.1.2 +numpy==2.5.2 pandas==2.3.1 -protobuf==7.36.0 +protobuf==7.36.1 pytorch_lightning==2.6.5 urllib3==1.26.19 Pillow==12.2.0 -timm==1.0.28 +timm==1.0.29 pyparsing==3.3.2 typing-extensions==4.16.0 sentencepiece==0.2.1