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
0368483b
Unverified
Commit
0368483b
authored
Jul 01, 2024
by
Dhruv Nair
Committed by
GitHub
Jul 01, 2024
Browse files
Remove legacy single file model loading mixins (#8754)
update
parent
ddb9d854
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2 additions
and
284 deletions
+2
-284
docs/source/en/api/models/autoencoderkl.md
docs/source/en/api/models/autoencoderkl.md
+1
-1
docs/source/en/api/models/controlnet.md
docs/source/en/api/models/controlnet.md
+1
-1
src/diffusers/loaders/autoencoder.py
src/diffusers/loaders/autoencoder.py
+0
-146
src/diffusers/loaders/controlnet.py
src/diffusers/loaders/controlnet.py
+0
-136
No files found.
docs/source/en/api/models/autoencoderkl.md
View file @
0368483b
...
...
@@ -21,7 +21,7 @@ The abstract from the paper is:
## Loading from the original format
By default the [
`AutoencoderKL`
] should be loaded with [
`~ModelMixin.from_pretrained`
], but it can also be loaded
from the original format using [
`FromOriginal
VAE
Mixin.from_single_file`
] as follows:
from the original format using [
`FromOriginal
Model
Mixin.from_single_file`
] as follows:
```
py
from
diffusers
import
AutoencoderKL
...
...
docs/source/en/api/models/controlnet.md
View file @
0368483b
...
...
@@ -21,7 +21,7 @@ The abstract from the paper is:
## Loading from the original format
By default the [
`ControlNetModel`
] should be loaded with [
`~ModelMixin.from_pretrained`
], but it can also be loaded
from the original format using [
`FromOriginal
Controlnet
Mixin.from_single_file`
] as follows:
from the original format using [
`FromOriginal
Model
Mixin.from_single_file`
] as follows:
```
py
from
diffusers
import
StableDiffusionControlNetPipeline
,
ControlNetModel
...
...
src/diffusers/loaders/autoencoder.py
deleted
100644 → 0
View file @
ddb9d854
# Copyright 2024 The HuggingFace Team. All rights reserved.
#
# 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.
from
huggingface_hub.utils
import
validate_hf_hub_args
from
.single_file_utils
import
(
create_diffusers_vae_model_from_ldm
,
fetch_ldm_config_and_checkpoint
,
)
class
FromOriginalVAEMixin
:
"""
Load pretrained AutoencoderKL weights saved in the `.ckpt` or `.safetensors` format into a [`AutoencoderKL`].
"""
@
classmethod
@
validate_hf_hub_args
def
from_single_file
(
cls
,
pretrained_model_link_or_path
,
**
kwargs
):
r
"""
Instantiate a [`AutoencoderKL`] from pretrained ControlNet weights saved in the original `.ckpt` or
`.safetensors` format. The pipeline is set in evaluation mode (`model.eval()`) by default.
Parameters:
pretrained_model_link_or_path (`str` or `os.PathLike`, *optional*):
Can be either:
- A link to the `.ckpt` file (for example
`"https://huggingface.co/<repo_id>/blob/main/<path_to_file>.ckpt"`) on the Hub.
- A path to a *file* containing all pipeline weights.
config_file (`str`, *optional*):
Filepath to the configuration YAML file associated with the model. If not provided it will default to:
https://raw.githubusercontent.com/CompVis/stable-diffusion/main/configs/stable-diffusion/v1-inference.yaml
torch_dtype (`str` or `torch.dtype`, *optional*):
Override the default `torch.dtype` and load the model with another dtype. If `"auto"` is passed, the
dtype is automatically derived from the model's weights.
force_download (`bool`, *optional*, defaults to `False`):
Whether or not to force the (re-)download of the model weights and configuration files, overriding the
cached versions if they exist.
cache_dir (`Union[str, os.PathLike]`, *optional*):
Path to a directory where a downloaded pretrained model configuration is cached if the standard cache
is not used.
resume_download:
Deprecated and ignored. All downloads are now resumed by default when possible. Will be removed in v1
of Diffusers.
proxies (`Dict[str, str]`, *optional*):
A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128',
'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
local_files_only (`bool`, *optional*, defaults to `False`):
Whether to only load local model weights and configuration files or not. If set to True, the model
won't be downloaded from the Hub.
token (`str` or *bool*, *optional*):
The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from
`diffusers-cli login` (stored in `~/.huggingface`) is used.
revision (`str`, *optional*, defaults to `"main"`):
The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier
allowed by Git.
image_size (`int`, *optional*, defaults to 512):
The image size the model was trained on. Use 512 for all Stable Diffusion v1 models and the Stable
Diffusion v2 base model. Use 768 for Stable Diffusion v2.
scaling_factor (`float`, *optional*, defaults to 0.18215):
The component-wise standard deviation of the trained latent space computed using the first batch of the
training set. This is used to scale the latent space to have unit variance when training the diffusion
model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the
diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z
= 1 / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution
Image Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper.
kwargs (remaining dictionary of keyword arguments, *optional*):
Can be used to overwrite load and saveable variables (for example the pipeline components of the
specific pipeline class). The overwritten components are directly passed to the pipelines `__init__`
method. See example below for more information.
<Tip warning={true}>
Make sure to pass both `image_size` and `scaling_factor` to `from_single_file()` if you're loading
a VAE from SDXL or a Stable Diffusion v2 model or higher.
</Tip>
Examples:
```py
from diffusers import AutoencoderKL
url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors" # can also be local file
model = AutoencoderKL.from_single_file(url)
```
"""
original_config_file
=
kwargs
.
pop
(
"original_config_file"
,
None
)
config_file
=
kwargs
.
pop
(
"config_file"
,
None
)
resume_download
=
kwargs
.
pop
(
"resume_download"
,
None
)
force_download
=
kwargs
.
pop
(
"force_download"
,
False
)
proxies
=
kwargs
.
pop
(
"proxies"
,
None
)
token
=
kwargs
.
pop
(
"token"
,
None
)
cache_dir
=
kwargs
.
pop
(
"cache_dir"
,
None
)
local_files_only
=
kwargs
.
pop
(
"local_files_only"
,
None
)
revision
=
kwargs
.
pop
(
"revision"
,
None
)
torch_dtype
=
kwargs
.
pop
(
"torch_dtype"
,
None
)
class_name
=
cls
.
__name__
if
(
config_file
is
not
None
)
and
(
original_config_file
is
not
None
):
raise
ValueError
(
"You cannot pass both `config_file` and `original_config_file` to `from_single_file`. Please use only one of these arguments."
)
original_config_file
=
original_config_file
or
config_file
original_config
,
checkpoint
=
fetch_ldm_config_and_checkpoint
(
pretrained_model_link_or_path
=
pretrained_model_link_or_path
,
class_name
=
class_name
,
original_config_file
=
original_config_file
,
resume_download
=
resume_download
,
force_download
=
force_download
,
proxies
=
proxies
,
token
=
token
,
revision
=
revision
,
local_files_only
=
local_files_only
,
cache_dir
=
cache_dir
,
)
image_size
=
kwargs
.
pop
(
"image_size"
,
None
)
scaling_factor
=
kwargs
.
pop
(
"scaling_factor"
,
None
)
component
=
create_diffusers_vae_model_from_ldm
(
class_name
,
original_config
,
checkpoint
,
image_size
=
image_size
,
scaling_factor
=
scaling_factor
,
torch_dtype
=
torch_dtype
,
)
vae
=
component
[
"vae"
]
if
torch_dtype
is
not
None
:
vae
=
vae
.
to
(
torch_dtype
)
return
vae
src/diffusers/loaders/controlnet.py
deleted
100644 → 0
View file @
ddb9d854
# Copyright 2024 The HuggingFace Team. All rights reserved.
#
# 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.
from
huggingface_hub.utils
import
validate_hf_hub_args
from
.single_file_utils
import
(
create_diffusers_controlnet_model_from_ldm
,
fetch_ldm_config_and_checkpoint
,
)
class
FromOriginalControlNetMixin
:
"""
Load pretrained ControlNet weights saved in the `.ckpt` or `.safetensors` format into a [`ControlNetModel`].
"""
@
classmethod
@
validate_hf_hub_args
def
from_single_file
(
cls
,
pretrained_model_link_or_path
,
**
kwargs
):
r
"""
Instantiate a [`ControlNetModel`] from pretrained ControlNet weights saved in the original `.ckpt` or
`.safetensors` format. The pipeline is set in evaluation mode (`model.eval()`) by default.
Parameters:
pretrained_model_link_or_path (`str` or `os.PathLike`, *optional*):
Can be either:
- A link to the `.ckpt` file (for example
`"https://huggingface.co/<repo_id>/blob/main/<path_to_file>.ckpt"`) on the Hub.
- A path to a *file* containing all pipeline weights.
config_file (`str`, *optional*):
Filepath to the configuration YAML file associated with the model. If not provided it will default to:
https://raw.githubusercontent.com/lllyasviel/ControlNet/main/models/cldm_v15.yaml
torch_dtype (`str` or `torch.dtype`, *optional*):
Override the default `torch.dtype` and load the model with another dtype. If `"auto"` is passed, the
dtype is automatically derived from the model's weights.
force_download (`bool`, *optional*, defaults to `False`):
Whether or not to force the (re-)download of the model weights and configuration files, overriding the
cached versions if they exist.
cache_dir (`Union[str, os.PathLike]`, *optional*):
Path to a directory where a downloaded pretrained model configuration is cached if the standard cache
is not used.
resume_download:
Deprecated and ignored. All downloads are now resumed by default when possible. Will be removed in v1
of Diffusers.
proxies (`Dict[str, str]`, *optional*):
A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128',
'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
local_files_only (`bool`, *optional*, defaults to `False`):
Whether to only load local model weights and configuration files or not. If set to True, the model
won't be downloaded from the Hub.
token (`str` or *bool*, *optional*):
The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from
`diffusers-cli login` (stored in `~/.huggingface`) is used.
revision (`str`, *optional*, defaults to `"main"`):
The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier
allowed by Git.
image_size (`int`, *optional*, defaults to 512):
The image size the model was trained on. Use 512 for all Stable Diffusion v1 models and the Stable
Diffusion v2 base model. Use 768 for Stable Diffusion v2.
upcast_attention (`bool`, *optional*, defaults to `None`):
Whether the attention computation should always be upcasted.
kwargs (remaining dictionary of keyword arguments, *optional*):
Can be used to overwrite load and saveable variables (for example the pipeline components of the
specific pipeline class). The overwritten components are directly passed to the pipelines `__init__`
method. See example below for more information.
Examples:
```py
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
url = "https://huggingface.co/lllyasviel/ControlNet-v1-1/blob/main/control_v11p_sd15_canny.pth" # can also be a local path
model = ControlNetModel.from_single_file(url)
url = "https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned.safetensors" # can also be a local path
pipe = StableDiffusionControlNetPipeline.from_single_file(url, controlnet=controlnet)
```
"""
original_config_file
=
kwargs
.
pop
(
"original_config_file"
,
None
)
config_file
=
kwargs
.
pop
(
"config_file"
,
None
)
resume_download
=
kwargs
.
pop
(
"resume_download"
,
None
)
force_download
=
kwargs
.
pop
(
"force_download"
,
False
)
proxies
=
kwargs
.
pop
(
"proxies"
,
None
)
token
=
kwargs
.
pop
(
"token"
,
None
)
cache_dir
=
kwargs
.
pop
(
"cache_dir"
,
None
)
local_files_only
=
kwargs
.
pop
(
"local_files_only"
,
None
)
revision
=
kwargs
.
pop
(
"revision"
,
None
)
torch_dtype
=
kwargs
.
pop
(
"torch_dtype"
,
None
)
class_name
=
cls
.
__name__
if
(
config_file
is
not
None
)
and
(
original_config_file
is
not
None
):
raise
ValueError
(
"You cannot pass both `config_file` and `original_config_file` to `from_single_file`. Please use only one of these arguments."
)
original_config_file
=
config_file
or
original_config_file
original_config
,
checkpoint
=
fetch_ldm_config_and_checkpoint
(
pretrained_model_link_or_path
=
pretrained_model_link_or_path
,
class_name
=
class_name
,
original_config_file
=
original_config_file
,
resume_download
=
resume_download
,
force_download
=
force_download
,
proxies
=
proxies
,
token
=
token
,
revision
=
revision
,
local_files_only
=
local_files_only
,
cache_dir
=
cache_dir
,
)
upcast_attention
=
kwargs
.
pop
(
"upcast_attention"
,
False
)
image_size
=
kwargs
.
pop
(
"image_size"
,
None
)
component
=
create_diffusers_controlnet_model_from_ldm
(
class_name
,
original_config
,
checkpoint
,
upcast_attention
=
upcast_attention
,
image_size
=
image_size
,
torch_dtype
=
torch_dtype
,
)
controlnet
=
component
[
"controlnet"
]
if
torch_dtype
is
not
None
:
controlnet
=
controlnet
.
to
(
torch_dtype
)
return
controlnet
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