Skip to content

Commit 38c1d0d

Browse files
authored
Merge branch 'main' into test-better-torch-compile
2 parents e0566e6 + 8819cda commit 38c1d0d

File tree

6 files changed

+29
-7
lines changed

6 files changed

+29
-7
lines changed

docs/source/en/community_projects.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,8 @@ Happy exploring, and thank you for being part of the Diffusers community!
8383
<td><a href="https://github.com/suzukimain/auto_diffusers"> Model Search </a></td>
8484
<td>Search models on Civitai and Hugging Face</td>
8585
</tr>
86+
<tr style="border-top: 2px solid black">
87+
<td><a href="https://github.com/beinsezii/skrample"> Skrample </a></td>
88+
<td>Fully modular scheduler functions with 1st class diffusers integration.</td>
89+
</tr>
8690
</table>

src/diffusers/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,7 @@
860860
EulerDiscreteScheduler,
861861
FlowMatchEulerDiscreteScheduler,
862862
FlowMatchHeunDiscreteScheduler,
863+
FlowMatchLCMScheduler,
863864
HeunDiscreteScheduler,
864865
IPNDMScheduler,
865866
KarrasVeScheduler,

src/diffusers/models/transformers/transformer_hidream_image.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,12 @@ def forward(self, latent):
9595
def rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
9696
assert dim % 2 == 0, "The dimension must be even."
9797

98-
scale = torch.arange(0, dim, 2, dtype=torch.float64, device=pos.device) / dim
98+
is_mps = pos.device.type == "mps"
99+
is_npu = pos.device.type == "npu"
100+
101+
dtype = torch.float32 if (is_mps or is_npu) else torch.float64
102+
103+
scale = torch.arange(0, dim, 2, dtype=dtype, device=pos.device) / dim
99104
omega = 1.0 / (theta**scale)
100105

101106
batch_size, seq_length = pos.shape

src/diffusers/pipelines/hidream_image/pipeline_hidream_image.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
```py
3737
>>> import torch
3838
>>> from transformers import PreTrainedTokenizerFast, LlamaForCausalLM
39-
>>> from diffusers import UniPCMultistepScheduler, HiDreamImagePipeline, HiDreamImageTransformer2DModel
39+
>>> from diffusers import UniPCMultistepScheduler, HiDreamImagePipeline
4040
4141
>>> scheduler = UniPCMultistepScheduler(
4242
... flow_shift=3.0, prediction_type="flow_prediction", use_flow_sigmas=True
@@ -50,16 +50,11 @@
5050
... torch_dtype=torch.bfloat16,
5151
... )
5252
53-
>>> transformer = HiDreamImageTransformer2DModel.from_pretrained(
54-
... "HiDream-ai/HiDream-I1-Full", subfolder="transformer", torch_dtype=torch.bfloat16
55-
... )
56-
5753
>>> pipe = HiDreamImagePipeline.from_pretrained(
5854
... "HiDream-ai/HiDream-I1-Full",
5955
... scheduler=scheduler,
6056
... tokenizer_4=tokenizer_4,
6157
... text_encoder_4=text_encoder_4,
62-
... transformer=transformer,
6358
... torch_dtype=torch.bfloat16,
6459
... )
6560
>>> pipe.enable_model_cpu_offload()

src/diffusers/schedulers/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
_import_structure["scheduling_euler_discrete"] = ["EulerDiscreteScheduler"]
6161
_import_structure["scheduling_flow_match_euler_discrete"] = ["FlowMatchEulerDiscreteScheduler"]
6262
_import_structure["scheduling_flow_match_heun_discrete"] = ["FlowMatchHeunDiscreteScheduler"]
63+
_import_structure["scheduling_flow_match_lcm"] = ["FlowMatchLCMScheduler"]
6364
_import_structure["scheduling_heun_discrete"] = ["HeunDiscreteScheduler"]
6465
_import_structure["scheduling_ipndm"] = ["IPNDMScheduler"]
6566
_import_structure["scheduling_k_dpm_2_ancestral_discrete"] = ["KDPM2AncestralDiscreteScheduler"]
@@ -161,6 +162,7 @@
161162
from .scheduling_euler_discrete import EulerDiscreteScheduler
162163
from .scheduling_flow_match_euler_discrete import FlowMatchEulerDiscreteScheduler
163164
from .scheduling_flow_match_heun_discrete import FlowMatchHeunDiscreteScheduler
165+
from .scheduling_flow_match_lcm import FlowMatchLCMScheduler
164166
from .scheduling_heun_discrete import HeunDiscreteScheduler
165167
from .scheduling_ipndm import IPNDMScheduler
166168
from .scheduling_k_dpm_2_ancestral_discrete import KDPM2AncestralDiscreteScheduler

src/diffusers/utils/dummy_pt_objects.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,6 +1763,21 @@ def from_pretrained(cls, *args, **kwargs):
17631763
requires_backends(cls, ["torch"])
17641764

17651765

1766+
class FlowMatchLCMScheduler(metaclass=DummyObject):
1767+
_backends = ["torch"]
1768+
1769+
def __init__(self, *args, **kwargs):
1770+
requires_backends(self, ["torch"])
1771+
1772+
@classmethod
1773+
def from_config(cls, *args, **kwargs):
1774+
requires_backends(cls, ["torch"])
1775+
1776+
@classmethod
1777+
def from_pretrained(cls, *args, **kwargs):
1778+
requires_backends(cls, ["torch"])
1779+
1780+
17661781
class HeunDiscreteScheduler(metaclass=DummyObject):
17671782
_backends = ["torch"]
17681783

0 commit comments

Comments
 (0)