1---2name: diffusion-engineering3description: Практическая инженерия диффузионных моделей: архитектуры, обучение, инференс, оптимизация памяти. Использовать при любых задачах с диффузионными моделями: проектирование или модификация архитектуры (UNet/DiT/Flow/Flux), выбор и настройка schedulers/samplers, дообучение (LoRA/DreamBooth/full fine-tune), оптимизация памяти (AMP/checkpointing/ZeRO/FSDP/quantization), замена или fusion текст-энкодеров (CLIP/Qwen), работа с Diffusers, отладка диффузионных пайплайнов, оценка качества (FID/CLIPScore/LPIPS), latent diffusion, VAE, guidance/CFG, rectified flow, Stable Diffusion, SDXL, Flux. Также применять при вопросах про GPU-память при обучении генеративных моделей, text-to-image пайплайны, ControlNet, multi-encoder fusion, WebDataset. Do NOT use for writing FLUX.2 Klein generation prompts (use flux2-klein-prompting) или для FLUX.2 Klein / Qwen-Edit LoRA-тренинга и edit-LoRA (use flux2-lora-training); это общая диффузионная инженерия, не специфика FLUX.2 Klein.4---56# Diffusion Engineering Skill78## Быстрая ориентация910Три инженерных решения, которые больше всего влияют на качество/скорость/стоимость:11121. **Где идёт диффузия** → пиксели (дорого) или латентное пространство (LDM/SD-семейство — практично)132. **Backbone денойзера** → UNet (классика, проще) или Transformer/DiT/Flow (масштабируется лучше)143. **Управление сэмплингом** → scheduler, число шагов, guidance_scale — часто дают больше, чем правка сети1516---1718## Reference files — читать по задаче1920| Тема | Файл | Когда читать |21|---|---|---|22| Архитектуры и data flow | `references/architectures.md` | DDPM/SDE/LDM/DiT/Flux/VAE/SDXL, схема пайплайна |23| Schedulers и guidance | `references/samplers.md` | DDIM/Euler/Heun/DPM-Solver/PNDM, CFG, prediction_type |24| Обучение и дообучение | `references/training.md` | Loss/цели, LoRA/DreamBooth/full FT, гиперпараметры |25| Память и распределённость | `references/memory.md` | AMP, checkpointing, ZeRO, FSDP, quantization, FP8 |26| Текст-энкодеры и данные | `references/encoders-data.md` | CLIP/Qwen/multi-encoder, токенизация, data pipeline |27| Оценка и траблшутинг | `references/eval-debug.md` | FID/CLIPScore/LPIPS, типовые поломки и фиксы, лицензии |2829---3031## Быстрый чеклист «я строю/модифицирую diffusion»3233- [ ] **Backbone:** UNet (проще) или DiT/Flow (масштабирование)?34- [ ] **Модули зафиксированы:** tokenizer → text encoder → `encoder_hidden_states` → denoiser → VAE decode35- [ ] **Scheduler выбран:** DDIM / Euler / DPM-Solver — A/B на фиксированных seed36- [ ] **Дообучение:** начинать с LoRA, в full fine-tune только при необходимости37- [ ] **Память:** AMP включён, при необходимости checkpointing, при масштабе ZeRO/FSDP38- [ ] **Данные:** стриминг/шардинг (HF streaming, WebDataset), валидировать throughput dataloader39- [ ] **Оценка:** выбрать метрики под требуемый результат и доступные данные, а не обязательный набор FID/CLIPScore/LPIPS. Для парной ретуши проверять сохранность личности/геометрии/цвета и целевое изменение на фиксированном наборе; FID не заменяет эти проверки. См. `references/eval-debug.md`.4041---4243## Trade-offs на один экран4445| Ручка | Увеличить | Уменьшить |46|---|---|---|47| `num_inference_steps` | ↑ время; качество проверять для данной модели | ↓ время; качество проверять, особенно у distilled моделей |48| `guidance_scale` (CFG) | ↑ adherence к промпту, риск «пережога» | ↑ разнообразие |49| LoRA rank | ↑ выразительность | ↑ параметры, риск overfitting |50| Шаги дообучения | ↑ адаптация | ↑ риск catastrophic forgetting |51| Batch size | ↑ стабильность градиентов | ↑ VRAM |5253---5455## Мини-рецепты по бюджету GPU5657| Бюджет | Что делать |58|---|---|59| **8–16 GB (1 GPU)** | LoRA вместо full FT; grad accumulation; BF16/FP16; xFormers/SDPA; 8-bit оптимизатор |60| **24–48 GB (1–4 GPU)** | LoRA или partial FT; иногда FSDP; большее разрешение |61| **8+ GPU, H100** | Full FT, ZeRO-3/FSDP, float8, WebDataset стриминг, масштабный датапайплайн |6263## Gotchas6465- Универсальный набор метрик превращал малую парную edit-задачу в ненужный сбор тысяч генераций. Метрика должна проверять конкретное требование; численный балл не заменяет визуальную приёмку.66- Число workers и оптимизации памяти — кандидаты для замера на данном runtime, не обязательная лестница. Больше workers может замедлить Windows-пайплайн или дублировать iterable-данные.6768## Troubleshooting6970| Симптом | Проверка | Действие |71|---|---|---|72| Оценка не отвечает, исправлена ли ретушь | Связать каждую метрику с требованием и эталонной парой | Заменить нерелевантную метрику проверкой нужного свойства; сохранить визуальный контроль |73| Загрузка данных медленнее после настройки | Сравнить throughput, память и уникальность данных с `num_workers=0` | Оставить измеренно подходящие параметры; шардировать iterable dataset при нескольких workers |