# Vindo do DiffusionPipeline

Se você está familiarizado com [DiffusionPipeline](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline) e está trabalhando com um [ModularPipeline](/docs/diffusers/main/pt/api/modular_diffusers/pipeline#diffusers.ModularPipeline) pela primeira vez, algumas coisas funcionam de maneira diferente. Elas estão listadas aqui para que você as tenha em mente antes de seguir o [quickstart](./quickstart).

- **O carregamento é preguiçoso e flexível.** [from_pretrained()](/docs/diffusers/main/pt/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) monta o pipeline a partir do `modular_model_index.json` do repositório sem carregar nenhum peso. [load_components()](/docs/diffusers/main/pt/api/modular_diffusers/pipeline#diffusers.ModularPipeline.load_components) então os carrega, e não precisa ser tudo de uma vez: por padrão, carrega tudo, mas você pode carregar apenas os componentes que nomear com `names`, ou o conjunto que um workflow precisa com `workflow`. [update_components()](/docs/diffusers/main/pt/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) permite reutilizar um componente que você já possui, ou um que difere da especificação do repositório. Veja [Carregando componentes](./modular_pipeline#loading-components) e [Atualizando componentes](./modular_pipeline#updating-components).
- **[ModularPipeline](/docs/diffusers/main/pt/api/modular_diffusers/pipeline#diffusers.ModularPipeline) lê um índice diferente, `modular_model_index.json`**, mas também funciona com um repositório que possui apenas um `model_index.json`, desde que o modelo tenha um pipeline modular. O inverso não é verdadeiro: [DiffusionPipeline](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline) e as classes `AutoPipeline` não funcionam com um repositório que possui apenas um `modular_model_index.json`.
- **Uma chamada retorna o estado do pipeline**, que também armazena os valores intermediários (`prompt_embeds`, `latents`, ...). Solicite o que você precisa com o argumento `output`, `output="images"` ou `output=["images", "latents"]`, ou leia um atributo do estado, como no [quickstart](./quickstart#run-a-pipeline). Veja [States](./modular_diffusers_states).
- **O Classifier-free guidance é suportado no componente `guider`**, e não como argumento de chamada de `guidance_scale`: `pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=5.0))`. Consulte o [guia de guiders](../using-diffusers/guiders).
- **Não existe `callback_on_step_end`**; no entanto, você pode inserir um bloco no loop de desruidamento para usar suas funções de callback existentes. Consulte [Pipelines modulares](../using-diffusers/callback#modular-pipelines) no guia de callbacks.
- **O pipeline é um grafo de blocos** que você pode modificar (remover, inserir, substituir) antes de construí-lo com [init_pipeline()](/docs/diffusers/main/pt/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks.init_pipeline); `pipe.blocks` retorna uma cópia, então edite os blocos primeiro. Consulte [Compor novos fluxos de trabalho](./quickstart#compose-new-workflows).
- **O offloading é tratado por um [ComponentsManager](/docs/diffusers/main/pt/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager)**, que pode atender a vários pipelines que compartilham componentes. Consulte o [guia do ComponentsManager](./components_manager#offloading).

