summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-09-13 22:02:44 +0900
committertanaka takashi <isazaka@gmail.com>2026-09-13 22:02:44 +0900
commit213e738140859dbcc12c2540ce40d6b6d2875aa7 (patch)
tree93443693ffbfbfb8706e1eea2f857d677d62cb4a /src
parentde44625e3baae4d43ad096248b7096578b11e0b0 (diff)
ddim timestep_spacingをtrailingに強制するモードを追加
Diffstat (limited to 'src')
-rw-r--r--src/mcp_sd15/config.py4
-rw-r--r--src/mcp_sd15/pipeline_factory.py5
-rw-r--r--src/mcp_sd15/service.py1
3 files changed, 9 insertions, 1 deletions
diff --git a/src/mcp_sd15/config.py b/src/mcp_sd15/config.py
index 39f31c9..c82cb6e 100644
--- a/src/mcp_sd15/config.py
+++ b/src/mcp_sd15/config.py
@@ -11,7 +11,9 @@ from typing import Any
from .errors import ConfigError
VALID_SIZES = frozenset({"square_512", "landscape_512", "portrait_512"})
-VALID_SCHEDULERS = frozenset({"dpmpp_2m_karras", "dpmpp_2m_sde_karras", "euler_a", "ddim", "lcm"})
+VALID_SCHEDULERS = frozenset(
+ {"dpmpp_2m_karras", "dpmpp_2m_sde_karras", "euler_a", "ddim", "ddim_trailing", "lcm"}
+)
VALID_TRANSPORTS = frozenset({"stdio", "streamable-http"})
diff --git a/src/mcp_sd15/pipeline_factory.py b/src/mcp_sd15/pipeline_factory.py
index 02fe882..e865555 100644
--- a/src/mcp_sd15/pipeline_factory.py
+++ b/src/mcp_sd15/pipeline_factory.py
@@ -151,6 +151,11 @@ class PipelineFactory:
solver_order=2,
use_karras_sigmas=True,
)
+ if name == "ddim_trailing":
+ return diffusers.DDIMScheduler.from_config(
+ current.config,
+ timestep_spacing="trailing",
+ )
classes = {
"euler_a": diffusers.EulerAncestralDiscreteScheduler,
"ddim": diffusers.DDIMScheduler,
diff --git a/src/mcp_sd15/service.py b/src/mcp_sd15/service.py
index 65b62e7..c1feade 100644
--- a/src/mcp_sd15/service.py
+++ b/src/mcp_sd15/service.py
@@ -96,6 +96,7 @@ class ImageGenerationService:
"seed": seed,
"size": str(request.size),
"mode": method,
+ "scheduler": self.config.generation.scheduler,
"timestamp": datetime.now(UTC).isoformat(),
"elapsed_seconds": round(time.monotonic() - started, 3),
}