Concise Research
1.13K subscribers
242 photos
223 links
Исследования AI глазами исследователя
Автор: @snk4tr Сергей Кастрюлин
Download Telegram
Сегодня поговорим про масштабирование моделей и данных в диффузии.

Scaling Laws For Diffusion Transformers

Несколько предыдущих работ (раз, два, три) уже в том или ином виде обсуждали масштабирование диффузионок в целом и DiT в частности. Однако построением предсказаний того как будет улучшаться модель при масштабировании они не занимались, то есть power law кривульки отсутствуют.

Зато они являются основным вкладом этой работы. Вдохновившись Шиншиллой, авторы проводят ряд экспериментов на небольших выч. бюджетах и строят sns.color_palette("mako”) 🌿isoFLOP кривые по числу параметров и лоссам, из которых далее получают кривые зависимости размеров моделей и необходимого на их обучение компьюта. Экстраполяцией графиков получают предсказание того каким будет лосс обучения (сравнительно скромного) 1B DiT.

Проблемой таких работ является опора на FID как основную метрику. Его корреляция с лоссом зависит от CFG scale, да и корреляция с оценками пользователей уже много раз ставилась под сомнение. Но анализ интересный.

Pruning then Reweighting: Towards Data-Efficient Training of Diffusion Models

Можно масштабировать модели по параметрам и компьюту, а можно по данным и их качеству. Авторы утверждают, что делают второе первыми в мире, что не совсем правда потом что есть Broken Neural Scaling Laws и исследование в YaART.

Интересна эта работа тем что авторы смотрят не только на увеличение красивости генераций в терминах FID или каких-то визуальных сравнений, а еще и стараются сохранить полноту знаний за счет поддержания баланса классов. На экспы с CIFAR не тригеримся, дальше есть SD и MDT хотя бы на ImageNet.

EvolveDirector: Approaching Advanced Text-to-Image Generation with Large Vision-Language Models

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

Авторы спрашивают: если задаться целью обучить модель на синтетике порожденной другой моделью, сколько её понадобится и можно ли превзойти учителя по качеству? Сразу вспоминается работа про self-distill, где показывалось, что если делать self-distill итеративно, то модели коллапсируют.

Так вот, сначала авторы пробуют взять 11М промтов из SAM и нагенерить по ним синтетики через PixART. Так получается догнать сам PixART, учившийся на 14М пар. Проблема такой неэффективности в неинформативных и сильно повторяющихся промтах. Для устранения проблемы берут VLM, кепшенят картинки и по кепшенам снова деляют генерации. Показывают, что теперь уже 100к семплов становится достаточно чтобы догнать учителя. А если взять несколько топ моделей, сделать генерации каждой из них, а потом отобрать лучшие VLM’кой, то можно превзойти каждую из моделей в отдельности 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🗿1
Sample what you can’t compress
[Google и xAI код не выкладывают]

Картиночные автоэнкодеры (АЕ) используются для обучения диффузионных и авторегрессионных моделей на их скрытых представлениях. При этом, для обучения самих АЕ, обычно используют комбинацию реконструкционных лоссов (L1, L2, LPIPS, DreamSIM, DISTS etc.) и GAN лосса. Добавление GAN лосса делают для увеличения четкости и реалистичности, без него реконструкции получаются размытыми.

Авторы задаются вопросом: если диффузия сейчас основная генеративная парадигма, почему мы все еще учим АЕ с GAN лоссом?

Может показаться, что статья просто про замену GAN на диффузию -> stonks 📈 (зумеры переизобрели писксельную диффузию в пространстве высокой размерности).

На самом деле это не совсем так. Обратим внимание на основную схему: на ней есть два декодера и оба важны для качества и сходимости. D_refine - это U-Net, действительно представляющий собой пиксельную диффузию. Но важно, что он также обуславливается на выход D_refine, то есть на результат кодирования-декодирования AE. Мне это напоминает то как работают диффузионные SR модели (SR3), в которых к основному входу x_t приконкачивают бикубик апскейл LR картинки y.

Использование условия на выход D_init имеет и другой плюс - можно использовать CFG. Для этого в ходе обучения условие дропают в 10% случаев, а на инференсе экспериментально подбирают оптимальный CFG scale, что в итоге улучшает качество.

В экспериментах авторы проверяют, что их AE приводит:
- К более хорошим реконструкциям, особенно на высоких степенях компрессии (когда мало каналов в латентах);
- К более качественным (по FID) class-cond диффузионкам, обученным на этих латентах.

У подхода есть очевидный минус связанный с применением диффузии - увеличение стоимости обучения и инференса. А еще совершенно не ясно почему такое обучение даёт более хорошие латенты.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
Deep Compression Autoencoder for Efficient High-Resolution Diffusion Models
[код обучения и инференса, веса]

Вслед за КПД, уже разобравшим эту работу с акцентом на мотивацию и эксперименты, предлагаю свой взгляд.

Прежде, основной фокус диффузионных команд был направлен на улучшение генеративной модели, а латентное пространство всегда формировали с помощью x8 SD-like автоэнкодера (АЕ). Вообще, х8 - это уже довольно много, но все же 4к генерации не сделаешь из-за того что латентной диффузии прийдется работать в разрешении 512, что долго/дорого.

Работа хороша тем что предлагаются фиксы конкретных проблем, а не просто yet another модель, которая почему-то магически работает.

Хотелки, проблемы и решения

1️⃣ Хотим х32, х64, х128 АЕ
Проблема: если наивно настакать слоёв, возникают проблемы с оптимизацией: добавление каждого следующего блока ухудшает качество реконструкции по rFID
Решение: добавим space-to-channel операцию и residual connection.

Суть в том что обычный residual connection - это сложение или конкатенация с активацией с тем же пространственным разрешением. Но в AE разрешение изменяется х2 после каждого upsample/downsample блока. Поэтому предлагается делать reshape + поканальное усреднение чтобы получить отображение: [H, W, C] -> [H/2, W/2, 2C]. Сами по себе residuals добавлять нужно, но открытым остаётся вопрос насколько важно использовать именно такую реализацию (ablations нету)

2️⃣ Хотим хорошую обобщаемость между разрешениями. То есть наш АЕ должен одинаково хорошо реконструировать и 512 и 4к картинки
Проблема: дорого (или даже невозможно) адаптировать через обучение на 4к картинках, а по-другому не обобщается (низкое качество реконструкции)
Решение: разобьем обучение на три стадии:
- Учим всю сеть С L1 + perceptual лоссами на low rez картинках
- Учим всю нижние блоки АЕ с L1 + perceptual лоссами на high rez картинках
- Учим последнюю свертку декодера с GAN лоссом

У каждой стадии своя цель, но сводится всё к тому чтобы избежать обучения всей модели с GAN лоссом потому что, по утверждениям авторов, это плохо влияет на латентное пространство.

В экспериментах, авторы учат class-cond и text-cond генерацию на разрешениях 512 и 1024, получают не идеальные, но достойные картинки при ускорении up to x19 за счет снижения размерности лантентов. Особенно сильно это бустит трансформерные архитектуры денойзеров, ведь теперь не нужно выбрать большой patch size для того чтобы удешевить attention.

Очень любопытно сменит ли эта модель тренд на то за счет чего достигается ускорение в диффузионках.
👍3🔥21
До начала октября 2024, генерация картинок и видео существовали как области, которые не объединяло ничего кроме вялого перетекания идей. Одновременное появление сразу трёх работ на стыке модальностей намекает на актуальность. Подходы разные, давайте разбираться.

Movie Gen: A Cast of Media Foundation Models
Топовый тех. репорт от экстремистов с кучей технических подробностей. Детали разобраны тут и в подробном повторении не нуждаются. Сейчас нам интересно, что этот подход наиболее простой и естественный: чуть адаптируем LLAMA трансформер, обучаем Video-VAE, а дальше учим end-to-end диффузию сначала на картинках (воспринимая их как видео из одного кадра), потом на видео с постепенным увеличением разрешения. Минус в том что подход для богатых: предлагается учить 30В модельки на 6500 H100.

JVID: Joint Video-Image Diffusion for Visual-Quality and Temporal-Consistency in Video Generation
Академические исследователи предлагают разменять баснословный компьют на усложнение семплирования. Вместо обучения единой модели предлагается отдельно учить картиночную и видео модели и комбинировать за счет предложенного механизма попеременного семплирования. Работает это в случае если для обеих моделей прямой процесс задан одинаково. Для обучения используют всего 64 A100, но и качество/разрешение тут более скромные. Насколько хорошо подход обобщается на масштабы SOTA моделей не ясно.

Pyramidal Flow Matching for Efficient Video Generative Modeling
[код, веса]
Вижу флоу матчинг - ставлю лайк. Хайпанувшая работа где китайский студент за плошка риса 20к ГПУ часов собирает космолёт, порождающий весьма консистентные видосики. В методе есть всё:
- Модная диффузия позволяет интерполировать между разрешениями. Это позволяет экономить на расшумлении близких к полному шуму латентов низком разрешении и только финальных шагах в высоком
- Авторегрессионная компонента позволяет лучше сохранять консистентность кадров. Для этого прошлые кадры в низком разрешении используются в качестве условия для генерации текущего кадра.
Благодаря такой архитектуре можно воспринимать отдельные кадры как картинки или подавать в модель в качестве первого кадра произвольное изображение и делать image-to-video.
- Трансформеры, эффективность, код, аблейшены.

Опыт говорит, что простота метода побеждает оптимизацию вычислительной сложности, но время покажет.
🔥112❤‍🔥1👍1
Cosmos Tokenizer: A suite of image and video neural tokenizers
[код, веса]

В интересное время живем: исследователи из NVIDIA с Fitsum Reda в качестве первого автора выкладывают код, веса и блогпост о своих новых SOTA автоэнкодерах и даже не запариваются писать статью. Чтож, пока призрение к шаблонным pdf’кам становится мейнстримом, разберем описание из блогпоста.

Основная мотивация авторов - предложить общий фреймворк для получения автокодировщиков на все случаи жизни. Вообще, автоэнкодеры бывают:

1️⃣ Дискретные и непрерывные.
Первые (а-ля VQ-VAE) используются, в основном, для авторегрессии. Вторые - для всяких диффузий.

2️⃣ Картиночные, видео и совмещенные.
Первые принимают на вход один кадр, вторые - последовательность кадров и, как правило, имеют дополнительные фишки для темпоральной связанности кадров. Третьи начали появляться совсем недавно (e.g. Movie Gen) и основаны на интерпретации картинки как видео из одного кадра.

3️⃣ Глубокие и не очень
Стандартный даунскейл фактор сегодня - х8, но благодаря той же NVIDIA мы недавно получили DC AE с даунскейлами вплоть до х128.

Что релизнули сейчас?
х8 и х16 дискретные и непрерывные, полностью совмещенные (image+video) AE

Основные фишки
Wavelets: сама идея использовать wavelet transform для разного рода реконструкционных задач стара как мир. Здесь нам важно, что вейвлет разложение используется вместо классического даунсемплинга: карты разложения получаются в 4 раза меньшего разрешения и стакаются поканально. В вейвлет пространстве работает вся модель благодаря Haar Wavelet 3D операции сразу на входе модели

Causality: зависимость реконструкции текущего кадра от предыдущих. Группа текущих кадров после вейвлет разложения процессится факторизованной 3D свёрткой, после чего фичи текущей и всех предыдущих групп кадров связываются темпоральным self-attention

Training: разделяется на два этапа, оба на смеси картинок и видео:
- L1 + L1 Perceptual loss
- Optical flow + Gramm matrix perceptual loss
- Регуляризации латентов/кодов (например KL) не используются

Модели показывают убедительную победу на публичных бенчмарках, а еще предлагается новый бенчмарк Token Bench с фокусом на относительно длинные (10 сек) видео.
👍53🔥2❤‍🔥1💩1
REDUCIO! Generating 1024×1024 Video within 16 Seconds using Extremely Compressed Motion Latents
[код, веса]

Демократизация генерации видео и одновременной генерации картинок и видео (text-to-image+video) продолжают набирать обороты. В прошлой серии, Cosmos AE уже существенно пробил бейзлайн скорости и качества за счет х16 scale factor (SF) при высокой консистентности реконструкций.
В этой работе, авторы предлагают модель с х32 spatial SF и x4 temporal SR, которая бьет (хоть и по не очень информативномым PSNR/SSIM) Cosmos AE в х16 постановке.

Интуиция:
Метод вдохновлен наблюдением: как правило, изменения между кадрами видео незначительны, а значит видео, по природе своей, крайне избыточны. Это значит, что их можно кодировать намного сильнее чем в среднем х8, ускоряя тем самым обучение и генерацию. Наблюдение аналогично сделанному ранее для картиночных AE, которые успешно научились сильно сжимать high-rez картинки.

Другое наблюдение относится к тому как устроена традиционная text-to-video генерация: первый кадр получают из text-to-image модели, после чего “экстраполируют” text-to-video моделью. Логичнее за основу брать не первый кадр, а средний, что и делается в работе.

Основные фишки метода:
- Обуславливание AE на средний кадр из видео последовательности
- Не равномерный SF: х32 spatial SF, x4 temporal SF
- В отличие от Cosmos с их факторизованными 3D свертками, используют ванильные 3D свертки

На полученном AE авторы обучают PixArt-like video DiT со стандартным T5-XXL энкодером, L_simple epsilon prediction лоссом, full 3D attention’ом и трёхстадийным обучением (256->512->1024 multi-AR), а 400к видео для такого праздника берут у Pexels.

Наблюдения:
Среди прочего мне понравилось наблюдение о том что 1x1 patch size даёт наилучшее качество. Разделение обязанностей (downscaling, generation) уже обсуждалось в SANA для картинок и подтверждается тут для видео.

Limitations:
Важное ограничение метода - пока получается генерировать только короткие видео (всего 16 кадров). Таким образом, у авторов пока получилась не совсем полноценная видео модель, а то как расширить конкретный метод для генерации длинных видео - открытый вопрос.
2🔥2❤‍🔥1👍1🤮1💩1
On Improved Conditioning Mechanisms and Pre-training Strategies for Diffusion Models
[NeurIPS’24, кода/весов нет]

Одна из основных проблем в исследовании диффузионок - отсутствие полноценных сравнений между компонентами разных подходов. Большинство крупных релизов (SD разных версий, EMU, Imagen etc.) сопровождается тех. репортом, в котором поменяно всё сразу. В DL мы занимаемся построением моделей по данным и понятно, что они оказывают ключевое влияние. Но как быть с остальными компонентами системы: архитектурой, постановкой диффузии, кондишенингом?

Авторы воспроизводят кучу моделей для “наведения порядка” хотя бы на публичных датасетах, фиксируя компьют, постановку диффузии и гиперпараметры для честного сравнения. Далее основные выводы.

Архитектура
Сравнивали, выровняв по параметрам:
— U-Net из SDXL
Ванильный DiT
— Masked DiT (mDiT-v2)
PixArt DiT
— mmDiT из SD3
Все модели текст-кондишенили на CLIP ViT-L/14, обучение DiT’ов стабилизировали используя RMSNorm.
По FID почти всюду победила архитектура mmDiT. Интересно, что ранее в работе по Scaling Laws уже отмечали эффективность SDXL U-Net’a. Видимо, в Stability годные спецы по архитектурам.

Кондишенинг
Тут авторы наворотили знатно, адресуя сразу несколько вопросов:

1️⃣ Использование control conditions (это когда в модель подаётся доп инфа про размер картинки/кропа и тд).
— Лучше подавать не бинарно (обычно вес выставляют в 0 или 1), а по косинусному расписаню, где ближе к шуму вес максимальный
— Лучше не использовать сомнительные аугментации вроде флипов даже если вы явно даёте это знание модели потому что может ломаться сответствие картинки с текстом
— Аугментации кроппингом могут быть полезны если размер явно подать согласно расписанию

2️⃣ Текстовый conditioning.
— Стандартно CLIP кодирует в 77 токенов, некоторые тексты могут быть короче. Обычно, в таких случаях последовательность падят нулями. Предлагается noisy replicate padding - копируем (часть) токенов, чуть зашумляем, stonks 📈

Обучение
— Файнтюниться под целевое распределение полезно даже если у вас самый широкий и разнообразный претрен (ImageNet22k)
— Полезно разбивать претрен на стадии по разрешению: сначала учимся на лоу резах, потом на хай резах 🎵
— Кропать лоу резах и хай резах нужно по-разному из-за разного среднего размера объектов на картинке
— Для высоких разрешений полезно пошатать расписание шума (вспомнилась Simple Diffusion)
— Подбор позиционных эмбедингов улучшает динамику обучения

Итого
Аккуратное, в меру интересное сравнение разных компонентов диффузионного пайплайна. Как всегда не понятно насколько это переносимо на обучения с датасетами из О(1В) семплов и замерами на human eval вместо FID.
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2❤‍🔥1👍1
Давайте поговорим про GAN.
В последнее время принято друг за другом повторять: GAN — парадигма прошлого, диффузия и авторегрессия рулят. Тем не менее, даже сейчас, не смотря на доминирование диффузии в text-to-image, GAN находят применение в Super Resolution и обучениях VAE, а также используются в методах дистилляции (ADD) и альтернативных архитектурах диффузии (PaGoDa). При этом, GAN имеют очевидные проблемы. Работы ниже конректизируют проблемы и предлагают способы их решения.

Towards a Better Global Loss Landscape of GANs
[NeurIPS 2020, код/веса]

Авторы выделяют две основные проблемы при обучении GAN:
1. Mode collapse —падение разнообразия генераций)
2. Divergence — расхождение процесса обучения

Для этого проводят анализ поверхности лоссов наиболее популярных вариантов GAN.
Предлагается поделить все GAN на два семейства по типу используемых лосс функций:
1. Separable-GAN — почти все популярные GAN, где D независимо оценивает правильность real/fake примеров. Сюда относят классические JS-GAN, W-GAN
2. Relativistic-GAN — модели, в которых D оценивает реальность fake примера относительно соответствующего ему real примера. Основной пример - RpGAN.

Авторы показывают, что эта разница принципиальна. Separable-GAN работает в предположении, что все real и fake данные можно разделить одной границей. Тогда задачей G становится минимальный перенос fake примеров за эту границу. Таких решений экспоненциально много, многие из них вырождены, что и приводит к проблемам. В то же время, авторы показывают, что обучение Relativistic-GAN такой проблемой не обладает, а каждый минимум является глобальным.

The GAN is dead; long live the GAN!
A Modern Baseline GAN

[NeurIPS 2024, код]

Всё сказанное выше правда, все минимумы - глобальные, вот только никто не сказал, что градиентный спуск может легко найти их. На практике, RpGAN без доп регуляризаций не всегда сходится.

Вклад этой работы в том что авторы:
1️⃣ Анализируют то какие именно регуляризации полезны для RpGAN, получается, что это комбинация R1 + R2 (gradient penalty для D и G), называют модель R3GAN
2️⃣ Обнуляют все трюки из StyleGAN2, после чего заново подбирают и аблейтят архитектуру

На выходе получают модель с ResNeXt-ify архитектурой для G и D и отстутствием каких-либо трюков кроме RpGAN + R1 + R2 лосса. Финальная версия улучшает FID на FFHQ 256 c 7.52 до 7.05 при сохранении размеров G и D.

Итог
Очень нравятся работы про раздебаг и упрощение систем, когда вместо yet another заплатки находят и устраняют проблему. Переносимость результатов на смежные задачи и бОльшие масштабы требует доп. проверки.
🔥94❤‍🔥1👍1
Reconstruction vs. Generation: Taming Optimization Dilemma in Latent Diffusion Models
[код и веса]

Выбор представления для обучения латентной диффузии - важнейший фактор качества и скорости обучения модели.

Более высокая размерность
латентного пространства улучшает качество реконструкции. Обычно она достигается путём увеличения числа каналов. VAE первых моделей семейства SD имели 4 канала, у FLUX и SD3 уже 16, а SANA - 32.

Более низкая размерность
латентного пространства упрощает задачу обучения генеративной модели. Если размерность все-таки хочется держать высокой, то можно компенсировать сложность увеличением модели и компьюта, но это дорого.

Интересно, что проблемы связанные с большой размерностью ранее обсуждали в основном для дискретных токенизаторов. Для них известно, что большие кодбуки плохо утилизируются. Авторы этой работы анализируют распределение латентов непрерывных VAE и приходят к такому же выводу. Идея работы в том чтобы заалайнить латенты с фичами visual foundation model, тем самым улучшив их качество с точки зрения обучения на них генеративных моделей.

Метод
Основной вклад работы - двухкомпонентный лосс, который алайнит VAE латенты Z с фичами DINOv2 F. Для этого Z линейно отображают в размерность F получая Z’, после чего:
1️⃣ Поэлементно минимизируют косинусное расстояние между Z’ и F
2️⃣ Минимизируют разницу косинусных расстояний между элементами Z’ и F

Оба компонента считают с отступом так, чтобы только большие отклонения вносили вклад в лосс, а между собой компоненты взвешивают пропорционально их вкладу.

Эксперименты
За основу берут ванильный LDM сетап с VQ-GAN токенизатором (f16d32, f16d16), но без квантизации. На его латентах учат DiTы от 0.1B до 1.6В c полным фаршем из RF, подбора adam.beta2, bfloat16 и RMSNorm для стабилизации, SwiGLU и RoPE. Полученная серия моделей LightningDiT сходится к FID 1.35 на ImageNet 256, причем значение 2.11 получается всего за 64 эпохи.

Выводы
В статье настораживает почти полное отсутствие примеров реконструкций предложенных VAE и аблейшенов влияния примочек для DiT на рост качества относительно бейзлайнов. Нравится движение в сторону недоизученной темы оптимальных пространств для обучения генеративок
👍42❤‍🔥1🔥1
Forwarded from CV Time
Недавно инженеры из Яндекса вместе со Школой анализа данных провели открытый онлайн-интенсив по компьютерному зрению и рассказали о генеративных диффузионных моделях.

Получилась крепкая база для ML`щика — с понятными видеолекциями и практическими разборами.

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

Приятного чтения и увлекательного просмотра!
🔥7👍63❤‍🔥1
Goku: Flow Based Video Generative Foundation Models
[страница проекта, код модели]

Партия выдать одна кошка жена новый техрепорт по text-to-image+video от небезызвестных ByteDance. У ребят не очень получается определиться с тем как называть свою компанию в разных pdf’ках, но чтиво они выдают занятное. Сначала хайпанули на Infinity (рекомендую разбор КПД), теперь решили не отставать от тренда на joint image+video который мы обсуждали выше.

Goku сочетает в себе набор уже известных лучших практик:
Массивные фильтрации данных включая эстетичность и техниеское качество для получения видео и картиночных претрен датасетов с Tarsier2 и InternVL2.0 текстами на 36М и 160М пар соответственно
2B и 8B трансформеры на базе GenTron с full cross attn обученные с Rectified Flow (как в SD3) и FLAN-T5 XL текстовым энкодером. Основной профит от увеличения размера модели - улучшение консистентности и уменьшение дефектности генераций
3D VAE от CogVideoX (да, я тоже впервые про них слышу) с х8 пространственным и х4 темпоральным скейлинг фактором. Как и в случае MovieGen, картинки рассматривают как видео из 1 кадра
Отдельное внимание ByteCheckpoint и оптимизированному пайплайну MegaScale, позволившим достигнуть высокой стабильности и утилизации железа

Само обучение разбивают на стадии по целям и разрешениям:
1️⃣ Сначала выучивают базовую семантику и понимание концептов на картинках
2️⃣ Продолжают претрен в joint image+video режиме
3️⃣ Завершают отдельными файнтюнами на генерацию картинок и видео.

В подготовке данных меня заинтересовал процесс перебаллансировки. Видео данные классифицируют на 9 классов и 86 подклассов. Авторы видят, что клипы включающие позы человека моделировать сложнее всего, поэтому датасет перебалансируют так чтобы классы относящиеся к людям были более представлены. Видео из менее приоритетных классов андерсемплят.

Круто видеть как ByteDance создают свою Open Source инфраструктуру. Бóльшая часть использованных в этой работе составных частей сделана ими же и выложена в открытый доступ.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥105❤‍🔥1👍1
Step-Video-T2V Technical Report: The Practice, Challenges, and Future of Video Foundation Model
[код, веса]

Моделей генерации видео становится всё больше, постоянные новые релизы уже вызывают путаницу. Этот тех. репорт мне понравился тем что авторы сделали обзор последних работ в области, после чего продвинулись по самым приоритетным направлениям. В результате получилась самая большая (30В параметров) и, при этом, довольно эффективная open source система. Рассмотрим ключевые элементы системы.

🔜Video-VAE
SOTA модели генерации видео (Hunyuan, CogVideoX, MovieGen) используют VAE с x8 пространственным и х4/х8 темпоральным scaling factor (SF). В целом, про х8 пространственный SF ничего плохого сказать нельзя, это наиболее частый выбор и в картиночной генерации. Если повысить SF, то можно ускорить генерацию и увеличить размер модели-денойзера благодаря уменьшению размера активаций. Это уже было замечено в работе DC AE, который использовался в SANA.

Основная фишка для стабилизации обучения глубокого автоэнкодера - residual connections к энкодере и декодере для “проброса” высокочастотной ближе к ботлнеку. Этот трюк из DC AE используется и здесь для получения VAE с x16 пространственным и x8 темпоральным SF. Обучают в несколько этапов, постепенно увеличивая разрешение и добавляя в конце GAN лосс

🔜Архитектура и обучение
Тексты кодируются двумя энкодерами:
- CLIP-like моделька с ограничением в 77 токенов умная, но не поддерживает длинные последовательности
- Проприетарная LLM с 3D-RoPE для всего что подлиннее

Сам денойзер - это DiT с full cross-attn для эффективности, AdaLN и QK-Norm для стабилизации обучения. Модельку на 30В параметров предобучают несколько месяцев на тысячах H800 на Flow Matching, после чего тюнят с DPO. Примечательно, что реворд модели переобучают несколько раз в ходе одного RLHF цикла по мере “устаревания” их сигнала.

🔜Инфраструктура обучения
Работы по моделями LLaMA задали тренд на включение секций про инфраструктурные навороты, позволяющие собирать и хорошо утилизировать большие GPU кластера. На моей памяти, этот тех. репорт первый в таком роде в области картинок и видео, вопросам инфры посвящено 7 страниц довольно детализированного описания того как достигали 99% uptime обучений в течение нескольких месяцев. Всё описывать не берусь, но особенно мне понравилась часть про автоматическое детектирование и вывод фейлящихся нод из обучения, что устраняет >80% падений и рестартов обучений.

🔜Данные и стратегия обучения
Пайплайн подготовки данных изобилует разного рода фильтрациями и, в целом, напоминает Goku, которую разбирали выше. Выбивается эта работа количеством данных - “2B video-text pairs and 3.8B image-text pairs” 🤯. Обучение же стандартно бьется на несколько стадий, где сначала учатся на лоу рез картинках, потом лоу рез видео и в конце на хай рез видео. Вопросы вызывает то как денойзер после x16 даунскейла 192px видео вообще понимает что там в этом видео происходит 🤔

🔜Discussion
Интересно, что не смотря на крутую инфру и кучу данных, авторы заморочились про компьют эффективность и многие решения (например выбор DiT вместо MMDiT) приняли на основании более высокой эффективности. А еще, не смотря на большой размер модели, данных и компьюта, модель все равно фейлится на комплексных промтах с несколькими концептами и не очень понимает физику сложных процессов (например, последовательные отскоки мяча от пола). Авторы считают прогресс по этим направлениям наиболее насущными в ближайшем будущем.

Работа оч классная, а open source релиз модельки должен двинуть область вперед
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83❤‍🔥1🔥1
Diffusability of Autoencoders

Латентная диффузия (LDM) - доминирующая парадигма генерации картинок и видео. Фреймворк LDM состоит из автоэнкодера (AE), кодирующего картинки или видео в латенты и диффузионного денойзера, который учат эти латенты расшумлять, а после - генерировать.

Большинство работ в контексте LDM посвящены диффузии, однако АЕ - не менее важный компонент системы. Энкодер АЕ задаёт распределение, которое выучит диффузия, а декодер определяет верхний предел качества реконструкции.

В этом посте речь пройдет про распределение латентов: как сделать его таким, чтобы максимизировать качество обученной на нем диффузии? Ниже представлены две одновременно вышедшие работы. Они решают проблему похожим образом, но исходят из разных предпосылок.

Improving the Diffusability of Autoencoders

Интуиция
Авторы используют интуицию о том что диффузия - это спектральная авторегрессия: на ранних шагах генерации модель предсказывает низкие частоты, после чего, обуславливаясь на них, генерирует всё более высокие. При этом, если АЕ продуцирует латенты со слишком большим количеством высоких частот, то это мешает ходу авторегрессии и, как следствие, генерации.

Инструменты анализа
Для оценки количества высоких частот авторы используют discrete cosine transform (DCT). Этот метод позволяет закодировать информацию последовательностью, каждый элемент которой хранит информацию о том сколько блоков картинки (или латента) содержат ту или иную частоту. Результат очень напоминает кодирующую матрицу JPEG, а её линеаризованный вариант - основа для большинства графиков в статье.

Анализ
Используя DCT, авторы показывают что:
🔜Современные картиночные (FluxAE, CMS-AE) и видео (CogVideoX-AE, LTX-
AE
) АЕ делают латенты более высокочастотными чем исходные картинки
🔜Использование KL этому никак не препятствует
🔜Увеличение числа каналов в латентах делает проблему более выраженной

Метод
Авторы считают, что моделям АЕ выгодно амплифицировать высокие частоты в латентах потому что качество их декодирования - ключевой критерий успеха обучения моделей. Для борьбы с этим предлагается простая регуляризация: давайте одновременно с подсчетом L1 и KL делать даунсемплинг (интерполяцию вниз) картинки и добавлять L1 для её реконструкции слагаемым в лосс. Таким образом зафорсится Scale Equivariance, которая будет мешать амплификации высоких частот

Эксперименты
Обучая разноразмерные DiT’ы поверх нескольких АЕ потюненных с регуляризацией, существенно снижаются FID/FDD и выравниваются DCT спектры. Сам тюн занимает всего 10к итераций с bs=32, что реально быстро и не дорого.

EQ-VAE: Equivariance Regularized Latent Space for Improved Generative Image Modeling

Интуиция
Авторы также замечают, что у современных АЕ отсутствует scale и rotation equivariance, однако их интуиция о том почему это плохо заключается в том что семантически близкие картинки не переводятся в семантически близкие латенты, что усложняет структуру латентного пространства, на которой учится диффузия

Метод
Вместо добавления регуляризационного слагаемого, авторы предлагают всегда учить модель на распределении картинок разного разрешения. Вариативность разрешений также достигается даунсемплиногом исходных картинок с переменным скейлинг фактором. Поскольку в изначальной постановке авторы используют смесь L1 и адверсариального лосса, то заскеленные картинки подаются в оба слагаемых

Эксперименты
Сетап и результаты похожи на описанные в предыдущей статье, хотя значения прироста FID чуть менее громкие. В сапмате интересные визуализации того как после файнтюна латенты становятся более гладкими

▶️ Discuss?
Всегда интересно, когда одновременно выходит несколько работ про примерно одно и то же. Это сильно повышает вероятность того, что в сказанном что-то есть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥122❤‍🔥1👍1
VaViM and VaVAM: Autonomous Driving through Video Generative Modeling
[код и веса]

Окей, мы научились генерировать видосики, но нужны ли они кому-то кроме Тиктока? Оказывается, агенты-планировщики для автономного вождения можно обуславливать на предсказания следующих кадров, насыщая тем самым perception-to-action pipeline. Повосхищаться тем как это может быть устроено предлагаю на примере тех. репорта от valeo.ai (о которых я тоже слышу первый раз)

Метод
В основе системы лежат две модели:
- VaVAM - авторегрессионная трансформерная моделька покадровой генерации видео. Она обучается первым делом, после чего её предсказания используют в качестве условия для работы следующей модели
- VaViM - трансформерная flow matching моделька, которая предсказывает траекторию движения на основании предшествующих действий с и окружения О. Часть О - это кадры проезда несколькими секундами ранее, а часть - предсказанные с помощью VaVAM

Механизм работы системы представлен на приложенной к посту схеме:
▶️Action Encoder в виде MLP объединяет в себе траекторию на предыдущих шагах, соответствующие команды (поворот направо, поворот налево и тд) и диффузионный timestep t
▶️Action Transformer замешивает полученные эмбединги с увиденными и предсказанными кадрами, используя схему маскирования нарисованную справа
▶️Action Decoder - линейный слой, отображающий эмбеды в итоговую траекторию — набор координат (x, y), соответствующих положению автомобиля

Обучение
VaViM сначала обучают на OpenDV — наибольшем из доступных датасетов с записями проездов машин без какой-либо доп разметки. Затем генеративку тюнят на смеси OpenDV с nuPlan и nuScenes, которые сильно меньше, но содержат доп разметку о действиях и траекториях

Перед обучением использовали mu-P для исследования scaling laws видео модели. Всего за 10k GPU часов авторы подбирают коэффициенты степенной функции для масштабирования архитектуры, данных, LR и BS, с которыми далее проводят все эксперименты

Закончив обучения видео модели, переходят к обучению агента VaViM, используя данные о действиях, окружении и траекториях из nuPlan и nuScenes. Здесь используется ванильный flow matching для предсказания координат траектории движения.

Использование одних и тех же датасетов на финальной стадии обучения обеих моделей позволяет минимизировать сдвиг распределения между ними.

Замеры и результаты
О качестве генерации авторы судят по покадровому FID, что вызывает некоторые вопросы, особенно учитывая схожесть и однообразие последовательных кадров.

Также смотрят на пригодность фичей модели-агента для семантической сегментации. По качеству они все еще проигрывают DINO, но все же выделяют что-то разумное

О качестве вождения агента мне судить трудно, но метрики в табличках, показывают SOTA, чему чет большого смысла не доверять.

В качестве ограничений авторы заявляют склонность больших моделей к оверфиту. Также система не выходит за пределы imitation learning, а это значит, что для её масштабирования все еще нужны горы размеченных данных.

А еще к таким работам всегда возникает вопрос: действительно ли важна в данной системе генеративная компонента? Может быть аккуратное использование self-supervised фичей или дискриминативной авторазметки поверх прошлых кадров. К сожалению, в статье это не исследовалось
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21