# Переход из DiffusionPipeline

Если вы знакомы с [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline) и впервые работаете с [ModularPipeline](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline), обратите внимание на несколько отличий. Они перечислены ниже, чтобы вы знали о них, прежде чем переходить к [быстрому старту](./quickstart).

- **Loading is lazy and flexible.** [from_pretrained()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) builds the pipeline from the repository's `modular_model_index.json` without loading any weights. [load_components()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.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()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) lets you reuse a component you already have, or one that differs from the repository's spec. See [Loading components](./modular_pipeline#loading-components) and [Updating components](./modular_pipeline#updating-components).
- **[ModularPipeline](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline) читает другой индекс, `modular_model_index.json`**, но также работает с репозиторием, в котором есть только `model_index.json`, при условии, что у модели есть модульный пайплайн. Обратное неверно: классы [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline) и `AutoPipeline` не работают с репозиторием, в котором есть только `modular_model_index.json`.
- **Вызов возвращает состояние пайплайна**, в котором также хранятся промежуточные значения (`prompt_embeds`, `latents`, ...). Запросите нужные данные с помощью аргумента `output`: `output="images"` или `output=["images", "latents"]`, либо прочитайте атрибут состояния, как показано в [быстром старте](./quickstart#run-a-pipeline). См. [Состояния](./modular_diffusers_states).
- **Classifier-free guidance поддерживается в компоненте `guider`**, а не в аргументе вызова `guidance_scale`: `pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=5.0))`. См. [руководство по guiders](../using-diffusers/guiders).
- **Метод `callback_on_step_end` отсутствует**; однако вы можете вставить блок в цикл денойзинга, чтобы использовать свои существующие функции обратного вызова. См. раздел [Модульные конвейеры](../using-diffusers/callback#modular-pipelines) в руководстве по обратным вызовам.
- **Пайплайн представляет собой граф блоков**, которые можно изменять (удалять, вставлять, заменять) перед сборкой с помощью [init_pipeline()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks.init_pipeline); `pipe.blocks` возвращает копию, поэтому сначала отредактируйте блоки. См. [Создание новых рабочих процессов](./quickstart#compose-new-workflows).
- **Разгрузка (offloading) обрабатывается [ComponentsManager](/docs/diffusers/main/ru/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager)**, который может обслуживать несколько конвейеров, разделяющих компоненты. См. [руководство по ComponentsManager](./components_manager#offloading).

