2.98K subscribers
199 photos
6 files
397 links
Квантование & Прунинг & Дистилляция

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
Memory-Efficient Fine-Tuning of Compressed Large Language Models via sub-4-bit Integer Quantization

TL;DR в данной работе авторы предложили простой и дешевый эффективный по памяти способ дообучения квантованной модели для восстановления качества и под instruction finetuning.

https://teletype.in/@spiridon_sun_rotator/UJ6lixASXjN
Intriguing Properties of Quantization at Scale

TL;DR В данной статье авторы исследуют влияние факторов и гиперпараметров обучения на изменение качества квантованной модели по сравнению с ее исходной версией в числах с плавающей точкой.

https://teletype.in/@spiridon_sun_rotator/yBDfCaCH98R
🔥2
Understanding Optimization of Deep Learning

Данный пост будет в необычном формате.
Обзор на обзор, он же обзор 2-го порядка.

https://teletype.in/@spiridon_sun_rotator/W08b5vufRRo
🔥3
Snap Diffusion: Text-to-Image Diffusion Model on Mobile Devices within Two Seconds

История про диффузионку, генерирующую картинки на уровне Stable Diffusion, менее чем за 2с на мобилке.

https://teletype.in/@spiridon_sun_rotator/sA5t3J0p7eu
👍2
https://teletype.in/@spiridon_sun_rotator/ZoDH4frsx7e

Еще одна статья про квантование LLM на основе Фишерского приближения Гессиана и разбиения весов на выбросы и не-выбросы.
Fast Segment Anything

Есть просто Сэм (причем даже не один), есть дядюшка Сэм, есть серьезный Сэм, и на днях вышел еше быстрый Сэм - FastSAM.

Напомню, что в оригинальной работе SAM (Segment Anything Model) была предложена методология сегментации обьектов из широкого набора категорий на основе различных типов запросов:

1️⃣ Point prompt. Пользователь делает тык и нейросеть выделяет самый примечательный обьект, содержащий данную точку.
2️⃣ Box prompt. Пользователь выделяет прямоугольник с предполагаемым обьектом и нейросеть ищет маску (уточняет контуры).
3️⃣ Text prompt. Пользователь пишет текстом название желаемого обьекта, и он выделяется маской.

Помимо прочего, авторы выпустили самый большой датасет по сегментации, собранный частично вручную, а частично размеченный автоматически - SA-1B.

Работа вызвала большой ажиотаж, появилось много последователей.

Однако, у всей этой красоты есть один большой недостаток - основная моделька, используемая в работе, увесистый ViT-Huge с 630M, который довольно нелегко инферить даже на карточках, что уж говорить про мобильный инференс.

И авторы задались вопросом - можно ли достичь сопоставимого качества, используя значительно меньше вычислений? И предложенное решение работает в 50 раз быстрее при сопоставимом качестве (на RTX3090).

Суть идеи в том, чтобы использовать легковесную модель. И не утруждая себя долгими раздумьями, авторы взяли известное рабочее решение - YOLOv8-seg c YOLACT для сегментации. Модель обучалась на малой части данных SA-1B - всего 2 миллионах картинках из миллиарда. Обладая значительно большими inductive biases и специализированными модулями, YOLO сходится значительно быстрее и требует куда меньше данных. Энкодеры промтов те же, что и в исходном SAM.

Модельку валидируют на разных бенчмарках по сегментации в Zero-Shot. FastSAM выделяет границы примерно так же хорошо, как и SAM. На COCO и LVISv1 примерно на одном уровне с SAM, не сильно уступая finetuned ViTDeT-H. И еще в ряде приложений вышло неплохо - salient object detection (выделении самого примечательного обьекта) и anomaly segmentation.

Метод все же слегка уступает SAM, основные проблемы возникают с маленькими обьектами. Утверждается, что box confidence score, предсказываемый YOLO не всегда соотвествует качеству маски. Маски для маленьких обьектов выходят чрезмерно квадратными.

[Статья][Код]
👍3😁1
результаты
Сегментация с текстовыми промптами
Anomaly detection - какую-то бяку нашли на таблетке
Схематичный рисунок фреймворка - feature pyramid, с box и mask head + NMS модули.
Работает реально быстро
👍2
Failure cases
[Статья][Код]

На днях Stability.AI выкатили новую диффузионку: Stable Diffusion XL.

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

Архитектура

Выше было сказано, сеть увеличилась в размерах. При этом убрали self-attention на максимальном разрешении (из-за большого количества вычислений), и всего 2 стадии уменьшения разрешения в 2 раза вместо 3 в исходной SD (т.е в середине UNet пространственное разрешение в 4 раза меньше, чем на входе и выходе). В середину напихали аж 10 блоков Attention.

Conditioning

Size conditionining
Картинки в датасетах бывают разных размеров. Из-за двухстадийной структуры - диффузии в латентном пространстве и SR каскада, Stable Diffusion имеет жесткие ограничения на размер данных (SD v1.4 обучалась на картинках, где меньшая из сторон имеет размер 512). А существенная доля данных (39%) имеет размер менее 256 (минимальный принимаемый SDXL) . Можно было бы интерполировать до минимального приемлемого размера - но полученные картинки будут размытыми, и сеть будет считать, что так и надо. Потому авторы предложили при обучении и генерации обуславливать на размер (пару значений высота/ширина) - если надо мыльную картинку, получай мыльную, надо резкую - получай резкую.
Модификация улучшает метрики (FID и IS).

Crop conditioning
Stable Diffusion при генерации по промпту нередко выдает кропы картинок, которые смотрятся неэстетично. По всей видимости, причина в том, что подобная аугментация использовалась на обучении модели. Решение простое - снова condition на положение кропа (нормализованные от [0,1] координаты верхнего левого угла). В итоге при condition на (0,0) выдаются более центрированные картинки, захватывающие объект целиком.

Оба типа conditioning добавляют Фурье-эмбеддинги в процесс генерации.`

Multi-aspect training
На практике интересна генерация не только квадратных картинок, но и прямоугольных, потому сеть дообучают на генерацию с разными соотношениями ширины и высоты. Чтобы обучение было эффективным, в один батч собирают картинки с похожим aspect ratio (bucketing).

Improved Autoencoder
Потюнили параметры обучения и улучшили реконструкцию из латентного пространства.

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

Результаты
Stable Diffusion XL, по мнению большинства пользователей, всегда или почти всегда лучше стандартной Stable Diffusion, причем версия refinement стадией выглядит более предпочтительной, чем без нее. Что интересно, метрики FID и CLIP score, на COCO - стандартном бенчмарке для оценки качества генерации по промптам, даже просели по сравнению с SD (v1.5, v2.1), но на них, как известно, следует ориентировать с некоторой опаской. SDXL сравнили с Midjourney v5.1 на PartiPrompts (P2), и на ряде категорий, пользователи чаще отдавали предпочтение SDXL, что выглядит солидно, учитывая, что Midjourney считается флагманом по генерации. Есть однако подозрения у знающих людей, что саму SDXL файнтьюнили на генерациям от Midjourney.

Сама модель настолько же опенсорсная, как и LLaMA. Веса выдаются только с одобрения авторов. Ждем пираток, короче.
👍4
пользовательские предпочтения
Архитектура. Новый модуль - предложенный Refiner
Распределение обучающей выборки по ширине и высоте
Эффект от condition на размер
Эффект от сondition на crop
Refinement позволяет лучше прорисовывать мелкие детали
Stable Diffusion-XL против Midjourney v5.1