Skip to content

Commit 7b107d3

Browse files
AlanPonnachangithub-actions[bot]yiyixuxusayakpaul
authored
feat: Add Modular Pipeline for Stable Diffusion 3 (SD3) (#13324)
* initial architecture * add blocks to various inits * styling * push tiny-sd3-modular to hub and fix the tests * rename modules * guidance refactoring * Apply style fixes * set default height and width * - skip layer refactoring - add autodocstring to assembled blocks * add description and run autostring script * styling * add descriptions for outputparams and styling * 1. fix imports 2. refactored encoders and inputs 3. refactored for more flat structure 4. styling * fix dtype * Apply style fixes * fix ci failures * resolve review points * Apply style fixes * minor nits * Apply style fixes * Apply suggestion from @yiyixuxu * run make fix-copies --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: YiYi Xu <yixu310@gmail.com> Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
1 parent 84006ed commit 7b107d3

14 files changed

Lines changed: 2364 additions & 0 deletions

File tree

src/diffusers/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,8 @@
473473
"QwenImageLayeredAutoBlocks",
474474
"QwenImageLayeredModularPipeline",
475475
"QwenImageModularPipeline",
476+
"StableDiffusion3AutoBlocks",
477+
"StableDiffusion3ModularPipeline",
476478
"StableDiffusionXLAutoBlocks",
477479
"StableDiffusionXLModularPipeline",
478480
"Wan22Blocks",
@@ -1269,6 +1271,8 @@
12691271
QwenImageLayeredAutoBlocks,
12701272
QwenImageLayeredModularPipeline,
12711273
QwenImageModularPipeline,
1274+
StableDiffusion3AutoBlocks,
1275+
StableDiffusion3ModularPipeline,
12721276
StableDiffusionXLAutoBlocks,
12731277
StableDiffusionXLModularPipeline,
12741278
Wan22Blocks,

src/diffusers/modular_pipelines/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"InsertableDict",
4747
]
4848
_import_structure["stable_diffusion_xl"] = ["StableDiffusionXLAutoBlocks", "StableDiffusionXLModularPipeline"]
49+
_import_structure["stable_diffusion_3"] = ["StableDiffusion3AutoBlocks", "StableDiffusion3ModularPipeline"]
4950
_import_structure["wan"] = [
5051
"WanBlocks",
5152
"Wan22Blocks",
@@ -158,6 +159,7 @@
158159
QwenImageLayeredModularPipeline,
159160
QwenImageModularPipeline,
160161
)
162+
from .stable_diffusion_3 import StableDiffusion3AutoBlocks, StableDiffusion3ModularPipeline
161163
from .stable_diffusion_xl import StableDiffusionXLAutoBlocks, StableDiffusionXLModularPipeline
162164
from .wan import (
163165
Wan22Blocks,

src/diffusers/modular_pipelines/modular_pipeline.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ def _helios_pyramid_map_fn(config_dict=None):
119119
MODULAR_PIPELINE_MAPPING = OrderedDict(
120120
[
121121
("stable-diffusion-xl", _create_default_map_fn("StableDiffusionXLModularPipeline")),
122+
("stable-diffusion-3", _create_default_map_fn("StableDiffusion3ModularPipeline")),
122123
("wan", _wan_map_fn),
123124
("wan-i2v", _wan_i2v_map_fn),
124125
("flux", _create_default_map_fn("FluxModularPipeline")),
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from typing import TYPE_CHECKING
2+
3+
from ...utils import (
4+
DIFFUSERS_SLOW_IMPORT,
5+
OptionalDependencyNotAvailable,
6+
_LazyModule,
7+
get_objects_from_module,
8+
is_torch_available,
9+
is_transformers_available,
10+
)
11+
12+
13+
_dummy_objects = {}
14+
_import_structure = {}
15+
16+
try:
17+
if not (is_transformers_available() and is_torch_available()):
18+
raise OptionalDependencyNotAvailable()
19+
except OptionalDependencyNotAvailable:
20+
from ...utils import dummy_torch_and_transformers_objects # noqa F403
21+
22+
_dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_objects))
23+
else:
24+
_import_structure["modular_blocks_stable_diffusion_3"] = ["StableDiffusion3AutoBlocks"]
25+
_import_structure["modular_pipeline"] = ["StableDiffusion3ModularPipeline"]
26+
27+
if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT:
28+
try:
29+
if not (is_transformers_available() and is_torch_available()):
30+
raise OptionalDependencyNotAvailable()
31+
except OptionalDependencyNotAvailable:
32+
from ...utils.dummy_torch_and_transformers_objects import * # noqa F403
33+
else:
34+
from .modular_blocks_stable_diffusion_3 import StableDiffusion3AutoBlocks
35+
from .modular_pipeline import StableDiffusion3ModularPipeline
36+
else:
37+
import sys
38+
39+
sys.modules[__name__] = _LazyModule(
40+
__name__,
41+
globals()["__file__"],
42+
_import_structure,
43+
module_spec=__spec__,
44+
)
45+
46+
for name, value in _dummy_objects.items():
47+
setattr(sys.modules[__name__], name, value)

0 commit comments

Comments
 (0)