mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-04-20 03:13:30 +00:00
Add ModelSamplingStableCascade to control the shift sampling parameter.
shift is 2.0 by default on Stage C and 1.0 by default on Stage B.
This commit is contained in:
parent
6bcf57ff10
commit
8b60d33bb7
@ -142,12 +142,16 @@ class StableCascadeSampling(ModelSamplingDiscrete):
|
|||||||
else:
|
else:
|
||||||
sampling_settings = {}
|
sampling_settings = {}
|
||||||
|
|
||||||
self.num_timesteps = 1000
|
self.set_parameters(sampling_settings.get("shift", 1.0))
|
||||||
self.shift = sampling_settings.get("shift", 1.0)
|
|
||||||
cosine_s=8e-3
|
def set_parameters(self, shift=1.0, cosine_s=8e-3):
|
||||||
|
self.shift = shift
|
||||||
self.cosine_s = torch.tensor(cosine_s)
|
self.cosine_s = torch.tensor(cosine_s)
|
||||||
sigmas = torch.empty((self.num_timesteps), dtype=torch.float32)
|
|
||||||
self._init_alpha_cumprod = torch.cos(self.cosine_s / (1 + self.cosine_s) * torch.pi * 0.5) ** 2
|
self._init_alpha_cumprod = torch.cos(self.cosine_s / (1 + self.cosine_s) * torch.pi * 0.5) ** 2
|
||||||
|
|
||||||
|
#This part is just for compatibility with some schedulers in the codebase
|
||||||
|
self.num_timesteps = 1000
|
||||||
|
sigmas = torch.empty((self.num_timesteps), dtype=torch.float32)
|
||||||
for x in range(self.num_timesteps):
|
for x in range(self.num_timesteps):
|
||||||
t = x / self.num_timesteps
|
t = x / self.num_timesteps
|
||||||
sigmas[x] = self.sigma(t)
|
sigmas[x] = self.sigma(t)
|
||||||
|
@ -99,6 +99,32 @@ class ModelSamplingDiscrete:
|
|||||||
m.add_object_patch("model_sampling", model_sampling)
|
m.add_object_patch("model_sampling", model_sampling)
|
||||||
return (m, )
|
return (m, )
|
||||||
|
|
||||||
|
class ModelSamplingStableCascade:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
return {"required": { "model": ("MODEL",),
|
||||||
|
"shift": ("FLOAT", {"default": 2.0, "min": 0.0, "max": 100.0, "step":0.01}),
|
||||||
|
}}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("MODEL",)
|
||||||
|
FUNCTION = "patch"
|
||||||
|
|
||||||
|
CATEGORY = "advanced/model"
|
||||||
|
|
||||||
|
def patch(self, model, shift):
|
||||||
|
m = model.clone()
|
||||||
|
|
||||||
|
sampling_base = comfy.model_sampling.StableCascadeSampling
|
||||||
|
sampling_type = comfy.model_sampling.EPS
|
||||||
|
|
||||||
|
class ModelSamplingAdvanced(sampling_base, sampling_type):
|
||||||
|
pass
|
||||||
|
|
||||||
|
model_sampling = ModelSamplingAdvanced(model.model.model_config)
|
||||||
|
model_sampling.set_parameters(shift)
|
||||||
|
m.add_object_patch("model_sampling", model_sampling)
|
||||||
|
return (m, )
|
||||||
|
|
||||||
class ModelSamplingContinuousEDM:
|
class ModelSamplingContinuousEDM:
|
||||||
@classmethod
|
@classmethod
|
||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
@ -171,5 +197,6 @@ class RescaleCFG:
|
|||||||
NODE_CLASS_MAPPINGS = {
|
NODE_CLASS_MAPPINGS = {
|
||||||
"ModelSamplingDiscrete": ModelSamplingDiscrete,
|
"ModelSamplingDiscrete": ModelSamplingDiscrete,
|
||||||
"ModelSamplingContinuousEDM": ModelSamplingContinuousEDM,
|
"ModelSamplingContinuousEDM": ModelSamplingContinuousEDM,
|
||||||
|
"ModelSamplingStableCascade": ModelSamplingStableCascade,
|
||||||
"RescaleCFG": RescaleCFG,
|
"RescaleCFG": RescaleCFG,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user