Автор: Нина Коновалова

Редактура: Дмитрий Раков

Введение

Диффузионные модели — один из ключевых инструментов в области генеративных моделей. Они применяются в генерации изображений, текстур, 3D-сцен, а также видео, аудио и др.

[Рисунок 1. Генерация видео с помощью модели Genmo [источник]](https://prod-files-secure.s3.us-west-2.amazonaws.com/fb875fd6-d46b-4f75-8a43-7beca7a54a5e/f4468e89-cea6-449f-aff5-b85a68182812/Sequence_01.mp4)

Рисунок 1. Генерация видео с помощью модели Genmo [источник]

Главное преимущество диффузионных моделей — их способность генерировать высококачественные изображения, обучаясь восстанавливать данные из зашумлённых версий. Однако, несмотря на свою эффективность, диффузионные модели имеют и недостатки, связанные с высокой вычислительной сложностью. Инференс модели обычно занимает много времени, в частности потому что требует большого количества шагов. Это ограничивает их практическое применение в реальном времени и на устройствах с ограниченными ресурсами.

Поэтому ускорение диффузионных моделей — важная задача, которой активно занимаются многие команды.

Ранее мы познакомились с некоторыми способами ускорения диффузионных моделей:

А сегодня мы изучим ещё один тип ускорения — Consistency models и Latent Consistency models. Итак, давайте начинать 🙂

Интегратор

Диффузия и ODE

Диффузионные модели можно рассматривать с точки зрения стохастических и обыкновенных дифференциальных уравнений (SDE и ODE соответственно) при переходе от дискретного шага по времени к непрерывному.

В таком случаем мы работаем с непрерывным диффузионным процессом: $\{x(t)\}^T_{t=0}$ , $x(0) \sim p_0$ и $x(T) \sim p_T$.

Мы можем записать прямое и обратное SDE для процесса, характеризующегося функцией $f(x,t)$ и виннеровским процессом $w$.

Рисунок 2. SDE для прямого и обратного процессов [источник]

Рисунок 2. SDE для прямого и обратного процессов [источник]

Прямой процесс (forward SDE): данные → шум

$dx_t = f(x_t,t)dt + \sigma(t)dw_t$, $t\in[0,T], T>0, f(\cdot, \cdot)$ — некоторая drift force, а $\{w_t\}_{t \in [0,T]}$ — Броуновское движение, взятое с весовым коэффициентом $\sigma(t)$.

При этом мы считаем, что $p_0(x) = p_{data}(x)$, а $p_T$ — нормальное распределение с нулевым средним и единичной дисперсией.