Skip to content

Commit fd88f3d

Browse files
authored
Merge branch 'main' into custom-modular-tests
2 parents ea4f29f + 8f80dda commit fd88f3d

17 files changed

+167
-40
lines changed

src/diffusers/models/auto_model.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,13 @@ def from_pretrained(cls, pretrained_model_or_path: Optional[Union[str, os.PathLi
147147
"force_download",
148148
"local_files_only",
149149
"proxies",
150-
"resume_download",
151150
"revision",
152151
"token",
153152
]
154153
hub_kwargs = {name: kwargs.pop(name, None) for name in hub_kwargs_names}
155154

156155
# load_config_kwargs uses the same hub kwargs minus subfolder and resume_download
157-
load_config_kwargs = {k: v for k, v in hub_kwargs.items() if k not in ["subfolder", "resume_download"]}
156+
load_config_kwargs = {k: v for k, v in hub_kwargs.items() if k not in ["subfolder"]}
158157

159158
library = None
160159
orig_class_name = None
@@ -205,7 +204,6 @@ def from_pretrained(cls, pretrained_model_or_path: Optional[Union[str, os.PathLi
205204
module_file=module_file,
206205
class_name=class_name,
207206
**hub_kwargs,
208-
**kwargs,
209207
)
210208
else:
211209
from ..pipelines.pipeline_loading_utils import ALL_IMPORTABLE_CLASSES, get_class_obj_and_candidates

src/diffusers/modular_pipelines/components_manager.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,11 @@ def __call__(self, hooks, model_id, model, execution_device):
164164

165165
device_type = execution_device.type
166166
device_module = getattr(torch, device_type, torch.cuda)
167-
mem_on_device = device_module.mem_get_info(execution_device.index)[0]
167+
try:
168+
mem_on_device = device_module.mem_get_info(execution_device.index)[0]
169+
except AttributeError:
170+
raise AttributeError(f"Do not know how to obtain obtain memory info for {str(device_module)}.")
171+
168172
mem_on_device = mem_on_device - self.memory_reserve_margin
169173
if current_module_size < mem_on_device:
170174
return []
@@ -699,6 +703,8 @@ def enable_auto_cpu_offload(self, device: Union[str, int, torch.device] = None,
699703
if not is_accelerate_available():
700704
raise ImportError("Make sure to install accelerate to use auto_cpu_offload")
701705

706+
# TODO: add a warning if mem_get_info isn't available on `device`.
707+
702708
for name, component in self.components.items():
703709
if isinstance(component, torch.nn.Module) and hasattr(component, "_hf_hook"):
704710
remove_hook_from_module(component, recurse=True)

src/diffusers/modular_pipelines/flux/before_denoise.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ def __call__(self, components: FluxModularPipeline, state: PipelineState) -> Pip
598598
and getattr(block_state, "image_width", None) is not None
599599
):
600600
image_latent_height = 2 * (int(block_state.image_height) // (components.vae_scale_factor * 2))
601-
image_latent_width = 2 * (int(block_state.width) // (components.vae_scale_factor * 2))
601+
image_latent_width = 2 * (int(block_state.image_width) // (components.vae_scale_factor * 2))
602602
img_ids = FluxPipeline._prepare_latent_image_ids(
603603
None, image_latent_height // 2, image_latent_width // 2, device, dtype
604604
)

src/diffusers/modular_pipelines/flux/denoise.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def inputs(self) -> List[Tuple[str, Any]]:
5959
),
6060
InputParam(
6161
"guidance",
62-
required=True,
62+
required=False,
6363
type_hint=torch.Tensor,
6464
description="Guidance scale as a tensor",
6565
),
@@ -141,7 +141,7 @@ def inputs(self) -> List[Tuple[str, Any]]:
141141
),
142142
InputParam(
143143
"guidance",
144-
required=True,
144+
required=False,
145145
type_hint=torch.Tensor,
146146
description="Guidance scale as a tensor",
147147
),

src/diffusers/modular_pipelines/flux/encoders.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def expected_components(self) -> List[ComponentSpec]:
9595
ComponentSpec(
9696
"image_processor",
9797
VaeImageProcessor,
98-
config=FrozenDict({"vae_scale_factor": 16}),
98+
config=FrozenDict({"vae_scale_factor": 16, "vae_latent_channels": 16}),
9999
default_creation_method="from_config",
100100
),
101101
]
@@ -143,10 +143,6 @@ def __call__(self, components: FluxModularPipeline, state: PipelineState):
143143
class FluxKontextProcessImagesInputStep(ModularPipelineBlocks):
144144
model_name = "flux-kontext"
145145

146-
def __init__(self, _auto_resize=True):
147-
self._auto_resize = _auto_resize
148-
super().__init__()
149-
150146
@property
151147
def description(self) -> str:
152148
return (
@@ -167,7 +163,7 @@ def expected_components(self) -> List[ComponentSpec]:
167163

168164
@property
169165
def inputs(self) -> List[InputParam]:
170-
return [InputParam("image")]
166+
return [InputParam("image"), InputParam("_auto_resize", type_hint=bool, default=True)]
171167

172168
@property
173169
def intermediate_outputs(self) -> List[OutputParam]:
@@ -195,7 +191,8 @@ def __call__(self, components: FluxModularPipeline, state: PipelineState):
195191
img = images[0]
196192
image_height, image_width = components.image_processor.get_default_height_width(img)
197193
aspect_ratio = image_width / image_height
198-
if self._auto_resize:
194+
_auto_resize = block_state._auto_resize
195+
if _auto_resize:
199196
# Kontext is trained on specific resolutions, using one of them is recommended
200197
_, image_width, image_height = min(
201198
(abs(aspect_ratio - w / h), w, h) for w, h in PREFERRED_KONTEXT_RESOLUTIONS

src/diffusers/modular_pipelines/flux/inputs.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ def __call__(self, components: FluxModularPipeline, state: PipelineState) -> Pip
112112
block_state.prompt_embeds = block_state.prompt_embeds.view(
113113
block_state.batch_size * block_state.num_images_per_prompt, seq_len, -1
114114
)
115+
pooled_prompt_embeds = block_state.pooled_prompt_embeds.repeat(1, block_state.num_images_per_prompt)
116+
block_state.pooled_prompt_embeds = pooled_prompt_embeds.view(
117+
block_state.batch_size * block_state.num_images_per_prompt, -1
118+
)
115119
self.set_block_state(state, block_state)
116120

117121
return components, state

src/diffusers/modular_pipelines/modular_pipeline.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ def from_pretrained(
307307
"local_files_only",
308308
"local_dir",
309309
"proxies",
310-
"resume_download",
311310
"revision",
312311
"subfolder",
313312
"token",
@@ -2131,8 +2130,13 @@ def load_components(self, names: Optional[Union[List[str], str]] = None, **kwarg
21312130
component_load_kwargs[key] = value["default"]
21322131
try:
21332132
components_to_register[name] = spec.load(**component_load_kwargs)
2134-
except Exception as e:
2135-
logger.warning(f"Failed to create component '{name}': {e}")
2133+
except Exception:
2134+
logger.warning(
2135+
f"\nFailed to create component {name}:\n"
2136+
f"- Component spec: {spec}\n"
2137+
f"- load() called with kwargs: {component_load_kwargs}\n\n"
2138+
f"{traceback.format_exc()}"
2139+
)
21362140

21372141
# Register all components at once
21382142
self.register_components(**components_to_register)

src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ def _get_clip_prompt_embeds(
355355
prompt_embeds = prompt_embeds.repeat(1, num_images_per_prompt, 1)
356356
prompt_embeds = prompt_embeds.view(batch_size * num_images_per_prompt, seq_len, -1)
357357

358-
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt, 1)
358+
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt)
359359
pooled_prompt_embeds = pooled_prompt_embeds.view(batch_size * num_images_per_prompt, -1)
360360

361361
return prompt_embeds, pooled_prompt_embeds

src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def _get_clip_prompt_embeds(
373373
prompt_embeds = prompt_embeds.repeat(1, num_images_per_prompt, 1)
374374
prompt_embeds = prompt_embeds.view(batch_size * num_images_per_prompt, seq_len, -1)
375375

376-
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt, 1)
376+
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt)
377377
pooled_prompt_embeds = pooled_prompt_embeds.view(batch_size * num_images_per_prompt, -1)
378378

379379
return prompt_embeds, pooled_prompt_embeds

src/diffusers/pipelines/pag/pipeline_pag_sd_3.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ def _get_clip_prompt_embeds(
326326
prompt_embeds = prompt_embeds.repeat(1, num_images_per_prompt, 1)
327327
prompt_embeds = prompt_embeds.view(batch_size * num_images_per_prompt, seq_len, -1)
328328

329-
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt, 1)
329+
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt)
330330
pooled_prompt_embeds = pooled_prompt_embeds.view(batch_size * num_images_per_prompt, -1)
331331

332332
return prompt_embeds, pooled_prompt_embeds

0 commit comments

Comments
 (0)