Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
renzhc
diffusers_dcu
Commits
80be0744
Commit
80be0744
authored
Oct 12, 2022
by
anton-l
Browse files
Merge remote-tracking branch 'origin/main'
parents
679c77f8
db47b1e4
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
385 additions
and
4 deletions
+385
-4
MANIFEST.in
MANIFEST.in
+1
-0
README.md
README.md
+1
-1
src/diffusers/pipeline_utils.py
src/diffusers/pipeline_utils.py
+13
-1
src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py
...nes/stable_diffusion/pipeline_stable_diffusion_img2img.py
+18
-2
src/diffusers/utils/dummy_flax_and_transformers_objects.py
src/diffusers/utils/dummy_flax_and_transformers_objects.py
+8
-0
src/diffusers/utils/dummy_flax_objects.py
src/diffusers/utils/dummy_flax_objects.py
+88
-0
src/diffusers/utils/dummy_pt_objects.py
src/diffusers/utils/dummy_pt_objects.py
+152
-0
src/diffusers/utils/dummy_torch_and_scipy_objects.py
src/diffusers/utils/dummy_torch_and_scipy_objects.py
+8
-0
src/diffusers/utils/dummy_torch_and_transformers_and_onnx_objects.py
...rs/utils/dummy_torch_and_transformers_and_onnx_objects.py
+8
-0
src/diffusers/utils/dummy_torch_and_transformers_objects.py
src/diffusers/utils/dummy_torch_and_transformers_objects.py
+32
-0
tests/test_pipelines.py
tests/test_pipelines.py
+48
-0
utils/check_dummies.py
utils/check_dummies.py
+8
-0
No files found.
MANIFEST.in
View file @
80be0744
include LICENSE
include src/diffusers/utils/model_card_template.md
include src/diffusers/utils/model_card_template.md
README.md
View file @
80be0744
<p
align=
"center"
>
<p
align=
"center"
>
<br>
<br>
<img
src=
"docs/source/imgs/diffusers_library.jpg"
width=
"400"
/>
<img
src=
"
https://github.com/huggingface/diffusers/raw/main/
docs/source/imgs/diffusers_library.jpg"
width=
"400"
/>
<br>
<br>
<p>
<p>
<p
align=
"center"
>
<p
align=
"center"
>
...
...
src/diffusers/pipeline_utils.py
View file @
80be0744
...
@@ -50,6 +50,7 @@ if is_transformers_available():
...
@@ -50,6 +50,7 @@ if is_transformers_available():
INDEX_FILE
=
"diffusion_pytorch_model.bin"
INDEX_FILE
=
"diffusion_pytorch_model.bin"
CUSTOM_PIPELINE_FILE_NAME
=
"pipeline.py"
CUSTOM_PIPELINE_FILE_NAME
=
"pipeline.py"
DUMMY_MODULES_FOLDER
=
"diffusers.utils"
logger
=
logging
.
get_logger
(
__name__
)
logger
=
logging
.
get_logger
(
__name__
)
...
@@ -473,9 +474,20 @@ class DiffusionPipeline(ConfigMixin):
...
@@ -473,9 +474,20 @@ class DiffusionPipeline(ConfigMixin):
if
issubclass
(
class_obj
,
class_candidate
):
if
issubclass
(
class_obj
,
class_candidate
):
load_method_name
=
importable_classes
[
class_name
][
1
]
load_method_name
=
importable_classes
[
class_name
][
1
]
load_method
=
getattr
(
class_obj
,
load_method_name
)
if
load_method_name
is
None
:
none_module
=
class_obj
.
__module__
if
none_module
.
startswith
(
DUMMY_MODULES_FOLDER
)
and
"dummy"
in
none_module
:
# call class_obj for nice error message of missing requirements
class_obj
()
raise
ValueError
(
f
"The component
{
class_obj
}
of
{
pipeline_class
}
cannot be loaded as it does not seem to have"
f
" any of the loading methods defined in
{
ALL_IMPORTABLE_CLASSES
}
."
)
load_method
=
getattr
(
class_obj
,
load_method_name
)
loading_kwargs
=
{}
loading_kwargs
=
{}
if
issubclass
(
class_obj
,
torch
.
nn
.
Module
):
if
issubclass
(
class_obj
,
torch
.
nn
.
Module
):
loading_kwargs
[
"torch_dtype"
]
=
torch_dtype
loading_kwargs
[
"torch_dtype"
]
=
torch_dtype
if
issubclass
(
class_obj
,
diffusers
.
OnnxRuntimeModel
):
if
issubclass
(
class_obj
,
diffusers
.
OnnxRuntimeModel
):
...
...
src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py
View file @
80be0744
...
@@ -195,6 +195,7 @@ class StableDiffusionImg2ImgPipeline(DiffusionPipeline):
...
@@ -195,6 +195,7 @@ class StableDiffusionImg2ImgPipeline(DiffusionPipeline):
"""
"""
if
isinstance
(
prompt
,
str
):
if
isinstance
(
prompt
,
str
):
batch_size
=
1
batch_size
=
1
prompt
=
[
prompt
]
elif
isinstance
(
prompt
,
list
):
elif
isinstance
(
prompt
,
list
):
batch_size
=
len
(
prompt
)
batch_size
=
len
(
prompt
)
else
:
else
:
...
@@ -284,8 +285,23 @@ class StableDiffusionImg2ImgPipeline(DiffusionPipeline):
...
@@ -284,8 +285,23 @@ class StableDiffusionImg2ImgPipeline(DiffusionPipeline):
init_latents
=
init_latent_dist
.
sample
(
generator
=
generator
)
init_latents
=
init_latent_dist
.
sample
(
generator
=
generator
)
init_latents
=
0.18215
*
init_latents
init_latents
=
0.18215
*
init_latents
# expand init_latents for batch_size
if
len
(
prompt
)
>
init_latents
.
shape
[
0
]
and
len
(
prompt
)
%
init_latents
.
shape
[
0
]
==
0
:
init_latents
=
torch
.
cat
([
init_latents
]
*
batch_size
*
num_images_per_prompt
,
dim
=
0
)
# expand init_latents for batch_size
deprecation_message
=
(
f
"You have passed
{
len
(
prompt
)
}
text prompts (`prompt`), but only
{
init_latents
.
shape
[
0
]
}
initial"
" images (`init_image`). Initial images are now duplicating to match the number of text prompts. Note"
" that this behavior is deprecated and will be removed in a version 1.0.0. Please make sure to update"
" your script to pass as many init images as text prompts to suppress this warning."
)
deprecate
(
"len(prompt) != len(init_image)"
,
"1.0.0"
,
deprecation_message
,
standard_warn
=
False
)
additional_image_per_prompt
=
len
(
prompt
)
//
init_latents
.
shape
[
0
]
init_latents
=
torch
.
cat
([
init_latents
]
*
additional_image_per_prompt
*
num_images_per_prompt
,
dim
=
0
)
elif
len
(
prompt
)
>
init_latents
.
shape
[
0
]
and
len
(
prompt
)
%
init_latents
.
shape
[
0
]
!=
0
:
raise
ValueError
(
f
"Cannot duplicate `init_image` of batch size
{
init_latents
.
shape
[
0
]
}
to
{
len
(
prompt
)
}
text prompts."
)
else
:
init_latents
=
torch
.
cat
([
init_latents
]
*
num_images_per_prompt
,
dim
=
0
)
# get the original timestep using init_timestep
# get the original timestep using init_timestep
offset
=
self
.
scheduler
.
config
.
get
(
"steps_offset"
,
0
)
offset
=
self
.
scheduler
.
config
.
get
(
"steps_offset"
,
0
)
...
...
src/diffusers/utils/dummy_flax_and_transformers_objects.py
View file @
80be0744
...
@@ -9,3 +9,11 @@ class FlaxStableDiffusionPipeline(metaclass=DummyObject):
...
@@ -9,3 +9,11 @@ class FlaxStableDiffusionPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
,
"transformers"
])
requires_backends
(
self
,
[
"flax"
,
"transformers"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
,
"transformers"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
,
"transformers"
])
src/diffusers/utils/dummy_flax_objects.py
View file @
80be0744
...
@@ -10,6 +10,14 @@ class FlaxModelMixin(metaclass=DummyObject):
...
@@ -10,6 +10,14 @@ class FlaxModelMixin(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxUNet2DConditionModel
(
metaclass
=
DummyObject
):
class
FlaxUNet2DConditionModel
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -17,6 +25,14 @@ class FlaxUNet2DConditionModel(metaclass=DummyObject):
...
@@ -17,6 +25,14 @@ class FlaxUNet2DConditionModel(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxAutoencoderKL
(
metaclass
=
DummyObject
):
class
FlaxAutoencoderKL
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -24,6 +40,14 @@ class FlaxAutoencoderKL(metaclass=DummyObject):
...
@@ -24,6 +40,14 @@ class FlaxAutoencoderKL(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxDiffusionPipeline
(
metaclass
=
DummyObject
):
class
FlaxDiffusionPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -31,6 +55,14 @@ class FlaxDiffusionPipeline(metaclass=DummyObject):
...
@@ -31,6 +55,14 @@ class FlaxDiffusionPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxDDIMScheduler
(
metaclass
=
DummyObject
):
class
FlaxDDIMScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -38,6 +70,14 @@ class FlaxDDIMScheduler(metaclass=DummyObject):
...
@@ -38,6 +70,14 @@ class FlaxDDIMScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxDDPMScheduler
(
metaclass
=
DummyObject
):
class
FlaxDDPMScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -45,6 +85,14 @@ class FlaxDDPMScheduler(metaclass=DummyObject):
...
@@ -45,6 +85,14 @@ class FlaxDDPMScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxKarrasVeScheduler
(
metaclass
=
DummyObject
):
class
FlaxKarrasVeScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -52,6 +100,14 @@ class FlaxKarrasVeScheduler(metaclass=DummyObject):
...
@@ -52,6 +100,14 @@ class FlaxKarrasVeScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxLMSDiscreteScheduler
(
metaclass
=
DummyObject
):
class
FlaxLMSDiscreteScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -59,6 +115,14 @@ class FlaxLMSDiscreteScheduler(metaclass=DummyObject):
...
@@ -59,6 +115,14 @@ class FlaxLMSDiscreteScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxPNDMScheduler
(
metaclass
=
DummyObject
):
class
FlaxPNDMScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -66,6 +130,14 @@ class FlaxPNDMScheduler(metaclass=DummyObject):
...
@@ -66,6 +130,14 @@ class FlaxPNDMScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxSchedulerMixin
(
metaclass
=
DummyObject
):
class
FlaxSchedulerMixin
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
...
@@ -73,9 +145,25 @@ class FlaxSchedulerMixin(metaclass=DummyObject):
...
@@ -73,9 +145,25 @@ class FlaxSchedulerMixin(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
class
FlaxScoreSdeVeScheduler
(
metaclass
=
DummyObject
):
class
FlaxScoreSdeVeScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"flax"
]
_backends
=
[
"flax"
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"flax"
])
requires_backends
(
self
,
[
"flax"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"flax"
])
src/diffusers/utils/dummy_pt_objects.py
View file @
80be0744
...
@@ -10,6 +10,14 @@ class ModelMixin(metaclass=DummyObject):
...
@@ -10,6 +10,14 @@ class ModelMixin(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
AutoencoderKL
(
metaclass
=
DummyObject
):
class
AutoencoderKL
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -17,6 +25,14 @@ class AutoencoderKL(metaclass=DummyObject):
...
@@ -17,6 +25,14 @@ class AutoencoderKL(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
UNet2DConditionModel
(
metaclass
=
DummyObject
):
class
UNet2DConditionModel
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -24,6 +40,14 @@ class UNet2DConditionModel(metaclass=DummyObject):
...
@@ -24,6 +40,14 @@ class UNet2DConditionModel(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
UNet2DModel
(
metaclass
=
DummyObject
):
class
UNet2DModel
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -31,6 +55,14 @@ class UNet2DModel(metaclass=DummyObject):
...
@@ -31,6 +55,14 @@ class UNet2DModel(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
VQModel
(
metaclass
=
DummyObject
):
class
VQModel
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -38,6 +70,14 @@ class VQModel(metaclass=DummyObject):
...
@@ -38,6 +70,14 @@ class VQModel(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
def
get_constant_schedule
(
*
args
,
**
kwargs
):
def
get_constant_schedule
(
*
args
,
**
kwargs
):
requires_backends
(
get_constant_schedule
,
[
"torch"
])
requires_backends
(
get_constant_schedule
,
[
"torch"
])
...
@@ -73,6 +113,14 @@ class DiffusionPipeline(metaclass=DummyObject):
...
@@ -73,6 +113,14 @@ class DiffusionPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
DDIMPipeline
(
metaclass
=
DummyObject
):
class
DDIMPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -80,6 +128,14 @@ class DDIMPipeline(metaclass=DummyObject):
...
@@ -80,6 +128,14 @@ class DDIMPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
DDPMPipeline
(
metaclass
=
DummyObject
):
class
DDPMPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -87,6 +143,14 @@ class DDPMPipeline(metaclass=DummyObject):
...
@@ -87,6 +143,14 @@ class DDPMPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
KarrasVePipeline
(
metaclass
=
DummyObject
):
class
KarrasVePipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -94,6 +158,14 @@ class KarrasVePipeline(metaclass=DummyObject):
...
@@ -94,6 +158,14 @@ class KarrasVePipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
LDMPipeline
(
metaclass
=
DummyObject
):
class
LDMPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -101,6 +173,14 @@ class LDMPipeline(metaclass=DummyObject):
...
@@ -101,6 +173,14 @@ class LDMPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
PNDMPipeline
(
metaclass
=
DummyObject
):
class
PNDMPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -108,6 +188,14 @@ class PNDMPipeline(metaclass=DummyObject):
...
@@ -108,6 +188,14 @@ class PNDMPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
ScoreSdeVePipeline
(
metaclass
=
DummyObject
):
class
ScoreSdeVePipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -115,6 +203,14 @@ class ScoreSdeVePipeline(metaclass=DummyObject):
...
@@ -115,6 +203,14 @@ class ScoreSdeVePipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
DDIMScheduler
(
metaclass
=
DummyObject
):
class
DDIMScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -122,6 +218,14 @@ class DDIMScheduler(metaclass=DummyObject):
...
@@ -122,6 +218,14 @@ class DDIMScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
DDPMScheduler
(
metaclass
=
DummyObject
):
class
DDPMScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -129,6 +233,14 @@ class DDPMScheduler(metaclass=DummyObject):
...
@@ -129,6 +233,14 @@ class DDPMScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
KarrasVeScheduler
(
metaclass
=
DummyObject
):
class
KarrasVeScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -136,6 +248,14 @@ class KarrasVeScheduler(metaclass=DummyObject):
...
@@ -136,6 +248,14 @@ class KarrasVeScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
PNDMScheduler
(
metaclass
=
DummyObject
):
class
PNDMScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -143,6 +263,14 @@ class PNDMScheduler(metaclass=DummyObject):
...
@@ -143,6 +263,14 @@ class PNDMScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
SchedulerMixin
(
metaclass
=
DummyObject
):
class
SchedulerMixin
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -150,6 +278,14 @@ class SchedulerMixin(metaclass=DummyObject):
...
@@ -150,6 +278,14 @@ class SchedulerMixin(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
ScoreSdeVeScheduler
(
metaclass
=
DummyObject
):
class
ScoreSdeVeScheduler
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
...
@@ -157,9 +293,25 @@ class ScoreSdeVeScheduler(metaclass=DummyObject):
...
@@ -157,9 +293,25 @@ class ScoreSdeVeScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
class
EMAModel
(
metaclass
=
DummyObject
):
class
EMAModel
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
]
_backends
=
[
"torch"
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
])
requires_backends
(
self
,
[
"torch"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
])
src/diffusers/utils/dummy_torch_and_scipy_objects.py
View file @
80be0744
...
@@ -9,3 +9,11 @@ class LMSDiscreteScheduler(metaclass=DummyObject):
...
@@ -9,3 +9,11 @@ class LMSDiscreteScheduler(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
,
"scipy"
])
requires_backends
(
self
,
[
"torch"
,
"scipy"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"scipy"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"scipy"
])
src/diffusers/utils/dummy_torch_and_transformers_and_onnx_objects.py
View file @
80be0744
...
@@ -9,3 +9,11 @@ class StableDiffusionOnnxPipeline(metaclass=DummyObject):
...
@@ -9,3 +9,11 @@ class StableDiffusionOnnxPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
,
"transformers"
,
"onnx"
])
requires_backends
(
self
,
[
"torch"
,
"transformers"
,
"onnx"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
,
"onnx"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
,
"onnx"
])
src/diffusers/utils/dummy_torch_and_transformers_objects.py
View file @
80be0744
...
@@ -10,6 +10,14 @@ class LDMTextToImagePipeline(metaclass=DummyObject):
...
@@ -10,6 +10,14 @@ class LDMTextToImagePipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
class
StableDiffusionImg2ImgPipeline
(
metaclass
=
DummyObject
):
class
StableDiffusionImg2ImgPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
,
"transformers"
]
_backends
=
[
"torch"
,
"transformers"
]
...
@@ -17,6 +25,14 @@ class StableDiffusionImg2ImgPipeline(metaclass=DummyObject):
...
@@ -17,6 +25,14 @@ class StableDiffusionImg2ImgPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
class
StableDiffusionInpaintPipeline
(
metaclass
=
DummyObject
):
class
StableDiffusionInpaintPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
,
"transformers"
]
_backends
=
[
"torch"
,
"transformers"
]
...
@@ -24,9 +40,25 @@ class StableDiffusionInpaintPipeline(metaclass=DummyObject):
...
@@ -24,9 +40,25 @@ class StableDiffusionInpaintPipeline(metaclass=DummyObject):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
class
StableDiffusionPipeline
(
metaclass
=
DummyObject
):
class
StableDiffusionPipeline
(
metaclass
=
DummyObject
):
_backends
=
[
"torch"
,
"transformers"
]
_backends
=
[
"torch"
,
"transformers"
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
requires_backends
(
self
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_config
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
@
classmethod
def
from_pretrained
(
cls
,
*
args
,
**
kwargs
):
requires_backends
(
cls
,
[
"torch"
,
"transformers"
])
tests/test_pipelines.py
View file @
80be0744
...
@@ -492,6 +492,12 @@ class PipelineFastTests(unittest.TestCase):
...
@@ -492,6 +492,12 @@ class PipelineFastTests(unittest.TestCase):
assert
np
.
abs
(
image_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
assert
np
.
abs
(
image_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
assert
np
.
abs
(
image_from_tuple_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
assert
np
.
abs
(
image_from_tuple_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
def
test_from_pretrained_error_message_uninstalled_packages
(
self
):
# TODO(Patrick, Pedro) - need better test here for the future
pipe
=
StableDiffusionPipeline
.
from_pretrained
(
"hf-internal-testing/tiny-stable-diffusion-lms-pipe"
)
assert
isinstance
(
pipe
,
StableDiffusionPipeline
)
assert
isinstance
(
pipe
.
scheduler
,
LMSDiscreteScheduler
)
def
test_stable_diffusion_k_lms
(
self
):
def
test_stable_diffusion_k_lms
(
self
):
device
=
"cpu"
# ensure determinism for the device-dependent torch.Generator
device
=
"cpu"
# ensure determinism for the device-dependent torch.Generator
unet
=
self
.
dummy_cond_unet
unet
=
self
.
dummy_cond_unet
...
@@ -698,6 +704,48 @@ class PipelineFastTests(unittest.TestCase):
...
@@ -698,6 +704,48 @@ class PipelineFastTests(unittest.TestCase):
assert
np
.
abs
(
image_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
assert
np
.
abs
(
image_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
assert
np
.
abs
(
image_from_tuple_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
assert
np
.
abs
(
image_from_tuple_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
def
test_stable_diffusion_img2img_multiple_init_images
(
self
):
device
=
"cpu"
# ensure determinism for the device-dependent torch.Generator
unet
=
self
.
dummy_cond_unet
scheduler
=
PNDMScheduler
(
skip_prk_steps
=
True
)
vae
=
self
.
dummy_vae
bert
=
self
.
dummy_text_encoder
tokenizer
=
CLIPTokenizer
.
from_pretrained
(
"hf-internal-testing/tiny-random-clip"
)
init_image
=
self
.
dummy_image
.
to
(
device
).
repeat
(
2
,
1
,
1
,
1
)
# make sure here that pndm scheduler skips prk
sd_pipe
=
StableDiffusionImg2ImgPipeline
(
unet
=
unet
,
scheduler
=
scheduler
,
vae
=
vae
,
text_encoder
=
bert
,
tokenizer
=
tokenizer
,
safety_checker
=
self
.
dummy_safety_checker
,
feature_extractor
=
self
.
dummy_extractor
,
)
sd_pipe
=
sd_pipe
.
to
(
device
)
sd_pipe
.
set_progress_bar_config
(
disable
=
None
)
prompt
=
2
*
[
"A painting of a squirrel eating a burger"
]
generator
=
torch
.
Generator
(
device
=
device
).
manual_seed
(
0
)
output
=
sd_pipe
(
prompt
,
generator
=
generator
,
guidance_scale
=
6.0
,
num_inference_steps
=
2
,
output_type
=
"np"
,
init_image
=
init_image
,
)
image
=
output
.
images
image_slice
=
image
[
-
1
,
-
3
:,
-
3
:,
-
1
]
assert
image
.
shape
==
(
2
,
32
,
32
,
3
)
expected_slice
=
np
.
array
([
0.5144
,
0.4447
,
0.4735
,
0.6676
,
0.5526
,
0.5454
,
0.645
,
0.5149
,
0.4689
])
assert
np
.
abs
(
image_slice
.
flatten
()
-
expected_slice
).
max
()
<
1e-2
def
test_stable_diffusion_img2img_k_lms
(
self
):
def
test_stable_diffusion_img2img_k_lms
(
self
):
device
=
"cpu"
# ensure determinism for the device-dependent torch.Generator
device
=
"cpu"
# ensure determinism for the device-dependent torch.Generator
unet
=
self
.
dummy_cond_unet
unet
=
self
.
dummy_cond_unet
...
...
utils/check_dummies.py
View file @
80be0744
...
@@ -38,6 +38,14 @@ class {0}(metaclass=DummyObject):
...
@@ -38,6 +38,14 @@ class {0}(metaclass=DummyObject):
def __init__(self, *args, **kwargs):
def __init__(self, *args, **kwargs):
requires_backends(self, {1})
requires_backends(self, {1})
@classmethod
def from_config(cls, *args, **kwargs):
requires_backends(cls, {1})
@classmethod
def from_pretrained(cls, *args, **kwargs):
requires_backends(cls, {1})
"""
"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment