Чем DiT (Diffusion Transformer) отличается от U-Net в диффузии?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
DiT — это замена U-Net на архитектуру Transformer для модели диффузии. Главное отличие: U-Net лучше использует локальную пространственную структуру через свёртки и skip connections, а DiT строит обработку на self-attention и лучше масштабируется с ростом модели и данных. Обычно ожидают услышать, что DiT особенно силён на больших моделях и высоком качестве генерации, но может быть дороже по памяти и вычислениям.
Определение:
U-Net в диффузии — это сверточная encoder-decoder архитектура с пропусками между уровнями, которая хорошо сохраняет пространственные детали изображения и эффективно работает на локальных паттернах.
DiT (Diffusion Transformer) — это диффузионная модель, где вместо U-Net используется Transformer. Изображение обычно представляют как последовательность патчей или токенов, а модель применяет attention для обработки глобальных зависимостей между частями изображения.
Ключевое отличие не в самой диффузии, а в backbone: U-Net опирается на свёртки и иерархию признаков, DiT — на токены и attention.
Пример использования:
Если нужно обучать генератор изображений на большом датасете с упором на качество и масштабирование, можно выбрать DiT как backbone диффузии. Если важны более зрелая инженерная база, устойчивость на меньших объёмах данных и экономичность, часто удобнее U-Net.
# Псевдокод: одна и та же диффузионная схема, но разный backbone
x_t = add_noise(image, t)
# Вариант 1: U-Net
eps_pred = unet(x_t, t, cond)
# Вариант 2: DiT
tokens = patchify(x_t)
eps_pred = dit(tokens, t, cond)
loss = mse(eps_pred, true_noise)
Пояснение кода:
В обоих случаях цель одна: по зашумлённому изображению предсказать шум или другой параметр диффузии.
В варианте с U-Net вход остаётся в формате изображения, а модель извлекает признаки через свёртки, уменьшая и затем восстанавливая разрешение.
В варианте с DiT изображение сначала разбивается на патчи, превращается в последовательность токенов, и далее Transformer обрабатывает их через self-attention.
Это означает, что U-Net сильнее в локальной детализации, а DiT — в моделировании дальних зависимостей между удалёнными областями изображения.
Ключевые моменты:
- U-Net — сверточный encoder-decoder; DiT — Transformer-бэкбон для диффузии.
- U-Net лучше использует локальную структуру изображения; DiT лучше моделирует глобальные зависимости.
- DiT обычно лучше масштабируется с ростом данных и параметров.
- U-Net часто эффективнее по памяти и вычислениям на средних размерах моделей.
- В диффузии меняется не принцип генерации, а архитектура сети, предсказывающей шум/denoising.
- На собеседовании важно подчеркнуть trade-off: качество и масштабирование у DiT против практичности и локальной индуктивной предвзятости у U-Net.