Overview
Last updated
Last updated
π Diffusers provides pretrained models for popular algorithms and modules to create custom diffusion systems. The primary function of models is to denoise an input sample as modeled by the distribution pΞΈβ(xtβ1ββ£xtβ)
All models are built from the base class which is a providing basic functionality for saving and loading models, locally and from the BOINC AI Hub.
( )
Base class for all models.
takes care of storing the model configuration and provides methods for loading, downloading and saving models.
config_name (str
) β Filename to save a model to when calling .
disable_gradient_checkpointing
( )
Deactivates gradient checkpointing for the current model (may be referred to as activation checkpointing or checkpoint activations in other frameworks).
disable_xformers_memory_efficient_attention
( )
enable_gradient_checkpointing
( )
Activates gradient checkpointing for the current model (may be referred to as activation checkpointing or checkpoint activations in other frameworks).
enable_xformers_memory_efficient_attention
( attention_op: typing.Optional[typing.Callable] = None )
Parameters
When this option is enabled, you should observe lower GPU memory usage and a potential speed up during inference. Speed up during training is not guaranteed.
β οΈ When memory efficient attention and sliced attention are both enabled, memory efficient attention takes precedent.
Examples:
Copied
from_pretrained
( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType]**kwargs )
Parameters
pretrained_model_name_or_path (str
or os.PathLike
, optional) β Can be either:
A string, the model id (for example google/ddpm-celebahq-256
) of a pretrained model hosted on the Hub.
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.
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.
resume_download (bool
, optional, defaults to False
) β Whether or not to resume downloading the model weights and configuration files. If set to False
, any incompletely downloaded files are deleted.
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.
output_loading_info (bool
, optional, defaults to False
) β Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages.
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.
use_auth_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 ~/.boincai
) 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.
from_flax (bool
, optional, defaults to False
) β Load the model weights from a Flax checkpoint save file.
subfolder (str
, optional, defaults to ""
) β The subfolder location of a model file within a larger model repository on the Hub or locally.
mirror (str
, optional) β Mirror source to resolve accessibility issues if youβre downloading a model in China. We do not guarantee the timeliness or safety of the source, and you should refer to the mirror site for more information.
device_map (str
or Dict[str, Union[int, str, torch.device]]
, optional) β A map that specifies where each submodule should go. It doesnβt need to be defined for each parameter/buffer name; once a given module name is inside, every submodule of it will be sent to the same device.
max_memory (Dict
, optional) β A dictionary device identifier for the maximum memory. Will default to the maximum memory available for each GPU and the available CPU RAM if unset.
offload_folder (str
or os.PathLike
, optional) β The path to offload weights if device_map
contains the value "disk"
.
offload_state_dict (bool
, optional) β If True
, temporarily offloads the CPU state dict to the hard drive to avoid running out of CPU RAM if the weight of the CPU state dict + the biggest shard of the checkpoint does not fit. Defaults to True
when there is some disk offload.
low_cpu_mem_usage (bool
, optional, defaults to True
if torch version >= 1.9.0 else False
) β Speed up model loading only loading the pretrained weights and not initializing the weights. This also tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model. Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this argument to True
will raise an error.
variant (str
, optional) β Load weights from a specified variant
filename such as "fp16"
or "ema"
. This is ignored when loading from_flax
.
use_safetensors (bool
, optional, defaults to None
) β If set to None
, the safetensors
weights are downloaded if theyβre available and if the safetensors
library is installed. If set to True
, the model is forcibly loaded from safetensors
weights. If set to False
, safetensors
weights are not loaded.
Instantiate a pretrained PyTorch model from a pretrained model configuration.
The model is set in evaluation mode - model.eval()
- by default, and dropout modules are deactivated. To train the model, set it back in training mode with model.train()
.
Example:
Copied
If you get the error message below, you need to finetune the weights for your downstream task:
Copied
num_parameters
( only_trainable: bool = Falseexclude_embeddings: bool = False ) β int
Parameters
only_trainable (bool
, optional, defaults to False
) β Whether or not to return only the number of trainable parameters.
exclude_embeddings (bool
, optional, defaults to False
) β Whether or not to return only the number of non-embedding parameters.
Returns
int
The number of parameters.
Get number of (trainable or non-embedding) parameters in the module.
Example:
Copied
save_pretrained
( save_directory: typing.Union[str, os.PathLike]is_main_process: bool = Truesave_function: typing.Callable = Nonesafe_serialization: bool = Truevariant: typing.Optional[str] = Nonepush_to_hub: bool = False**kwargs )
Parameters
save_directory (str
or os.PathLike
) β Directory to save a model and its configuration file to. Will be created if it doesnβt exist.
is_main_process (bool
, optional, defaults to True
) β Whether the process calling this is the main process or not. Useful during distributed training and you need to call this function on all processes. In this case, set is_main_process=True
only on the main process to avoid race conditions.
save_function (Callable
) β The function to use to save the state dictionary. Useful during distributed training when you need to replace torch.save
with another method. Can be configured with the environment variable DIFFUSERS_SAVE_MODE
.
safe_serialization (bool
, optional, defaults to True
) β Whether to save the model using safetensors
or the traditional PyTorch way with pickle
.
variant (str
, optional) β If specified, weights are saved in the format pytorch_model.<variant>.bin
.
push_to_hub (bool
, optional, defaults to False
) β Whether or not to push your model to the BOINC AI Hub after saving it. You can specify the repository you want to push to with repo_id
(will default to the name of save_directory
in your namespace).
( )
Base class for all Flax models.
from_pretrained
( pretrained_model_name_or_path: typing.Union[str, os.PathLike]dtype: dtype = <class 'jax.numpy.float32'>*model_args**kwargs )
Parameters
pretrained_model_name_or_path (str
or os.PathLike
) β Can be either:
A string, the model id (for example runwayml/stable-diffusion-v1-5
) of a pretrained model hosted on the Hub.
dtype (jax.numpy.dtype
, optional, defaults to jax.numpy.float32
) β The data type of the computation. Can be one of jax.numpy.float32
, jax.numpy.float16
(on GPUs) and jax.numpy.bfloat16
(on TPUs).
This can be used to enable mixed-precision training or half-precision inference on GPUs or TPUs. If specified, all the computation will be performed with the given dtype
.
This only specifies the dtype of the computation and does not influence the dtype of model parameters.
model_args (sequence of positional arguments, optional) β All remaining positional arguments are passed to the underlying modelβs __init__
method.
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.
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.
resume_download (bool
, optional, defaults to False
) β Whether or not to resume downloading the model weights and configuration files. If set to False
, any incompletely downloaded files are deleted.
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.
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.
from_pt (bool
, optional, defaults to False
) β Load the model weights from a PyTorch checkpoint save file.
kwargs (remaining dictionary of keyword arguments, optional) β Can be used to update the configuration object (after it is loaded) and initiate the model (for example, output_attentions=True
). Behaves differently depending on whether a config
is provided or automatically loaded:
If a configuration is provided with config
, kwargs
are directly passed to the underlying modelβs __init__
method (we assume all relevant updates to the configuration have already been done).
Instantiate a pretrained Flax model from a pretrained model configuration.
Examples:
Copied
If you get the error message below, you need to finetune the weights for your downstream task:
Copied
save_pretrained
( save_directory: typing.Union[str, os.PathLike]params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict]is_main_process: bool = Truepush_to_hub: bool = False**kwargs )
Parameters
save_directory (str
or os.PathLike
) β Directory to save a model and its configuration file to. Will be created if it doesnβt exist.
params (Union[Dict, FrozenDict]
) β A PyTree
of model parameters.
is_main_process (bool
, optional, defaults to True
) β Whether the process calling this is the main process or not. Useful during distributed training and you need to call this function on all processes. In this case, set is_main_process=True
only on the main process to avoid race conditions.
push_to_hub (bool
, optional, defaults to False
) β Whether or not to push your model to the BOINC AI model hub after saving it. You can specify the repository you want to push to with repo_id
(will default to the name of save_directory
in your namespace).
to_bf16
( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict]mask: typing.Any = None )
Parameters
params (Union[Dict, FrozenDict]
) β A PyTree
of model parameters.
mask (Union[Dict, FrozenDict]
) β A PyTree
with same structure as the params
tree. The leaves should be booleans. It should be True
for params you want to cast, and False
for those you want to skip.
Cast the floating-point params
to jax.numpy.bfloat16
. This returns a new params
tree and does not cast the params
in place.
This method can be used on a TPU to explicitly convert the model parameters to bfloat16 precision to do full half-precision training or to save weights in bfloat16 for inference in order to save memory and improve speed.
Examples:
Copied
to_fp16
( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict]mask: typing.Any = None )
Parameters
params (Union[Dict, FrozenDict]
) β A PyTree
of model parameters.
mask (Union[Dict, FrozenDict]
) β A PyTree
with same structure as the params
tree. The leaves should be booleans. It should be True
for params you want to cast, and False
for those you want to skip.
Cast the floating-point params
to jax.numpy.float16
. This returns a new params
tree and does not cast the params
in place.
This method can be used on a GPU to explicitly convert the model parameters to float16 precision to do full half-precision training or to save weights in float16 for inference in order to save memory and improve speed.
Examples:
Copied
to_fp32
( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict]mask: typing.Any = None )
Parameters
params (Union[Dict, FrozenDict]
) β A PyTree
of model parameters.
mask (Union[Dict, FrozenDict]
) β A PyTree
with same structure as the params
tree. The leaves should be booleans. It should be True
for params you want to cast, and False
for those you want to skip.
Cast the floating-point params
to jax.numpy.float32
. This method can be used to explicitly convert the model parameters to fp32 precision. This returns a new params
tree and does not cast the params
in place.
Examples:
Copied
( )
A Mixin to push a model, scheduler, or pipeline to the BOINC AI Hub.
push_to_hub
( repo_id: strcommit_message: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: typing.Optional[str] = None )
Parameters
repo_id (str
) β The name of the repository you want to push your model, scheduler, or pipeline files to. It should contain your organization name when pushing to an organization. repo_id
can also be a path to a local directory.
commit_message (str
, optional) β Message to commit while pushing. Default to "Upload {object}"
.
private (bool
, optional) β Whether or not the repository created should be private.
token (str
, optional) β The token to use as HTTP bearer authorization for remote files. The token generated when running boincai-cli login
(stored in ~/.boincai
).
create_pr (bool
, optional, defaults to False
) β Whether or not to create a PR with the uploaded files or directly commit.
safe_serialization (bool
, optional, defaults to True
) β Whether or not to convert the model weights to the safetensors
format.
variant (str
, optional) β If specified, weights are saved in the format pytorch_model.<variant>.bin
.
Upload model, scheduler, or pipeline files to the π BOINC AI Hub.
Examples:
Copied
Disable memory efficient attention from .
attention_op (Callable
, optional) β Override the default None
operator for use as op
argument to the function of xFormers.
Enable memory efficient attention from .
A path to a directory (for example ./my_model_directory
) containing the model weights saved with .
Set device_map="auto"
to have π Accelerate automatically compute the most optimized device_map
. For more information about each option see .
To use private or , log-in with boincai-cli login
. You can also activate the special to use this method in a firewalled environment.
kwargs (Dict[str, Any]
, optional) β Additional keyword arguments passed along to the method.
Save a model and its configuration file to a directory so that it can be reloaded using the class method.
takes care of storing the model configuration and provides methods for loading, downloading and saving models.
config_name (str
) β Filename to save a model to when calling .
A path to a directory (for example ./my_model_directory
) containing the model weights saved using .
If you wish to change the dtype of the model parameters, see and .
If a configuration is not provided, kwargs
are first passed to the configuration class initialization function . Each key of the kwargs
that corresponds to a configuration attribute is used to override said attribute with the supplied kwargs
value. Remaining keys that do not correspond to any configuration attribute are passed to the underlying modelβs __init__
function.
kwargs (Dict[str, Any]
, optional) β Additional key word arguments passed along to the method.
Save a model and its configuration file to a directory so that it can be reloaded using the class method.