Buckets:
Pipeline
ModularPipeline[[diffusers.ModularPipeline]]
class diffusers.ModularPipelinediffusers.ModularPipeline
Base class for all Modular pipelines.
> This is an experimental feature and is likely to change in the future.
from_pretraineddiffusers.ModularPipeline.from_pretrainedstr or os.PathLike, optional) --
Path to a pretrained pipeline configuration. It will first try to load config from
modular_model_index.json, then fallback to model_index.json for compatibility with standard
non-modular repositories. If the repo does not contain any pipeline config, it will be set to None
during initialization.
- trust_remote_code (
bool, optional) -- Whether to trust remote code when loading the pipeline, need to be set to True if you want to create pipeline blocks based on the custom code inpretrained_model_name_or_path - components_manager (
ComponentsManager, optional) -- ComponentsManager instance for managing multiple component cross different pipelines and apply offloading strategies. - collection (
str, optional) --` Collection name for organizing components in the ComponentsManager.0
Load a ModularPipeline from a huggingface hub repo.
get_component_specdiffusers.ModularPipeline.get_component_spec
load_componentsdiffusers.ModularPipeline.load_components
- **kwargs -- additional kwargs to be passed to
from_pretrained().Can be:- a single value to be applied to all components to be loaded, e.g. torch_dtype=torch.bfloat16
- a dict, e.g. torch_dtype={"unet": torch.bfloat16, "default": torch.float32}
- if potentially override ComponentSpec if passed a different loading field in kwargs, e.g.
repo,variant,revision, etc.0
Load selected components from specs.
register_componentsdiffusers.ModularPipeline.register_components
Register components with their corresponding specifications.
This method is responsible for:
- Sets component objects as attributes on the loader (e.g., self.unet = unet)
- Updates the config dict, which will be saved as
modular_model_index.jsonduringsave_pretrained(only for from_pretrained components) - Adds components to the component manager if one is attached (only for from_pretrained components)
This method is called when:
- Components are first initialized in init:
- from_pretrained components not loaded during init so they are registered as None;
- non from_pretrained components are created during init and registered as the object itself
- Components are updated with the
update_components()method: e.g. loader.update_components(unet=unet) or loader.update_components(guider=guider_spec) - (from_pretrained) Components are loaded with the
load_components()method: e.g. loader.load_components(names=["unet"]) or loader.load_components() to load all default components
Notes:
- When registering None for a component, it sets attribute to None but still syncs specs with the config
dict, which will be saved as
modular_model_index.jsonduringsave_pretrained - component_specs are updated to match the new component outside of this method, e.g. in
update_components()method
save_pretraineddiffusers.ModularPipeline.save_pretrainedstr or os.PathLike) --
Path to the directory where the pipeline will be saved.
- push_to_hub (
bool, optional) -- Whether to push the pipeline to the huggingface hub. - **kwargs -- Additional arguments passed to
save_config()method0
Save the pipeline to a directory. It does not save components, you need to save them separately.
todiffusers.ModularPipeline.totorch.dtype, optional) --
Returns a pipeline with the specified
dtype
- device (
torch.Device, optional) -- Returns a pipeline with the specifieddevice - silence_dtype_warnings (
str, optional, defaults toFalse) -- Whether to omit warnings if the targetdtypeis not compatible with the targetdevice.0DiffusionPipelineThe pipeline converted to specifieddtypeand/ordtype.
Performs Pipeline dtype and/or device conversion. A torch.dtype and torch.device are inferred from the
arguments of self.to(*args, **kwargs).
> If the pipeline already has the correct torch.dtype and torch.device, then it is returned as is. Otherwise, > the returned pipeline is a copy of self with the desired torch.dtype and torch.device.
Here are the ways to call to:
to(dtype, silence_dtype_warnings=False) → DiffusionPipelineto return a pipeline with the specifieddtypeto(device, silence_dtype_warnings=False) → DiffusionPipelineto return a pipeline with the specifieddeviceto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelineto return a pipeline with the specifieddeviceanddtype
update_componentsdiffusers.ModularPipeline.update_components
- Component objects: Only supports components we can extract specs using
ComponentSpec.from_component()method i.e. components created with ComponentSpec.load() or ConfigMixin subclasses that aren't nn.Modules (e.g.,unet=new_unet, text_encoder=new_encoder) - ComponentSpec objects: Only supports default_creation_method == "from_config", will call create()
method to create a new component (e.g.,
guider=ComponentSpec(name="guider", type_hint=ClassifierFreeGuidance, config={...}, default_creation_method="from_config")) - Configuration values: Simple values to update configuration settings (e.g.,
requires_safety_checker=False)0-ValueError-- If a component object is not supported in ComponentSpec.from_component() method: - nn.Module components without a valid
_diffusers_load_idattribute - Non-ConfigMixin components without a valid
_diffusers_load_idattributeValueError
Update components and configuration values and specs after the pipeline has been instantiated.
This method allows you to:
- Replace existing components with new ones (e.g., updating
self.unetorself.text_encoder) - Update configuration values (e.g., changing
self.requires_safety_checkerflag)
In addition to updating the components and configuration values as pipeline attributes, the method also updates:
- the corresponding specs in
_component_specsand_config_specs - the
configdict, which will be saved asmodular_model_index.jsonduringsave_pretrained
Examples:
# Update multiple components at once
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)
# Update configuration values
pipeline.update_components(requires_safety_checker=False)
# Update both components and configs together
pipeline.update_components(unet=new_unet_model, requires_safety_checker=False)
# Update with ComponentSpec objects (from_config only)
pipeline.update_components(
guider=ComponentSpec(
name="guider",
type_hint=ClassifierFreeGuidance,
config={"guidance_scale": 5.0},
default_creation_method="from_config",
)
)
Notes:
- Components with trained weights must be created using ComponentSpec.load(). If the component has not been
shared in huggingface hub and you don't have loading specs, you can upload it using
push_to_hub() - ConfigMixin objects without weights (e.g., schedulers, guiders) can be passed directly
- ComponentSpec objects with default_creation_method="from_pretrained" are not supported in update_components()
Xet Storage Details
- Size:
- 13.2 kB
- Xet hash:
- 0ba7217ea10c30faf2566655f9e6a8870d658fcf6e5aade688e20be384e51c4d
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.