__init__.py 10.2 KB
Newer Older
1
# Copyright 2024 The HuggingFace Team. All rights reserved.
2
3
4
5
6
7
8
9
10
11
12
13
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
14

15
from typing import TYPE_CHECKING
16

17
from ..utils import (
18
    DIFFUSERS_SLOW_IMPORT,
19
    OptionalDependencyNotAvailable,
Dhruv Nair's avatar
Dhruv Nair committed
20
    _LazyModule,
21
    get_objects_from_module,
22
23
24
25
26
    is_flax_available,
    is_scipy_available,
    is_torch_available,
    is_torchsde_available,
)
27
28


Dhruv Nair's avatar
Dhruv Nair committed
29
_dummy_modules = {}
30
_import_structure = {}
Dhruv Nair's avatar
Dhruv Nair committed
31

32
33
34
35
try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
Dhruv Nair's avatar
Dhruv Nair committed
36
37
    from ..utils import dummy_pt_objects  # noqa F403

38
    _dummy_modules.update(get_objects_from_module(dummy_pt_objects))
Dhruv Nair's avatar
Dhruv Nair committed
39

40
else:
41
    _import_structure["deprecated"] = ["KarrasVeScheduler", "ScoreSdeVpScheduler"]
Will Berman's avatar
Will Berman committed
42
    _import_structure["scheduling_amused"] = ["AmusedScheduler"]
Will Berman's avatar
Will Berman committed
43
    _import_structure["scheduling_consistency_decoder"] = ["ConsistencyDecoderScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
44
45
46
47
48
49
    _import_structure["scheduling_consistency_models"] = ["CMStochasticIterativeScheduler"]
    _import_structure["scheduling_ddim"] = ["DDIMScheduler"]
    _import_structure["scheduling_ddim_inverse"] = ["DDIMInverseScheduler"]
    _import_structure["scheduling_ddim_parallel"] = ["DDIMParallelScheduler"]
    _import_structure["scheduling_ddpm"] = ["DDPMScheduler"]
    _import_structure["scheduling_ddpm_parallel"] = ["DDPMParallelScheduler"]
50
    _import_structure["scheduling_ddpm_wuerstchen"] = ["DDPMWuerstchenScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
51
52
53
54
    _import_structure["scheduling_deis_multistep"] = ["DEISMultistepScheduler"]
    _import_structure["scheduling_dpmsolver_multistep"] = ["DPMSolverMultistepScheduler"]
    _import_structure["scheduling_dpmsolver_multistep_inverse"] = ["DPMSolverMultistepInverseScheduler"]
    _import_structure["scheduling_dpmsolver_singlestep"] = ["DPMSolverSinglestepScheduler"]
55
    _import_structure["scheduling_edm_dpmsolver_multistep"] = ["EDMDPMSolverMultistepScheduler"]
Suraj Patil's avatar
Suraj Patil committed
56
    _import_structure["scheduling_edm_euler"] = ["EDMEulerScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
57
58
    _import_structure["scheduling_euler_ancestral_discrete"] = ["EulerAncestralDiscreteScheduler"]
    _import_structure["scheduling_euler_discrete"] = ["EulerDiscreteScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
59
    _import_structure["scheduling_flow_match_euler_discrete"] = ["FlowMatchEulerDiscreteScheduler"]
60
    _import_structure["scheduling_flow_match_heun_discrete"] = ["FlowMatchHeunDiscreteScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
61
62
63
64
    _import_structure["scheduling_heun_discrete"] = ["HeunDiscreteScheduler"]
    _import_structure["scheduling_ipndm"] = ["IPNDMScheduler"]
    _import_structure["scheduling_k_dpm_2_ancestral_discrete"] = ["KDPM2AncestralDiscreteScheduler"]
    _import_structure["scheduling_k_dpm_2_discrete"] = ["KDPM2DiscreteScheduler"]
65
    _import_structure["scheduling_lcm"] = ["LCMScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
66
67
    _import_structure["scheduling_pndm"] = ["PNDMScheduler"]
    _import_structure["scheduling_repaint"] = ["RePaintScheduler"]
Junsong Chen's avatar
Junsong Chen committed
68
    _import_structure["scheduling_sasolver"] = ["SASolverScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
69
    _import_structure["scheduling_sde_ve"] = ["ScoreSdeVeScheduler"]
Michael's avatar
Michael committed
70
    _import_structure["scheduling_tcd"] = ["TCDScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
71
72
    _import_structure["scheduling_unclip"] = ["UnCLIPScheduler"]
    _import_structure["scheduling_unipc_multistep"] = ["UniPCMultistepScheduler"]
73
    _import_structure["scheduling_utils"] = ["AysSchedules", "KarrasDiffusionSchedulers", "SchedulerMixin"]
Dhruv Nair's avatar
Dhruv Nair committed
74
    _import_structure["scheduling_vq_diffusion"] = ["VQDiffusionScheduler"]
75

76
77
78
79
try:
    if not is_flax_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
80
81
82
83
    from ..utils import dummy_flax_objects  # noqa F403

    _dummy_modules.update(get_objects_from_module(dummy_flax_objects))

84
else:
Dhruv Nair's avatar
Dhruv Nair committed
85
86
87
    _import_structure["scheduling_ddim_flax"] = ["FlaxDDIMScheduler"]
    _import_structure["scheduling_ddpm_flax"] = ["FlaxDDPMScheduler"]
    _import_structure["scheduling_dpmsolver_multistep_flax"] = ["FlaxDPMSolverMultistepScheduler"]
Pedro Cuenca's avatar
Pedro Cuenca committed
88
    _import_structure["scheduling_euler_discrete_flax"] = ["FlaxEulerDiscreteScheduler"]
Dhruv Nair's avatar
Dhruv Nair committed
89
90
91
92
93
94
95
96
97
98
    _import_structure["scheduling_karras_ve_flax"] = ["FlaxKarrasVeScheduler"]
    _import_structure["scheduling_lms_discrete_flax"] = ["FlaxLMSDiscreteScheduler"]
    _import_structure["scheduling_pndm_flax"] = ["FlaxPNDMScheduler"]
    _import_structure["scheduling_sde_ve_flax"] = ["FlaxScoreSdeVeScheduler"]
    _import_structure["scheduling_utils_flax"] = [
        "FlaxKarrasDiffusionSchedulers",
        "FlaxSchedulerMixin",
        "FlaxSchedulerOutput",
        "broadcast_to_shape_from_left",
    ]
99

100

101
102
103
104
try:
    if not (is_torch_available() and is_scipy_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
Dhruv Nair's avatar
Dhruv Nair committed
105
106
    from ..utils import dummy_torch_and_scipy_objects  # noqa F403

107
    _dummy_modules.update(get_objects_from_module(dummy_torch_and_scipy_objects))
Dhruv Nair's avatar
Dhruv Nair committed
108

109
else:
Dhruv Nair's avatar
Dhruv Nair committed
110
    _import_structure["scheduling_lms_discrete"] = ["LMSDiscreteScheduler"]
111
112
113
114
115

try:
    if not (is_torch_available() and is_torchsde_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
Dhruv Nair's avatar
Dhruv Nair committed
116
117
    from ..utils import dummy_torch_and_torchsde_objects  # noqa F403

118
    _dummy_modules.update(get_objects_from_module(dummy_torch_and_torchsde_objects))
Dhruv Nair's avatar
Dhruv Nair committed
119

120
else:
Dhruv Nair's avatar
Dhruv Nair committed
121
122
    _import_structure["scheduling_dpmsolver_sde"] = ["DPMSolverSDEScheduler"]

123
if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT:
124
125
126
127
128
129
130
131
132
133
134
135
136
137
    from ..utils import (
        OptionalDependencyNotAvailable,
        is_flax_available,
        is_scipy_available,
        is_torch_available,
        is_torchsde_available,
    )

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        from ..utils.dummy_pt_objects import *  # noqa F403
    else:
138
        from .deprecated import KarrasVeScheduler, ScoreSdeVpScheduler
Will Berman's avatar
Will Berman committed
139
        from .scheduling_amused import AmusedScheduler
Will Berman's avatar
Will Berman committed
140
        from .scheduling_consistency_decoder import ConsistencyDecoderScheduler
141
142
143
144
145
146
147
148
149
150
151
        from .scheduling_consistency_models import CMStochasticIterativeScheduler
        from .scheduling_ddim import DDIMScheduler
        from .scheduling_ddim_inverse import DDIMInverseScheduler
        from .scheduling_ddim_parallel import DDIMParallelScheduler
        from .scheduling_ddpm import DDPMScheduler
        from .scheduling_ddpm_parallel import DDPMParallelScheduler
        from .scheduling_ddpm_wuerstchen import DDPMWuerstchenScheduler
        from .scheduling_deis_multistep import DEISMultistepScheduler
        from .scheduling_dpmsolver_multistep import DPMSolverMultistepScheduler
        from .scheduling_dpmsolver_multistep_inverse import DPMSolverMultistepInverseScheduler
        from .scheduling_dpmsolver_singlestep import DPMSolverSinglestepScheduler
152
        from .scheduling_edm_dpmsolver_multistep import EDMDPMSolverMultistepScheduler
Suraj Patil's avatar
Suraj Patil committed
153
        from .scheduling_edm_euler import EDMEulerScheduler
154
155
        from .scheduling_euler_ancestral_discrete import EulerAncestralDiscreteScheduler
        from .scheduling_euler_discrete import EulerDiscreteScheduler
Dhruv Nair's avatar
Dhruv Nair committed
156
        from .scheduling_flow_match_euler_discrete import FlowMatchEulerDiscreteScheduler
157
        from .scheduling_flow_match_heun_discrete import FlowMatchHeunDiscreteScheduler
158
159
160
161
        from .scheduling_heun_discrete import HeunDiscreteScheduler
        from .scheduling_ipndm import IPNDMScheduler
        from .scheduling_k_dpm_2_ancestral_discrete import KDPM2AncestralDiscreteScheduler
        from .scheduling_k_dpm_2_discrete import KDPM2DiscreteScheduler
162
        from .scheduling_lcm import LCMScheduler
163
164
        from .scheduling_pndm import PNDMScheduler
        from .scheduling_repaint import RePaintScheduler
Junsong Chen's avatar
Junsong Chen committed
165
        from .scheduling_sasolver import SASolverScheduler
166
        from .scheduling_sde_ve import ScoreSdeVeScheduler
Michael's avatar
Michael committed
167
        from .scheduling_tcd import TCDScheduler
168
169
        from .scheduling_unclip import UnCLIPScheduler
        from .scheduling_unipc_multistep import UniPCMultistepScheduler
170
        from .scheduling_utils import AysSchedules, KarrasDiffusionSchedulers, SchedulerMixin
171
172
173
174
175
176
177
178
179
180
181
        from .scheduling_vq_diffusion import VQDiffusionScheduler

    try:
        if not is_flax_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        from ..utils.dummy_flax_objects import *  # noqa F403
    else:
        from .scheduling_ddim_flax import FlaxDDIMScheduler
        from .scheduling_ddpm_flax import FlaxDDPMScheduler
        from .scheduling_dpmsolver_multistep_flax import FlaxDPMSolverMultistepScheduler
182
        from .scheduling_euler_discrete_flax import FlaxEulerDiscreteScheduler
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
        from .scheduling_karras_ve_flax import FlaxKarrasVeScheduler
        from .scheduling_lms_discrete_flax import FlaxLMSDiscreteScheduler
        from .scheduling_pndm_flax import FlaxPNDMScheduler
        from .scheduling_sde_ve_flax import FlaxScoreSdeVeScheduler
        from .scheduling_utils_flax import (
            FlaxKarrasDiffusionSchedulers,
            FlaxSchedulerMixin,
            FlaxSchedulerOutput,
            broadcast_to_shape_from_left,
        )

    try:
        if not (is_torch_available() and is_scipy_available()):
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        from ..utils.dummy_torch_and_scipy_objects import *  # noqa F403
    else:
        from .scheduling_lms_discrete import LMSDiscreteScheduler

    try:
        if not (is_torch_available() and is_torchsde_available()):
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        from ..utils.dummy_torch_and_torchsde_objects import *  # noqa F403
    else:
        from .scheduling_dpmsolver_sde import DPMSolverSDEScheduler
Dhruv Nair's avatar
Dhruv Nair committed
209

210
211
else:
    import sys
Dhruv Nair's avatar
Dhruv Nair committed
212

213
214
215
    sys.modules[__name__] = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)
    for name, value in _dummy_modules.items():
        setattr(sys.modules[__name__], name, value)