are accessible under the same name as attributes of the pipeline and can be shared between pipelines with DiffusionPipeline.components function. Every pipeline should be loadable via the DiffusionPipeline.from_pretrained function. Pipelines should be used only for inference. Pipelines should be very readable, self-explanatory, and easy to tweak. Pipelines should be designed to build on top of each other and be easy to integrate into higher-leve