Update custom_pipeline.py
Browse files- custom_pipeline.py +3 -7
custom_pipeline.py
CHANGED
@@ -47,10 +47,6 @@ class FluxWithCFGPipeline(FluxPipeline):
|
|
47 |
Extends the FluxPipeline to yield intermediate images during the denoising process
|
48 |
with progressively increasing resolution for faster generation.
|
49 |
"""
|
50 |
-
def __init__(self, *args, **kwargs):
|
51 |
-
super().__init__(*args, **kwargs)
|
52 |
-
self.default_sample_size = 512 # Default sample size from the first pipeline
|
53 |
-
|
54 |
@torch.inference_mode()
|
55 |
def generate_images(
|
56 |
self,
|
@@ -106,7 +102,6 @@ class FluxWithCFGPipeline(FluxPipeline):
|
|
106 |
max_sequence_length=max_sequence_length,
|
107 |
lora_scale=lora_scale,
|
108 |
)
|
109 |
-
|
110 |
# 4. Prepare latent variables
|
111 |
num_channels_latents = self.transformer.config.in_channels // 4
|
112 |
latents, latent_image_ids = self.prepare_latents(
|
@@ -119,7 +114,6 @@ class FluxWithCFGPipeline(FluxPipeline):
|
|
119 |
generator,
|
120 |
latents,
|
121 |
)
|
122 |
-
|
123 |
# 5. Prepare timesteps
|
124 |
sigmas = np.linspace(1.0, 1 / num_inference_steps, num_inference_steps)
|
125 |
image_seq_len = latents.shape[1]
|
@@ -156,12 +150,14 @@ class FluxWithCFGPipeline(FluxPipeline):
|
|
156 |
return_dict=False,
|
157 |
)[0]
|
158 |
|
159 |
-
|
160 |
latents = self.scheduler.step(noise_pred, t, latents, return_dict=False)[0]
|
161 |
torch.cuda.empty_cache()
|
162 |
|
163 |
# Final image
|
164 |
return self._decode_latents_to_image(latents, height, width, output_type)
|
|
|
|
|
165 |
|
166 |
def _decode_latents_to_image(self, latents, height, width, output_type, vae=None):
|
167 |
"""Decodes the given latents into an image."""
|
|
|
47 |
Extends the FluxPipeline to yield intermediate images during the denoising process
|
48 |
with progressively increasing resolution for faster generation.
|
49 |
"""
|
|
|
|
|
|
|
|
|
50 |
@torch.inference_mode()
|
51 |
def generate_images(
|
52 |
self,
|
|
|
102 |
max_sequence_length=max_sequence_length,
|
103 |
lora_scale=lora_scale,
|
104 |
)
|
|
|
105 |
# 4. Prepare latent variables
|
106 |
num_channels_latents = self.transformer.config.in_channels // 4
|
107 |
latents, latent_image_ids = self.prepare_latents(
|
|
|
114 |
generator,
|
115 |
latents,
|
116 |
)
|
|
|
117 |
# 5. Prepare timesteps
|
118 |
sigmas = np.linspace(1.0, 1 / num_inference_steps, num_inference_steps)
|
119 |
image_seq_len = latents.shape[1]
|
|
|
150 |
return_dict=False,
|
151 |
)[0]
|
152 |
|
153 |
+
# Yield intermediate result
|
154 |
latents = self.scheduler.step(noise_pred, t, latents, return_dict=False)[0]
|
155 |
torch.cuda.empty_cache()
|
156 |
|
157 |
# Final image
|
158 |
return self._decode_latents_to_image(latents, height, width, output_type)
|
159 |
+
self.maybe_free_model_hooks()
|
160 |
+
torch.cuda.empty_cache()
|
161 |
|
162 |
def _decode_latents_to_image(self, latents, height, width, output_type, vae=None):
|
163 |
"""Decodes the given latents into an image."""
|