Автор: Нина Коновалова
Редактура: Александр Наздрюхин
За последние пару лет диффузионные модели прочно закрепились в мире генеративных (и не только) задач.
Рисунок 1. Изображение, сгенерированное через SDXL-Turbo
С их помощью мы получаем качественный и разнообразный материал при генерации:
Рисунок 2. Генерация изображений с помощью модели Midjourney
[Рисунок 3. Генерация видео с помощью модели SORA](https://prod-files-secure.s3.us-west-2.amazonaws.com/fb875fd6-d46b-4f75-8a43-7beca7a54a5e/3bfb9fb7-24b2-4da8-907e-872a035682f0/happy-cat.mp4)
Рисунок 3. Генерация видео с помощью модели SORA
[Рисунок 4. Генерация музыки [источник]](https://prod-files-secure.s3.us-west-2.amazonaws.com/fb875fd6-d46b-4f75-8a43-7beca7a54a5e/21dcdec8-56e4-4da7-a935-05d26a57f505/wavegen_19.wav)
Рисунок 4. Генерация музыки [источник]
И это ещё не весь список 🙂
К сожалению, такой процесс остаётся достаточно медленным. Для генерации одного сэмпла нам зачастую нужно много запусков одной немаленькой нейронной сети, что занимает много времени в сравнении с теми же GANs.
Именно поэтому в данной статье мы с вами рассмотрим способ ускорения диффузионных моделей, но для начала давайте вспомним, а что же вообще представляют из себя диффузионки?
Основная идея диффузионных моделей — генерация элементов распределения из шума путём постепенного расшумления.
Рисунок 5. Генерация изображений из шума [источник]
Диффузионные модели можно рассматривать со стороны score matching'а, стохастических дифференциальных уравнений (SDE) или как модели со скрытыми латентными переменными (идейно близко к VAE). Подробнее об этом можно почитать в нашем посте.
Диффузионный процесс состоит из двух частей: