Concise Research
1.13K subscribers
242 photos
223 links
Исследования AI глазами исследователя
Автор: @snk4tr Сергей Кастрюлин
Download Telegram
Scaling Laws for Data Filtering - Data Curation cannot be Compute Agnostic

Большинство статей, посвященных масштабированию DL систем, изучают вопрос взамосвязи размера модели, размера датасета и компьюта, потраченного на обучение. Данные в таких исследованиях, как правило, семплируют равномерно по качеству. На практике же данные обычно фильтруются перед использованием. Какую долю данных оставить - вопрос не праздный.

В статье Beyond Neural Scaling Laws было показано, что если выбирать нужное количество сложных примеров для обучения, то это ломает привычные степенные законы масштабирования, а при оптимальности выбора можно достигать экспоненциального масштабирования.

В этой работе авторы изучают quality-quantity trade-off (QQT) заключающийся в вопросе: взять побольше плохих данных или нафильтровать хороших, но поменьше. Вопрос изучают в контексте VLM, фильтруя DataComp-medium для обучения CLIP. Качество оценивают по zero-shot классификации ImageNet/CIFAR, и ретривале Flickr и MSCOCO.

Основным выводом статьи является наблюдение: оптимальное количество данных зависит от доступного компьюта: чем больше раз вы проходитесь по датасету во время обучения, тем полезнее оставлять в нём не самые качественные примеры. Авторы находят сетап, при котором даже LAION фильтрации для Common Crawl оказываются избыточными и мешают дальнейшему улучшению качества модели.

В статье много любопытных кривулек для ознакомления. Какого-то универсального закона (сколько точно данных мне брать если знаю выч. бюджет), к сожалению, нет. Кода тоже.
👍7🔥1
Input Perturbation Reduces Exposure Bias in Diffusion Models

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

Подобный эффект происходит и во время семплирования из диффузионных моделей. В диффузионках также наблюдается накопление ошибки семплирования. Это приводит к известному парадоксу: семплирование DDPM работает лучше при некотором T’ < T. Авторы квантифицируют совместный эффект exposure bias и накопления ошибки подсчетом FID. Для этого они зашумляют исходные картинки до некоторого t, после чего расшумляют и показывают, что чем больше t, тем дальше от исходной картинки оказываются итоговые генерации.

Для борьбы с описанными проблема предлагаются методы:
1. Regularization with Input Perturbation. Эта идея преимущественно направлена на устранение exposure bias и состоит в том чтобы сделать модель более устойчивой к отличию шума на шаге t во время прямого и обратного процессов за счет… впрыскивания дополнительного шума! Для этого будем учить модель предсказывать исходный, базовый шум на каждом шаге по чуть более зашумленной картинке. То есть, если согласно q-sample на шаге t у нас должен быть шум ε, то предсказывать мы будем ε, но по картинке, на которую наложен ε + σ, где σ тоже распределен нормально.
2. Regularization based on Lipschitz Continuous Functions. Предлагается уменьшать накопление ошибки за счет добавок к лоссу (Gradient penalty, Weight decay).

Важно, что оба метода требуют, как минимум, дообучения, а, скорее всего, полного переобучения модели, что не всегда возможно и удобно.

Методы проверяют только для DDPM семплера, а замеры проводят только на игрушечных CIFAR10, ImageNet32 etc. Показывают, что работает лучше ванильного DDIM. Код есть.
👍4
Alleviating Exposure Bias in Diffusion Models through Sampling with Shifted Time Steps

Продолжаем рассматривать проблему exposure bias в диффузии. В предыдущей серии мы узнали, что проблема существует и может быть решена парой хаков: впрыском дополнительного шума и регуляризацией на Липшицевость.
Минус в том что требуется переобучение (возможно, дообучение, этот вопрос не рассматривался) модели.

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

Авторы статьи предлагают для каждого t_i на пути расписания семплирования искать новую точку в окрестности t_w такую чтобы ошибка из-за exposure bias оказалась минимальной. Точку выбирают оптимизируя дисперсию шума так, чтобы она максимально совпадала со значением из расписания q-sample для данного шага. Утверждается, что процедура может быть добавлена не только в DDPM и DDIM, но и в солверы высокого порядка. Поскольку результатом работы алгоритма является буквально смещение параметра времени t на каждом шаге семплирования, метод назвали Time Shift (TS), а соответствующие модификации семплеров: TS-DDPM, TS-DDIM и т.д.

Метод проверяют на игрушечных датасетах с низким разрешением для одностадийной пиксельной диффузии (ADM). Показывают прирост качества в терминах FID в широком диапазоне числа шагов семплирования. Важным экспериментальным фактом является то что начиная с какого-то t < t_c метод можно не использовать потому что процесс семлпирования становится менее чувствительным к небольшим ошибкам. Это экономит доп. вычисления, что всегда приятно. Средний оверхед по компьюту обещают в районе 10%. Код есть.
👍3
Elucidating the Exposure Bias in Diffusion Models

Еще одна статья с последнего ICLR, изучающая проблему exposure bias. На этот раз авторы проводят более глубокий теоретический анализ проблемы и находят, что:
- Дисперсия шума во время обратного процесса всегда выше чем во время прямого и тем больше чем меньше значение t;
- Предлагается метрика для измерения exposure bias для данного t, идейно сильно похожая на FID. Её значения также сильно скоррелированы с FID.

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

Авторы предлагают масштабировать предсказанный во время семплирования шум в меньшую сторону. Оказывается, что оптимальной коррекции можно достичь с помощью линейной функции вида λ(t) = kt + b, где k и b могут быть найдены экспериментально путём семплирования из уже обученной модели. На практике оказывается, что даже этого делать не обязательно и что константное правило уменьшения дисперсии вида λ(t) = b даёт близкие к оптимальным результаты, но при этом не требует дополнительной оптимизации. Метод назвали Epsilon Scaling (ES), а модификации методов ADM-ES, DDPM-ES и т.д.

Метод проверяют, в том числе, во вполне реалистичных сетапах вроде DiT + LDM и датасетах уровня CelebA-HQ. Показывают прирост качества в терминах FID и по картиночкам в широком диапазоне значений шагов семплирования, в том числе и на практически интересных <30 шагах. Есть код для ADM-ES.
👍4
Imagine Flash: Accelerating Emu Diffusion Models with Backward Distillation

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

В этой работе предлагают дистилляцию шагов для text-to-image модели Emu. Основной claim в уменьшении шагов до 3 с аж 50 (хотя в исходной работе про число шагов ни слова) с помощью трёх трюков:

1. Backward Distillation. В обычной, forward дистилляции по шагам модель учат предказывать x_0 по x_t минуя промежуточные шаги, а сам x_t получают прямым процессом. Вместо этого, авторы предлагают получать x_t семплированием из студента, начиная с x_T. Затем, студента учат имитировать предсказания x_0 учителя, но уже стартуя с нового, “синтетического” x_t. Таким образом, модель как бы учится нивелировать exposure bias, о котором мы говорили выше (раз, два, три).

2. Shifted Reconstruction Loss. Обычно для вычисления разницы предсказаний учителя и ученика используют один и тот же момент времени t. Авторы предлагают смещать t для учителя в меньшую сторону, то есть в качестве референсов брать менее шумные x_t. Таким образом, студент будет ориентироваться на более богатую контентом картинку. Утверждается, что это улучшает сигнал для ученика и положительно влияет на его качество.

3. Noise Correction. Авторы говорят о том что в точке T, то есть на первом шаге семплирования, модели трудно сделать предсказание из-за того что в латенте пока что нету сигнала, что верно. Утверждается, что рассмотрение этого случая как отдельного и отказ от использования предсказания шума от студента стабилизирует процесс семплирования. Тем не менее, оценка на x_0 все же используется. Более того, судя по ablation, этот пункт не сказывается на FID/CLIP score.

Модель сравнивают с ADD-LDMXL и Lightning-LDMXL, а так же с ADD версией Emu. Аблейтят, что Backward Distillation даёт наибольший профит, а в сапмате показывают, что модель не коллапсирует по разнообразию. Кода нет.
🔥5👍1
Scaling (Down) CLIP: A Comprehensive Analysis of Data, Architecture, and Training Strategies

Большинство работ по масштабированию, в том числе мультимодальных моделей, направлены на исследование влияния увеличения модели, данных и компьюта. DataComp и основанные на нём работы, а также Beyond Neural Scaling Laws и YaART показали, что качество - важный фактор, влияющий на оптимальное количество данных необходимых для данной модели, а в Scaling Laws for Data Filtering показали, что качество данных связано еще и с тем сколько выч. ресурсов оптимально тратить на обучение.

Здесь авторы изучают quality-quantity trade-off, а также влияние конкретных методов фильтрафии и претрена, обучая CLIP на пофильтрованных подмножествах WebLI 3.4В. В статье есть несколько занятных выводов:

1. Можно получить буст качества претреном на 40% лучших (по текстовой релевантности) данных относительно обучения на всех данных в терминах zero-shot качества на ImageNet.

2. Наибольший ViT не всегда оптимален. Например, если учить одну эпоху на датасетах < 100М, то ViT-L/16 оказывается худшим из всей линейки ViT’ов. Оптимальный размер зависит от размера данных даже при фиксированном числе итераций обучения. Также на небольших выборках CNN (ResNet-50) могут быть даже лучше. Объясняется это сильным inductive bias, который, видимо, решает на малых выборках.

3. Продвинутые техники предобучения вроде SLIP, FLIP и добавления аугментаций не всегда побеждают стандартный CLIP. С увеличением масштаба эксперимента методы выравниваются по качеству, при этом SLIP становится не выгодным из-за в два раза большей выч. сложности. На максимальном тестировавшемся размере (3.4В) базовый CLIP оказывается лучшим вариантом.

Ни кодом ни обученными модельками авторы не делятся.
👍2🔥1
CatLIP: CLIP-level Visual Recognition Accuracy with 2.7× Faster Pre-training
on Web-scale Image-Text Data


Бывает так, что у статьи настолько кликбейтное название, что сначала испытываешь отторжение, а потом видишь, что авторы из Apple и все-таки читаешь.

Интересно, что изначальной мотивацией перехода на self-supervised обучение был уход от предобучения на классификационных задачах, обычно требующих явной разметки. Здесь авторы предлагают вернуться к классификации в угоду вычислительной эффективности, при этом все еще не требуя явной разметки. Повышение эффективности достигается за счет исключения большого числа мало информативных негативных сравнений в contrastive loss.

Метод основан на использовании иерархии концептов WordNet в качестве классов. Для этого из текстовых описаний к картинкам выделяют существительные. Каждое уникальное существительное - класс, при этом длинный хвост редко встречающихся существительных выбрасывается. На практике хорошо работает количество классов от 100 до 500. Каждый текст может содержать несколько существительных, поэтому классификация многоклассовая.

Основным результатом работы является вывод, что такой претрен в общем случае не хуже, а на малых выборках даже лучше контрастива. Важно, что использующийся для этого метод верификации (zero-shot классификация) в этом случае не является совсем уж zero-shot. Тем не менее, полученные таким способом модели хорошо масштабируются по размеру, компьюту и данным, а также не хуже контрастив претренов обобщаются и на другие задачи, например сегментацию и детекцию.

Для интересующихся есть детальная инфа про протоколы обучения и тестирования, а также есть код и веса обученных моделей.
👍3
SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

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

Отношение к текстам в диффузонном Super Resolution (SR) не однозначное. С одной стороны, Imagen, YaART, SR3/SR3+ и многие другие не видят улучшения от использования текстов для SR в высоком разрешении. С другой стороны, в SUPIR утверждается, что тексты полезны.

Суть этой статьи - свой механизм подготовки текстов для SR, который, вроде как, бустит качество. Авторы предлагают:
— Обучить модель тегирования (по сути, классификации) ассоциировать low-rez картинки с тегами так же хорошо как их high-rez версии;
— С помощью неё предсказывать теги (ключевые слова через запятую) по low-rez картинке;
— Подавать строку, состоящую из тегов, в SR модель в качестве условия.

Большинство последних SR моделей полагаются на генеративный prior Stable Diffusion (SD). Для этого модели вроде DiffBIR и SUPIR берут предобученные варианты SD и адаптируют их: low-rez картинку подают через обучаемые отдельно варианты ControlNet, основная модель и VAE остаются замороженными.

Здесь авторы делают то же самое: полученные тегированием тексты подаются через cross-attention, а low-rez картинка через ControlNet в предобученную SD. Обучаются на мелких датасетах (DIV2k, Flickr etc.), с RealSR аугментациями, эвалятся на их тестах с теми же аугментациями + сборной корзинке из RealSR/DRealSR и собственных картинок.

Метод чуть напоминает натягивание совы (text-cond diffusion generation) на глобус (задача SR). Прирост качества, скорее всего, достигается за счет того что модель ломается меньше чем в работах, пытающихся оторвать ненужные тексты. Код есть.
👍4
Tackling the Singularities at the Endpoints of Time Intervals in Diffusion Models

Несмотря на отличное среднее качество генераций Stable Diffusion (SD), у этой модели были замечены сложности с генерацией изображений с яркостью, сильно отличающейся от средней. Не понятно насколько это распространенная проблема, но утверждается, что моделям бывает сложно сделать очень контрастную картинку, имеющую чисто белый/чёрный фон и яркие цветовые переходы.

Ранее это объясняли проблемами в реализациях расписания шума, оставляющих немного сигнала в точке Т. Утверждалось, что усреднение яркости происходит из-за того что модель всегда оставляет, а потом стартует с некого “среднего сигнала” и потому всегда приходит в “усредненные картинки”.

В этой работе авторы заходят с точки зрения проблем с предсказаниями шума в точках 0 и Т. Утверждается, что в обеих точках возникает сингулярность, не позволяющая сделать осмысленное предсказание. Действительно, например в точке Т наш сигнал представляет собой x ~ N(0, 1) и не понятно как предсказать какой шум нужно вычесть из шума чтобы получить не шум 💀

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

Итого получаем алгоритм:
1. Учим диффузию как обычно (на предсказание шума) либо берём предобученную;
2. Отдельно учим модель-добавку для предсказания оценки на х_0 на первом шаге семплирования;
3. Во время семплирования делаем первый шаг моделькой из п.2, а дальше как обычно.

В экспериментах на SD 1.5 и 2.0 качественно и количественно (FID) показывают рост качества и увеличение контраста. Код выложен.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔3
CADS: Unleashing the Diversity of Diffusion Models through Condition-Annealed Sampling

Classifier-free guidance - важный элемент инференса диффузионных моделей, существенно повышающий качество генераций. Суть метода в том чтобы из всех возможных выученных мод направить генерацию в сторону той, которая лучше всего соответствует кондишену (обычно, тексту). Чем выше guidance scale (а для максимизации качества он, как правило, высокий), тем больше “сужается” пространство траекторий семплирования и, следовательно, разнообразие.

Авторы предлагают увеличивать разнообразие возможных генераций с помощью Condition-Annealed Diffusion Sampler (CADS) - метода, не требующего переобучения и модификаций параметров семплирования. Интуитивно, авторам хочется меньше ограничивать множество генераций промтом на ранних шагах семплирования. Ближе к финальным шагам роль промта можно снова увеличить для получения высокого качества и хорошего соответствия запросу.

Суть метода заключается во впрыскивании нормального шума непосредственно в текстовый эмбеддинг, подающийся в модельку в качества кондишена. Уровень шума задаётся некоторым расписанием, где базовый вариант - кусочно-линейная функция:
- На промежутке от Т до t1 - полностью заменяем эмбед на шум;
- От t1 до t2 линейно понижаем уровень шума;
- От t2 до 0 используем чистенький эмбед.

Чтобы эмбеды не ломались, используется дополнительная процедура нормализации эмбедингов перед их зашумлением.

Внимательный читатель спросит почему бы нам просто не варьировать силу guidance scale в ходе семплирования вплоть до полного его отключения промежутке от Т до t1, ведь кажется, что это эквивалентно. Такой подход является бейзлайном этой работы и авторы значительно его превосходят. В том ли причина, что авторы плохо завели бейзлайн - вопрос открытый.

В статье аблейтится метод в приложении к нескольким популярным семплерам (включая DMP++ и UniPC), рассматриваются вариации расписания зашумления. Все эксперименты на ImageNet 256 и 512, качество в терминах FID и Precision даже растёт. Кода нет.
👍5
Automatic Data Curation for Self-Supervised Learning: A Clustering-Based Approach

Современные Self-Supervised Learning (SSL) методы качественно и робастно решают широкий круг задач. SSL модели обучают на больших наборах данных, часто являющихся пофильтрованными подмножествами кусков интернета. Большой прогресс в области достигнут за счет совершенствования процедур фильтрации данных (DataComp), позволяющих отбирать более качественные семплы.

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

Авторы предлагают автоматический метод фильтрации данных с акцентом на сохранении редких концептов из длинного хвоста их распределения. В работе авторы извлекают DINOv2 эмбеды их картинок и SBERT эмбеды из текстов, а далее играются с кластеризацией.

k-means кластеризация хороша, но только когда размер потенциальных кластеров концептов сопоставим. На практике, у распределения концептов длинные хвосты, поэтому предлагается иерархический k-means.

Суть метода в том чтобы:
- Делать k-means на эмбедах, получать кластеры;
- Для каждого кластера считать центроиды;
- Снова делать k-means, но уже на центроидах;
- Асимптотически процесс сходится к равномерному покрытию произвольного распределения.

Получив иерархию, авторы семплируют нужное количество примеров из семпла интернет картинок/текстов и обучают свои версии DINOv2 на этих данных. Довольно убедительный эвал и ablation показывает высокую робастность, код обещают тут.
👍2
LiteVAE: Lightweight and Efficient Variational Autoencoders for Latent Diffusion Models

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

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

Основные составляющие метода:

1. Wavelet processing (основной элемент на приложенной схеме): к входной картинке применяется multi-scale wavelet transform, возвращающий wavelet карты разного разрешения (1/2, 1/4, 1/8 от исходного и тд). На практике, авторы берут 3 скейла, которые далее кодируются отдельными энкодерами. Латенты просто конкатенируются и декодируются.

2. Self-modulated convolution: авторам не нравится распределение значений активаций после group norm блоков декодера, поэтому они меняют их на свои свертки с модуляцией. Эти блоки выучивают скейлинг активаций, что приводит к меньшему разбросу значений.

3. Training improvements: учатся на картинках низкого разрешения для эффективности, меняют архитектуру дискриминатора на U-Net, добавляют частотный лосс.

Внимания заслуживает сапмат, в котором обсуждается важность выучивания латентного представления для реконструкции и последующего обучения LDM. Также обсуждаются более тонкие архитектурные моменты, выбор конкретного adversarial loss, детали имплементации. Кода нет.
👍6
Align Your Steps: Optimizing Sampling Schedules in Diffusion Models

В стандартной DDPM постановке, диффузионки требуют много шагов семплирования (>100) для получения качественных генераций. Это жуть как не удобно, поэтому делают: дистилляцию по шагам (ADD, Consistency etc.) и используют продвинутые солверы (часто высокого порядка) для решения ODE/SDE (DPM++, ER-SDE-Solvers), т.е. диффузионный дифур разбивается на интервалы (дискретизируется), далее численно решаемые солверами.

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

Для того чтобы оценить ошибку дискретизации достаточно узнать и решить генеративное SDE без дискретизации. Только вот на практике это невозможно из-за нелинейности нашей модели, приближающей скор функцию. На помощь приходит следующий трюк: давайте разбивать наше SDE на большое число малых линейных отрезков и решать их. Тогда в пределе это приблизит истинное решение. На практике достаточно выбрать достаточно больше число отрезков и сказать, что такое решение - достаточно близкая аппроксимация.

Теперь, когда у нас есть эвристическое расписание шагов t и некоторая аппроксимация идеального решения обратного SDE, давайте адаптировать наше расписание так чтобы минимизировать ошибку дискретизации. Авторы показывают, что делать это лучше иерархически. Допустим вы хотите лучшее расписание на 32 шага. Тогда нужно:
- Найти оптимальное расписание на 10 шагов минимизируя ошибку дискретизации;
- Добавить экспоненциально количество шагов (сначала до 20, потом до 40) и найти оптимальное решение для них;
- Аппроксимировать расписание какой-нибудь нелинейной функцией, после чего найти точки для нужного числа шагов (32) интерполяцией.

Метод показывает видимый прирост качества на картиночных и видео версия Stable Diffusion для ряда ODE/SDE солверов. Ссылки на потыкать (colab, diffusers) есть на сайте проекта.
👍5
Data Filtering Networks

Появление больших датасетов (CommonCrawl, LAION) для обучения мультимодальных моделей позволило качественно продвинуться в области дискриминативных (DINO, CLIP, BLIP, CoCa) и генеративных (SD, DALL-E, MJ) моделей. При этом, давно понятно, что важно не только их количество, но и качество. Обучение на меньших датасетах лучшего качества приводит к лучшим результатам (DataComp, YaART).

Обычно, улучшение данных проводится за счет их фильтрации сторонними моделями. Модели выбираются исходя из общих соображений, пороги подбираются “на глаз”. Авторы системно подходят к задаче фильтрации данных, проводят анализ зависимостей, делают о том что важно, а что - не очень.

Для всех экспериментов учат CLIP-like Data Filtering Networks (DFNs), эвалятся в DataComp режиме на 38 classification (в т.ч. zero-shot ImageNet) + retrieval бенчмарках.

Анализ показывает, что:
- Качество CLIP-like фильтрационных моделей на zero-shot ImageNet плохо коррелировано с zero-shot ImageNet качеством моделей, обученных на пофильтрованных данных 😬;
- Фильтрационные модели лучше учить на небольшом наборе качественных данных (показали ухудшающим экспом с доливанием CommonCrawl шакалов);
- CLIP-like претрен для DFN лучше классификационного (на качество семплов);
- Размер DFN модели (ViT-B/ViT-L) слабо влияет на качество;

После этого авторы получают SOTA CLIP-like качество файнтюнингом OpenAI CLIP чекпоинта на своем HQITP-350M датасете с качественными кепшенами, проверенными людьми. Использование аугментаций, большого батча и более долгого обучения тоже помогает. В общем, сюрпризов не случилось. High-quality data is king. Кода/весов нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
On Discrete Prompt Optimization for Diffusion Models
ICML’24

Современные text-to-image модели учатся на больших корпусах пар картинка-текст, что позволяет им генерировать произвольные изображения в хорошем качестве. Однако, распределение промтов в датасетах в среднем отличается от пользовательских вводов и в результате модель может выдавать субоптимальное качество. Борьба с этим порождает prompt engineering - ручной процесс подбора промта для достижения лучшего результата.

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

1️⃣ Discrete Prompt Optimization - метод улучшения промтов как для максимизации качества, так и для поиска адверсариальных вариантов, ломающих генерацию.
Метод:
- Делаем генерацию по user prompt
- Считаем графиенты по prompt имея картинку (генерацию), стартуая с пользовательского промта.
- Минимизируем лосс (CLIP score) между итоговой генерацией и пользовательским промтом.
- Для получения adversarial делаем то же самое, но с обратным знаком.

2️⃣ Процедуру тюнинга негатив промтов для моделей с classifier-free guidance. Метод работает аналогично, но авторы показывают показывают, что это может быть даже более эффективно чем тюнинг “позитивных” промтов.

3️⃣ Трюки-хаки для того чтобы сделать вычисления посильными:
- В идеале, нам нужно посчитать градиенты на всех шагах семплирования. Это слишком тяжело по VRAM, поэтому предлагается эвристика того где их считать, а где - нет.
- Прокидываем градиенты через lookup таблицу токенайзера с помощью Gumbel softmax trick.

Экспы на SD с промтами DiffusionDB/ChatGPT/COCO показывают рост по human eval. Основная проблема - нужно несколько доп. форвардов через диффузионку на каждый промт. Кода нет.
👍2
Residual Learning in Diffusion Models
CVPR’24

Известная проблема диффузионной генерации - отклонение траектории обратного процесса (семплирования) от прямого (обучение). Отклонение вызвано не идеальностью оценки скор функции (диффузионной модели) и накоплением ошибки дескритизации. Ранее феномен обсуждался в статьях по exposure bias, где было показано, что его уменьшение снижает артефактность генераций. В качестве методов снижения exposure bias использовали шумовые агументации во время обучения, адаптацию расписания семплирования, корректировку норм шума обратного процесса.

В этой работе авторы никак не используют термин exposure bias и не ссылаются на работы выше. Проблему они называют sampling gap и в качестве метода её решения предлагают учить correction function, цель которой - исправлять траекторию семплирования уже обученных моделей. Утверждается, что метод позволяет выучивать универсальную добавку, которую далее можно использовать для +- любой модели.

Метод нагляднее всего разбирать на приложенной диаграмме:
- Семплируем x_t так, чтобы t соответствовала точке в расписании семплера;
- Делаем k-1 шагов ODE семплера, где k - количество шагов для получения приближения x_0 (генерации). То есть заканчиваем, когда нам остался один шаг семплирования;
- Учим correction function предсказывать x_0;
- Во время семплирования, используем correction function только на последнем шаге семплирования.

На практике correction function представляет собой диффузионку, которую можно либо инициализировать исходной моделью и дообучать, либо учить с нуля. Во втором случае модель может быть в 4-64 раза меньше исходной.

Эксперименты с несколькими диффузионками (ADM, EDM) показывают стабильное понижение FID на широком диапазоне NFE с DMP++ солвером. Статье очень не хватает визуализаций с/без коррекции и, конечно, открытых весов/кода.
👍2
MJ-BENCH: Is Your Multimodal Reward Model Really a Good Judge for Text-to-Image Generation?
[страница проекта (код, бенч)]

Вот допустим обучили вы text-to-image модель и теперь радостно генерируете картинки. Как понять, что они хорошие? Нужна какая-то метрика. Например, можно использовать традиционные подходы вроде FID/IS/PR, можно доверить работу людям и организовать разметку по нужным критериям. Основной минус первого метода - плохая корреляция с результатами второго. Разметка же плоха дороговизной и требованиями к инфраструктуре.

Альтернативные варианты метрик - более легковесные CLIP-like модели (CLIP, BLIP-2, PickScore-v1, HPS-v2.1) и модные VLM типа LLaVA, GPT-4o, Claude 3. Только вот не понятно насколько они хорошо справляются. Нужна метрика на метрику! Для этого авторы собирают датасет триплетов:
1️⃣ Промт
2️⃣ Картинка
3️⃣ Предпочтение пользователя

При этом, все триплеты размечены по четырём критериям:
1️⃣ Text-image alignment: степень соответствия объектов, их атрибутов, взаимного расположения и числа текстовому описанию;
2️⃣ Safety: наличие токсичного (разного рода жесть) и NSFW (порно/эротика) контента на сгенеренной картинке;
3️⃣ Quality: техническое качество изображения (блюр, артефакты);
4️⃣ Generation bias: следование промту в случаях, когда явно указаны пол, возраст, раса, социальный статус.

Помимо подсчета accuracy, авторы предлагают еще два метода оценки качества с помощью своего бенчмарка:
GES (Gini-based Equality Score)
NDS (Normalized Dispersion Score)

Метрики (CLIP-like и VLM модели) оценивают в двух сценариях:
⓵ Ответы моделей сравнивают с пользовательской разметкой, почти везде побеждают проприетарные VLM (GPT-4o, Gemini Ultra)
⓶ Файнтюнят SDv1.5 на выбранных разными моделями парах в RLHF режиме, после чего оценивают генерации людьми. Здесь тоже, в основном, побеждают GPT модели, но и HPS-v2.1 показывает себя неплохо.

В статье есть более детальный анализ плюсов и минусов открытых/закрытых моделей, но, в среднем, закрытые побеждают.
🔥1🤡1
Inf-DiT: Upsampling Any-Resolution Image with Memory-Efficient Diffusion Transformer
[репо с кодом и весами]

Архитектурная статья с очередной попыткой завести трансформеры для задачи Super Resolution (SR). В этот раз, основная проблема отмеченная авторами - высокое потребление VRAM при генерации картинок в ультра-высоком (2к/4к) разрешении. Действительно, обычные U-Net-подобные свёрточные сети размерами в малые сотни миллионов параметров требуют >= 80Gb VRAM для 1к -> 4к апсемпла.

В статье предлагается вариант DiT, включающий в себя следующие модификации.

Unidirectional Block Attention (UniBA). Основной источник потребления памяти в современных SR моделях - self-attention, который “смотрит” на все патчи при генерации текущего патча. В слоях с высоким разрешением активаций это требует много VRAM, поэтому предлагаемое решение - смотреть не на все, а только на часть соседних патчей. Авторы предлагают хранить KV-кеш только для трех соседних (левый, верхний и левый-верхний) блоков активаций.

Если визуализировать процесс инференса (Fig. 3), то складывается впечатление, что модель последовательно, авторегрессионно генерит патчи, что и даёт название методу. На самом деле это не так. Архитектура позволяет генерить много патчей одновременно, но для каждого из них принцип тот же.

Адаптации DiT под задачу SR.
Помимо изменения self-attention, авторы:
- Конкатят к входным патчам сумму time-embedding и картиночного эмбеда CLIP. Использование последнего - уже стандартная практика для обеспечения глобальной консистентности генерации по патчам.
- Добавляют cross-attention на исходную low-rez картинку между траснформерными блоками.
- Адаптируют Rotary Positional Encoding (RoPE) под 2D (картиночную) генерацию.

Метод обучают с Real-ESRGAN аугментациями и проверяют на задачах 4х апсемплинга реальных картинок из DIV2k и 1к генераций SDXL. Для первых репортят FID/PSNR/SSIM, для вторых - результаты human eval.

Отдельно хочется отметить отсутствие в репозитории проекта issues про блочные артефакты. Неужели трансформеры наконец заняли достойное место в задаче SR?
👍2
Consistency-diversity-realism Pareto fronts of conditional image generative models

Аналитическая статья от Meta, в которой авторы рассматривают мультимодальные (image/text) модели в контексте баланса трёх критериев: реализм, консистентность, разнообразие. Внимания заслуживают сами критерии и метрики их оценки в купе с выводами об открытых моделях.

Критерии.
В этой работе консистентность - это соответствие промта и изображения. В случае генеративных моделей это буквально prompt following, который можно оценивать CLIP-like моделями, а можно Visual Question Answering (VQA) подходами. Авторы придерживаются второго сценария и определяют консистентность как долю правильных ответов, которые VQA модель может сделать по (сгенерированной) картинке.

С реализмом и разнообразием чуть сложнее. Для них авторы определяют два случая: условный и безусловный.

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

В безусловном случае всё просто: разнообразие это Recall, а реализм - FID.

Выводы.
Основной результат работы - Парето кривые для всех пар обозначенных кривых (скрин). На них видно, что реализм и консистентность можно одновременно улучшать и для text-to-image моделей, лучший результат по ним у SDXL. Однако даётся это не бесплатно, а в ущерб разнообразию, чемпионами по которой являются ранние версии SD (v1.4, v1.5).

В целом, прогресс в text-to-image и image+text-to-image моделях в разных доменах, в основном, достигается за счет потери разнообразия. Это интересный результат, учитывая то насколько сильным аргументом в пользу диффузии всегда выступает именно разнообразия её генерации.

В статье также подтверждается несколько известных наблюдений о влиянии CFG, RAG и фильтраций на разнообразие.
👍2
PaGoDA: Progressive Growing of a One-Step Generator from a Low-Resolution Diffusion Teacher
[кода нет]

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

Авторов этой работы не устраивает тот факт, что во всех методах дистилляции разрешение картинок на выходе студента и учителя совпадает. Так получается из-за того что все модные методы предложены для латентной диффузии, где генерация происходит в низком разрешении, а финальный размер картинки ограничен скейлинг фактором предобученного декодера VAE (как правило, x8 от разрешения латента). Каскадная схема в этом плане является более гибкой, но она не распространена в академических кругах и методы дистилляции для неё особо не предлагались.

И тут авторы вспоминают про Progressive Growing of GANs (PGG) 😬
Комбинируя это с дистилляцией, получают алгоритм:
1️⃣ Берем предобученную пиксельную диффузионку, работающую в низком базовом разрешении (допустим 64);
2️⃣ Берем набор реальных изображений в произвольном разрешении;
3️⃣ Даунсемплим картинки в одинаковое базовое разрешение;
4️⃣ Получаем из картинок шум с помощью inverse-DDIM, получаем пары картинка-шум;
5️⃣ Инициализиуем новую модель диффузионкой, называем её декодером;
6️⃣ Учим декодер генерировать картинки:
- Из шума полученного нашим inverse-DDIM, используя L2 loss;
- Из случайного шума используя adversarial loss;
7️⃣ После того как обучение сходится, увеличиваем разрешение в 2 раза, приделываем к нашему декодеру несколько слоёв (как в PGG) и повторяем пункты 1️⃣-6️⃣.

В статье есть глубокий теоретический анализ того почему это лучше чем учить какой-нибудь StyleGAN с нуля. Интуиция в том что процесс сильно стабилизируется за счет хорошей инициализации и того что отображение шум-картинка существует и известно из диффузии. Фреймворк о,общается на text-to-image, можно добавить CFG. Получают одношаговую соту на ImageNet на всех разрешениях от 64 до 512.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Fast Training of Diffusion Models with Masked Transformers
[Код, веса]

Современные диффузионные модели имеют SOTA качество в задаче text-to-image генерации. Главный минус - учить их долго и дорого. Например, SDv2.1 учили 200к ГПУ часов A100 (еще и получилось не очень 😂).

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

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

1️⃣ Image masking.
Во время обучения, изображения x зашумляют до некоторых x_t согласно расписанию прямого диффузионного процесса, после чего учатся их расшумлять. Для использования x_t в трансформерах их разрезают на квадратные патчи, которые подаются в модель.

Больше патчей - выше вычислительная сложность. Предлагается маскировать, то есть просто не использовать некоторую долю патчей r, предполагая, что диффузионки достаточно общие чтоб восстановить недостающую информацию. Авторы используют костантую r для всех t.

2️⃣ Asymmetric encoder-decoder backbone.
Авторы используют идею асимметричной архитектуры из MAE:
- В качестве энкодера оставляют почти ванильный DiT (за исключением projection layer в конце). Он работает только на не маскированных патчах.
- Берут маленький декодер из MAE, в котором обработанные эмбеды из энкодера смешиваются через cross-attention с некоторым выучиваемым вектором, замещающим маскированные патчи.

3️⃣ Training objective.
Обучать такую систему только с диффузионным лоссом оказывается сложно из-за нетривиальности предсказания скоров для маскированных патчей. Поэтому диффузионный лосс считают только для не маскированных токенов, а для маскированных - обычный L2.

4️⃣ Unmasking tuning.
В конце модель совсем не много (6% от общего вычислительного бюджета) тюнят без маскирования для максимизации качества.

Результаты.
Авторам удаётся побежать DiT в conditional/unconditional сетапе на вариациях ImageNet по FID используя 30-50% исходного компьюта.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤‍🔥11👍1