КПД – Telegram
2.84K subscribers
176 photos
6 files
369 links
Квантование & Прунинг & Дистилляция

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
Эксперименты

Подход валидируют на class-conditional генерации на ImageNet-1k в разрешении 256x256 и 512x512.

Если смотреть на графики FID на Figure 1, складывается впечатления, что вообще красота - победа c разгромным счетом на DiT-бейзлайнами. Однако, взгляд придирчивого читателя обнаружит некие нюансы 🧐. В таблице их лучшая модель генерирует изображение 256x256 за 1 секунду, а на графике будто бы за 0.3 сек. Если бахнуть StyleGAN-2 (StyleGAN-XL) на этот график, то те будут смотреться Парето-оптимальнее их модельки. Хотя о чем вообще базар: FID - мера оверфита под InceptionV3. По precision/recall неплохо, но не лучше всех.

На 512x512 тоже все солидно, опережают DiT, MaskGiT.

Далее показывают, что модель демонстрирует ярко выраженные scaling-laws, хорошую масштабируемость. Встает вопрос - а у чего нет scaling laws?

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

Еще модель может в inpainting 🧑‍🎨, outpainting 👨‍🎨 и class-conditional editing 📝.

В ablation показывают следующее:
1️⃣ VAR парадигма рулит по сравнению с AR
2️⃣ AdaLN чутка накидывает по сравнению с unconditional LN
3️⃣ Top-k sampling тоже накидывает
4️⃣ CFG-накидывает. Хоть тут и не диффузия, но тоже можно определить его подобным образом.
5️⃣ Увеличение размера тоже накидывает.

Выводы

Прикольная и интересная идея, но непонятно, насколько масштабируется на более сложную задачу text-2-image диффузии. Есть опасение, что одношаговый алгоритм генерации будет страдать разнообразием по сравнению с современными диффузионными моделями. А может регулирование температуры сэмплирования даст разнообразие в той степени, какой оно нужно для целевого приложения.
🤔6👍1
Папира про YaART на арXиве!

Контент следующий:
1️⃣ Описание модели
2️⃣ Описание пайплайна подготовки данных
3️⃣ Описание сетапа обучения
4️⃣ Scaling laws
5️⃣ Исследование влияния качества данных

FID не замеряем 😆.
🔥12
Картиночки
🔥111
Эксперименты и результаты в статьях по современным генеративным моделям, будь то новая парадигма генерации, постановка диффузии или архитектурное новвоведение, натокнули на следующую мысль - а насколько вообще осмысленно понятие SOTA по class-conditional генерации на ImageNet-1k?

Самый низкий FID - хреновый показатель, по упомянутым неоднократно причинам.

Интуитивно хочется следующего - чтобы при подаче конкретного класса, будь то рыба 🐟, собака 🐕 или велосипед 🚲, генерировалась эта рыба, собака или велосипед без дефектов (ну и на каком-то разумном фоне). Вопрос эстетичности особо не стоит - ибо ImageNet-1k не проходил фильтрации по эстетичности и иным аспектам. А требовать генерировать от модели лучше, чем то, что она видела в данных мы обьективно не можем. Что посеешь, то и пожнешь, как говорится.

В идеале, хороший классификатор, должен распознавать генерации, как целевой класс, но добиться этого со 100% точностью нельзя из-за ошибок 😬 в разметке ImageNet и спорности самой разметки.

На мой взгляд, нельзя утверждать, что конкретная модель является лучшей по class-conditional генерации на ImageNet-1k. Можно лишь утверждать, что она решает задачу хорошо или плохо.
🤔2
Конечно, сказать наверняка нельзя, но сильные результаты моделей Command-R/Command-R+ [пост на Love. Death. Transformers], большая из которых вошла в десятку на lmsys и даже обошла некоторые версии GPT-4, наводят на мысль, что и сама GPT-4 может быть не такой уж огромной и даже одного порядка по размеру с GPT-3 (175B параметров).

А помните, были слухи, что GPT-4 - это якобы смесь экспертов с 1.8Т 😱 параметров, инферить которую придется на нескольких хостах?

Полагаю, что все же основной прирост был за счет большего количества данных, лучшей их фильтрации и предобработки. Маленьких секретиков по instruction-tuning, RLHF с достаточным количеством разнообразных инструкций, и обширным подбором ассессоров из разнообразных групп.
🤔5👍2
К дискуссии о размере модели и стоимости инференса.

Command R и Command R+ отличаются в 3 раза по размеру (примерно столько же по FLOPs), но по стоимости генерации входных токенов в 6 раз, а выходных в 10.

По всей видимости, скейлинг стоимости модели и инференса нелинейный.

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

Таблица стоимости токенов ниже

| Model | $ / M input tokens | $ / M output tokens |
|---------------|--------------------|---------------------|
| GPT-3.5 Turbo | 0.50 | 1.50 |
| GPT-4 | 30.00 | 60.00 |
| GPT-4 Turbo | 10.00 | 30.00 |
| Command R | 0.50 | 1.50 |
| Command R+ | 3.00 | 15.00 |


1️⃣ GPT-3.5 Turbo - gpt-3.5-turbo-0125
2️⃣ GPT-4- gpt-4 (не 32к)

КПД. Думайте 🤔. Подписаться 📝.
🔥61🤔1
Выложили 1x16 квантованную версию меньшей из Command-R.

Не без просадки в качестве, но зато замерили на чуть более пацанских 😎 бенчмарках.

Почему чекпоинт весит целых 12.7Gb, хотя больший по числу параметров Микстраль 8x7B (45B параметров) занимает 12.6Gb? Все дело в жирной матрице эмбеддингов, она же lm голова.

https://huggingface.co/ISTA-DASLab/c4ai-command-r-v01-AQLM-2Bit-1x16
👍7
ExLlama 🦙 by turpoderp
[exllama][exllamav2]

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

Один из самых известных и популярных движков - ExLlama от turpoderp.

Метод

Библиотечка суть standalone реализация на Python/C++/CUDA Llama (и некоторых ее производных).

1️⃣ ExLlama-v1 использует vanilla 4-bit GPTQ для квантования моделей.

2️⃣ ExLlama-v2 в отличие от первой версии позволяет квантовать слои в 2, 3, 4, 5, 6 и 8-бит по отдельности, и иметь разную битность даже в пределах одного слоя. Потому можно произвести модель любой битности от 2 до 8. Метод создает несколько сжатых версий данного слоя и в итоге выбирается конфигурация, минимизирующая ошибку квантизации на выходе при заданном среднем количестве бит на параметр. Пример конфига квантования.

Целевое железо - RTX серий 30- и 40-. На более старых моделях движок не так эффективен, как утверждает сам творец.

На хабе лежит немалое количество моделей в данном формате.

Поддержка формата добавлена в optimum.
👍6
Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention
[Статья][Очередная статья от гугла без кода]

В попытках найти эффективную альтернативу стандартному механизму внимания в трансфромере человечество перевело не одни джунгли в Амазонии, выбросило тучу CO2. За последние годы было предложено множество интересных механизмов эффективеого attention, state-space модели, и переосмыслены рекуррентные модели, но все подходы так или иначе уступали в выразительности первородному трансформеру.

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

Метод

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

В данной работе предложили привнести рекуррентность в Transformer-XL и поддерживают два состояния памяти:

1️⃣ M - размера IR d_key ×d_value в числителе
2️⃣ z - размера IR dkey в знаменателе

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

Состояние M обновляется после каждого сегмента через некоторую формулу с внешним произведением key, valuе в текущем сегменте. А z - через сумму от ключей, к которым применили функцию активации (ELU + 1), в данном сегменте (т.е z - является по существу скользящей суммой).

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

Эксперименты

Метод валидируют на бенчмарках по языковому моделированию с длинным контекстом (PG-19, arXiv-math). passkey retrieval и суммаризации книг (500k контекста).

В первом эксперименте берут трансформер с 12 слоями и hidden_dim =1024.
По перплексии метод заметно опережает конкурентные подходы (Transformer-XL, Memorizing Transformers), при этом имея значительно меньшее потребление памяти.

Infini-Transformer c контекстом вплоть до 1M токенов.

На BookSum Infini-Transformer так же бьет BART и Primera, и обе с опцией (+ Unlimiformer), будто бы существенно, но не радикально.

Выводы

Идея объединить локальное контекстное окно с рекуррентной памятью не выглядит принципиально новой 👨‍🦳. Экспериментальная валидация в статье недостаточна, не хватает очевидного сравнения с теми же state-space моделями. Как мне кажется, предложенный подход вряд ли сможет успешно решать с хорошей точность задачи, требующие селективности и способности запоминать несколько фактов одновременно из далекого прошлого, разнесенных по времени с произвольными интервалами между ними.
🤔8👍4
После сегодняшнего релиза Меты
😁17
Релиз 🦙3 таки не оказался 18-апрельской шуткой. Выпустили ровно спустя 8 месяцев после 2-ой версии.

Что известно на данный момент.

Обучение
1️⃣ 15 T токенов на обучении (в 7 раз больше, чем у Llama-2)
2️⃣ 8к контекстное окно
3️⃣ 95% обучающей выборки на английском, и остальные 5% - на других 30 языцех
4️⃣ Instruction-finetuning включает SFT, DPO, PPO

Модель
1️⃣ Архитектура не поменялась (не MoE)
2️⃣ 8B - тоже GQA
3️⃣ Размер токенизатора увеличили до 128к

Метрики
1️⃣ 8B модель бьет модели аналогичного размера (Mistral, Gemma) на бенчах
2️⃣ 70B модель бьет Gemini-Pro-1, 1.5, Mixtral 8x22B и Claude 3 Sonnet

В ходе разработки собрали свой датасет из 1800 разнообразны инструкций на котором замерялись.

Что еще обещают
1️⃣ 400B модель, которая еще учится. Предьявили метрики на чекпоинте от 15 апреля.
2️⃣ Будет техрепорт.
3️⃣ Накатят еще более длинный контекст.

[Блог]
[Коллекция на хабе]
🔥13👍3🕊2
Вам выдали доступ к Llama-3 на хабе?
Anonymous Poll
18%
Да
82%
Нет
Command-R+ AQLM квантизация 1x16 добежала спустя 2 недели и 50+ перезапусков, сбоев инфраструктуры, и прочих шалостей Полтергейста.

Ценность релиза еще дня 3-4 назад была бы на порядок больше, но надо же было довести до ума давно обещанное.

История, к сожалению, не про локальный инференс на consumer-grade GPU, ибо даже сжатая модель весит 31.9 Gb. Целевая аудитория - обладатели GPU уровня от A40, A6000.

https://huggingface.co/ISTA-DASLab/c4ai-command-r-plus-AQLM-2Bit-1x16
🎉121
How Good Are Low-bit Quantized LLAMA3 Models? An Empirical Study
[Статья] [Код]
Спасибо https://news.1rj.ru/str/senior_augur за наводку

Недели не прошло как Llama-3 появилась на свет 👶, как группа исследователей из Китая 🇨🇳 с присущей только азиатам скоростью опубликовала исследования про то, как разные методы квантования и дообучения квантованных моделей просаживают качество.

Эксперименты

Авторы рассматривают 8 более-менее современных методов PTQ (post-training) квантования (RTN, GPTQ, AWQ, QuIP, PB-LLM, DB-LLM, BiLLM, SmoothQuant) и два метода дообучения квантованных моделей - QLoRA, IR-QLoRA.

Качество замеряют на стандартных бенчах по перплексии и 0-shot на lm-eval-harness + 5-shot MMLU.

В первом случае, рассматривают weight only квантование в 1+, 2, 3, 4, 8 бит для всех методов окромя SmoothQuant и W4A4, W6A6, W8A8 (квантование и весов, и активаций) для SmoothQuant. Для калибровки используют 128 последовательностей из Wikitext2-train длины 2к (мало! 😠).

Заметная просадка наблюдается уже в 4 битах, а при приближении к 2 битам большинство методов полностью ломают модель или поднимают значение перплексии до 2-значных значений против 1-значных. Замеряют на 2к контекстном окне, хотя было бы логичнее использовать 8к - длине контекста на обучении.

Для дообучения с QLoRAми используют инструкции из Alpaca. LoRA адаптеры применяют поверх квантования из bitsandbytes (RTN в NormalFloat-4). Что любопытно, все файтьюны портят качество по сравнению с просто квантованной моделью. Варианта здесь два - либо инструкции из Alpaca слишком плохи, либо авторы криво завели дообучение. Учитывая, что можно было запустить дообучение с lr=0, как минимум реально не просадить качество)

Выводы

Авторы явно предпочли скорость публикации ее качеству и полноте. Методы векторной квантизации (QuIP#, AQLM) никак не отражены в работе. Справедливости ради стоит заметить, что они требуют значительно больших вычислительных затрат и времени по сравнению с рассмотренными выше. Тем не менее основное заключение статьи про то, что качество Llama-3 сложнее сохранить при сжатии модели по сравнению с ее предшественниками и иными семействами открытых моделей, похоже, действительно имеет место. Полагаю, что это логично, ибо веса модели, обученной на 15Т токенов в каком-то смысле должны быть более насыщенными информацией…
🔥152👍1👏1🤔1
-Вы LLM-ками пользуетесь?
-Нет, только квантуем.
-Красивое.
28🔥3🥰1👏1😁1
-Почему интеллектуальные люди часто близорукие?
-Они повышают frames per second за счет прорисовки текстур.
😁9👍1
AQLM приняли на ICML!

🍾
👍32🔥20🍾6
KAN: Kolmogorov-Arnold Networks
[Статья][Код]

Введение

В основе всех (ну почти всех) современных архитектур лежит многослойный перцептрон (MLP) с обучаемыми матрицами, сдвигами и фиксированными активациями и некоторым механизмом агрегации для пространственных входов (свертки, attention, state-spaces, мамба, хуямба).

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

Возникает вопрос 🤔- оптимален ли такой подход по вычислениям / точности и нельзя ли изобрести нечто лучшее?

Метод

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

Однако, при этом теорема не дает явного вида этих функций, которые могут оказаться сколько угодно плохими, потому не реализуема на практике.

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

Традиционный MLP является одним из частных случаев предлагаемой парадигмы.

В оригинальной теореме перцептрон всего с одним скрытым слоем, но ничто не мешает технически настакать их побольше.

На практике KAN-слой реализуется как B-сплайн с residual connections, домноженный на константу:

\phi(x) = w(b(x) + spline(x)), где b(x) = silu(x) = x / (1 + e^{-x})

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

При той же глубине и ширине в KAN-сети больше параметров, чем в классической MLP в G (G - размер сетки) раз, но мотивация работы в том, что KAN требуется меньшая ширина для достижения сопоставимого качества.

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

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

По ходу дела, для повышения выразительности сети можно добавлять дополнительные узлы в сплайн.
👍305
Эксперименты

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

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

Вывод

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

Во-первых, требуется валидация на реальных данных. Удивительно, что авторы не показывают эксперименты на том же MNIST или табличных данных, которые должны быть по зубам даже исследователям с ограниченными ресурсами. Возможно, KAN просто имеют хороший inductive bias для решения определенного круга задач.

Кроме того, текущая парадигма построения сетей хороша тем, что удачно ложится на возможности современных GPU, способных параллелизовать эффективно операции с большими тензорами. KAN же не настолько hardware-friendly в этом отношении. Но могут найти свою нишу при инференсе на CPU и FPGA.

Для приложений математики и физики, KAN, безусловно, представляют интерес, но можно ли ими заменить MLP в трансформере? Поживем, увидим 🤷‍♂️.
20👍7
Абитуриентов в принципе можно евалить как LLMки.

Вместо ЕГЭ давать MMLU-RU.

А на вступительных давать проверяющему (которого можно заменить GPT4 или Зелибобой) ответы двух абитуриентов (без указания их имен) и затем отсекать по ELO score.
👾28😁1
1x16 AQLM квантизации 🦙-3 на хабе!

1️⃣ Meta-Llama-3-8B-AQLM-2Bit-1x16
2️⃣ Meta-Llama-3-8B-Instruct-AQLM-2Bit-1x16
3️⃣ Meta-Llama-3-70B-AQLM-2Bit-1x16
4️⃣ Meta-Llama-3-70B-Instruct-AQLM-2Bit-1x16

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

Но в итоге добили до приемлемого качества. Пользуйтесь, делитесь впечатлениями)

8B версия великовата (~4Gb) из-за больших эмбедов и lm_head (так как словарь большой). В будущем планируем попробовать посжимать и эмбеды / языковую голову.
👍28🙏5