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

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
Где первый член - это дважды квантованный вес, а второй - низкоранговая добавка. Double dequant - расквантование скейлов с последующим расквантованием весов.
4) Отдельного упоминания и уважения заслуживает валидация их модели и конкуретных на ряде бенчмарков.

Сначала авторы демонстрируют, что при finetuning, QLoRA имеет примерно такое же качество, как и дообучение всей модели и LoRA для модели с весами с плавающей точкой (без квантования).
Далее авторы дообучают квантованную сеть на различных датасетах, и замеряют качество работы на бенчмарках, тестирующих language understanding и качество ответов модели на чатбот-бенчмарках, замеренное с помощью GPT-4 и человеками. Среди датасетов берутся доступные публично данные:

- Self-Instruct
- Longform
- Chip2
- HH-RLHF
- Unnatural Instruct
- OASST1 (и конечная модель Guanaco обучается именно на нем)
- Alpaca
- Flan v2
Для замеров способности модели понимать языки используется стандартный MMLU бенчмарк. При обучении на датасете FLAN v2 (здоровенная смесь из множества разнообразных задач на инструкции) конечная модель выдает наилучшее качество (вероятно из-за количества данных и их структуры).
Потом авторы проводят замеры на Vicuna Benchmark (наборе инструкций) против ChatGPT используя в качестве арбитра GPT4. В этом случае небольшой OASST1 оказывается наилучшим для instruction finetuning. Самая большая модель практически сравнивается по качеству с ChatGPT.
Однако делается примечание, что разброс довольно существеннен от запуска к запуски и ранжирование у GPT-4 и людей не всегда совпадает, хоть корреляция и существенна.

Далее качество работы оценивается на запросах из Vicuna и OpenAssistant с агреграцией оценок через Elo Score (методики, придуманной для шамхатных турниров) уже непосредственно “кожаными мешками”. И версии Guanaco-{33B,65B} опережают конкуретные open-source модели и ChatGPT.
Таким образом, с одной стороны авторы получают довольно качественного чатбота. И заодно делают вывод про то, что в разные датасеты заточены под разные свойства модели. Скажем, FLANv2, лучший для прокачки модели под понимание языка, не столь хорош для создания чатбота, и наоборот для OpenAssistant.

И самое приятное, для обучения самой большой версии Guanaco не требуется значительных ресурсов. Всего день на одной RTX A6000 (хоть и много больше бесплатного колаба).

Есть демка модели на huggingface и несколько нотбуков на странице проекта. Примечателен ноутбук с файнтьюном GPTNeoX-20B на колабовской T4 c 16GIB, которая так-то весит 40 Гигов (или 20 в 8-битной квантизации).

Введеный в работе формат квантизации имплементирован в библиотеке bitsandbytes и некоторые модели (не только лишь все) можно подгружать в данном формате
model_id = "EleutherAI/gpt-neox-20b"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True, # квантовать ли скейлы
bnb_4bit_quant_type="nf4", # использовать NF4
bnb_4bit_compute_dtype=torch.bfloat16 # тип в котором проводятся вычисления
)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map={"":0})
Ах, да, маленький нюанс. 😅 Формат используется для хранения весов, а в момент вычислений веса материализуется в обычный тип с плавающей точкой (fp16, bf16). Потому ускорения пока нет, и даже некоторые накладные расходы на квантизацию и деквантизацию, но в будущем, вероятно, с развитием карточек и разработкой ядер, возможно, и добавится еще и ускорение.

В общем, весьма сильный и практически полезный результат.
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