Diffusers documentation

Coming from DiffusionPipeline

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.41.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Coming from DiffusionPipeline

If you are familiar with DiffusionPipeline and are working with a ModularPipeline for the first time, a few things work differently. They are listed here so that you have them in mind before you go through the quickstart.

  • Loading is lazy and flexible. from_pretrained() builds the pipeline from the repository’s modular_model_index.json without loading any weights. load_components() then loads them, and it doesn’t have to be all at once: by default it loads everything, but you can load only the components you name with names, or the set one workflow needs with workflow. update_components() lets you reuse a component you already have, or one that differs from the repository’s spec. See Loading components and Updating components.
  • ModularPipeline reads a different index, modular_model_index.json, but it also works with a repository that only has a model_index.json, as long as the model has a modular pipeline. The reverse is not true: DiffusionPipeline and the AutoPipeline classes don’t work with a repository that only has a modular_model_index.json.
  • A call returns the pipeline state, which holds the intermediate values too (prompt_embeds, latents, …). Ask for what you need with the output argument, output="images" or output=["images", "latents"], or read an attribute of the state, as in the quickstart. See States.
  • Classifier-free guidance is supported in the guider component, not a guidance_scale call argument: pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=5.0)). See the guiders guide.
  • There is no callback_on_step_end; however, you can insert a block into the denoising loop to use your existing callback functions. See Modular pipelines in the callbacks guide.
  • The pipeline is a graph of blocks that you can change (pop, insert, replace) before building it with init_pipeline(); pipe.blocks returns a copy, so edit the blocks first. See Compose new workflows.
  • Offloading is handled by a ComponentsManager, which can serve several pipelines that share components. See the ComponentsManager guide.
Update on GitHub