From 69d8f4f7c4384900efaf861b1b2450c2a6f2d57f Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Sat, 22 Aug 2026 16:08:58 +0200 Subject: [PATCH] handle torchsde Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 2 ++ modules/sd_samplers_diffusers.py | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a304765..615ca5c1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and improves general video processing with flexible video upscaling, updated int - New [group offload](https://vladmandic.github.io/sdnext-docs/Offload/#group) option which is more aggressive than the default balanced offload - Extended model support for [Nunchaku-Lite](https://github.com/rootonchair/nunchaku-lite) engine - A lot of [SDNQ](https://github.com/Disty0/sdnq) *quantization and attention* optimizations and features +- Updated [SD.Next Launcher](https://github.com/vladmandic/sdnext-launcher) Plus quite a lot more, see full [changelog](https://github.com/vladmandic/automatic/blob/dev/CHANGELOG.md) for details! @@ -113,6 +114,7 @@ Plus quite a lot more, see full [changelog](https://github.com/vladmandic/automa - api: process - api: auth via remote-ip - krea2: fallback to base pipeline/transformer for nunchaku-lite + - torchsde: handle obsolete dependency ## Update for 2026-08-07 diff --git a/modules/sd_samplers_diffusers.py b/modules/sd_samplers_diffusers.py index 6b67e7d57..c64145f3c 100644 --- a/modules/sd_samplers_diffusers.py +++ b/modules/sd_samplers_diffusers.py @@ -3,6 +3,7 @@ import re import copy import inspect import diffusers +from installer import install from modules import shared, errors from modules.logger import log from modules.sd_hijack_schedulers import init_hijack, hijack_unipc, attach_scale_noise_if_missing # pylint: disable=unused-import @@ -20,13 +21,11 @@ hijack_unipc() try: from diffusers import ( CMStochasticIterativeScheduler, - CosineDPMSolverMultistepScheduler, DDIMScheduler, DDPMScheduler, DEISMultistepScheduler, DPMSolverMultistepInverseScheduler, DPMSolverMultistepScheduler, - DPMSolverSDEScheduler, DPMSolverSinglestepScheduler, EDMDPMSolverMultistepScheduler, EDMEulerScheduler, @@ -54,6 +53,20 @@ except Exception as e: if os.environ.get('SD_SAMPLER_DEBUG', None) is not None: errors.display(e, 'Samplers') +try: + install('trampoline==0.1.2', 'trampoline', quiet=True, no_deps=True) + install('torchsde==0.2.6', 'torchsde', quiet=True, no_deps=True) + from diffusers import ( + DPMSolverSDEScheduler, + CosineDPMSolverMultistepScheduler, + ) +except Exception as e: + DPMSolverSDEScheduler = None + CosineDPMSolverMultistepScheduler = None + log.error(f'Sampler import: version={diffusers.__version__} error: {e}') + if os.environ.get('SD_SAMPLER_DEBUG', None) is not None: + errors.display(e, 'Samplers') + # SD.Next Schedulers try: # from modules.schedulers.scheduler_tcd import TCDScheduler # pylint: disable=ungrouped-imports