# En provenance de DiffusionPipeline

Si vous êtes familier avec [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline) et que vous travaillez pour la première fois avec un [ModularPipeline](/docs/diffusers/main/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline), certaines choses fonctionnent différemment. Elles sont listées ici afin que vous les ayez en tête avant de parcourir le [tutoriel d'introduction](./quickstart).

- **Le chargement est paresseux et flexible.** [from_pretrained()](/docs/diffusers/main/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) construit le pipeline à partir du `modular_model_index.json` du dépôt sans charger de poids. [load_components()](/docs/diffusers/main/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.load_components) les charge ensuite, et ce n'est pas nécessairement d'un coup : par défaut, il charge tout, mais vous pouvez charger uniquement les composants que vous nommez avec `names`, ou l'ensemble dont a besoin un workflow donné avec `workflow`. [update_components()](/docs/diffusers/main/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) vous permet de réutiliser un composant que vous avez déjà, ou un composant qui diffère de la spécification du dépôt. Consultez [Chargement des composants](./modular_pipeline#loading-components) et [Mise à jour des composants](./modular_pipeline#updating-components).
- **[ModularPipeline](/docs/diffusers/main/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline) lit un index différent, `modular_model_index.json`**, mais il fonctionne également avec un dépôt qui ne contient que `model_index.json`, à condition que le modèle dispose d'un pipeline modulaire. L'inverse n'est pas vrai : [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline) et les classes `AutoPipeline` ne fonctionnent pas avec un dépôt qui ne contient que `modular_model_index.json`.
- **Un appel renvoie l’état du pipeline**, qui contient également les valeurs intermédiaires (`prompt_embeds`, `latents`, ...). Demandez ce dont vous avez besoin avec l’argument `output`, `output="images"` ou `output=["images", "latents"]`, ou lisez un attribut de l’état, comme dans le [tutoriel](./quickstart#run-a-pipeline). Voir [États](./modular_diffusers_states).
- **Le guidage sans classifieur est pris en charge dans le composant `guider`**, et non via un argument d’appel `guidance_scale` : `pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=5.0))`. Consultez le [guide des guiders](../using-diffusers/guiders).
- **Il n’existe pas de `callback_on_step_end`** ; toutefois, vous pouvez insérer un bloc dans la boucle de débruitage pour utiliser vos fonctions de rappel existantes. Consultez [Modular pipelines](../using-diffusers/callback#modular-pipelines) dans le guide des callbacks.
- **Le pipeline est un graphe de blocs** que vous pouvez modifier (supprimer, insérer, remplacer) avant de le construire avec [init_pipeline()](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks.init_pipeline) ; `pipe.blocks` renvoie une copie, modifiez donc d'abord les blocs. Consultez [Composer de nouveaux workflows](./quickstart#compose-new-workflows).
- **L’offloading est géré par un [ComponentsManager](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager)**, qui peut servir plusieurs pipelines partageant des composants. Consultez le [guide ComponentsManager](./components_manager#offloading).

