From 9e69fdf7f308c2d59649edf753fe5f822c12e167 Mon Sep 17 00:00:00 2001 From: Example User Date: Thu, 20 Feb 2025 04:40:06 +0000 Subject: [PATCH 1/2] Fix FLUX scheduler --- xinference/model/image/stable_diffusion/core.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xinference/model/image/stable_diffusion/core.py b/xinference/model/image/stable_diffusion/core.py index 3330fd9395..20d146db66 100644 --- a/xinference/model/image/stable_diffusion/core.py +++ b/xinference/model/image/stable_diffusion/core.py @@ -416,8 +416,12 @@ def _get_scheduler(model: Any, sampler_name: str): @contextlib.contextmanager def _reset_when_done(model: Any, sampler_name: str): assert model is not None + name_or_path: Optional[str] = getattr(model, "_name_or_path", None) + is_flux_sampler = "flux" in name_or_path.casefold() if name_or_path else False scheduler = DiffusionModel._get_scheduler(model, sampler_name) - if scheduler: + # When the model is not flux + should_swap_scheduler = scheduler is not None and not is_flux_sampler + if should_swap_scheduler: default_scheduler = model.scheduler model.scheduler = scheduler try: From 20f506603fb0e3e992c078247fb234c72a3189d7 Mon Sep 17 00:00:00 2001 From: Example User Date: Thu, 20 Feb 2025 06:35:26 +0000 Subject: [PATCH 2/2] fast --- xinference/model/image/stable_diffusion/core.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/xinference/model/image/stable_diffusion/core.py b/xinference/model/image/stable_diffusion/core.py index 20d146db66..4ba5e7663f 100644 --- a/xinference/model/image/stable_diffusion/core.py +++ b/xinference/model/image/stable_diffusion/core.py @@ -412,12 +412,13 @@ def _get_scheduler(model: Any, sampler_name: str): else: raise ValueError(f"Unknown sampler: {sampler_name}") - @staticmethod @contextlib.contextmanager - def _reset_when_done(model: Any, sampler_name: str): + def _reset_when_done(self, model: Any, sampler_name: str): assert model is not None - name_or_path: Optional[str] = getattr(model, "_name_or_path", None) - is_flux_sampler = "flux" in name_or_path.casefold() if name_or_path else False + if self._model_spec is None: + is_flux_sampler = False + else: + is_flux_sampler = "FLUX" in self._model_spec.model_name scheduler = DiffusionModel._get_scheduler(model, sampler_name) # When the model is not flux should_swap_scheduler = scheduler is not None and not is_flux_sampler