Telegram Web
SCALING LAWS FOR SPARSELY-CONNECTED FOUNDATION MODELS
[Статья][Кода нет и хрен с ним]

Введение

Как известно, foundation модели, обученные на колоссальных объёмах данных, демонстрируют scaling laws - сравнительно простые зависимости качества работы с изменением количества данных и размера модели, выражающиеся обычно степенными законами. И на основе этих закономерностей подбирают модели оптимальные по размеру и количеству данных при заданном ограничении на бюджет обучения.

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

И в приведенной работе, авторы впервые проводят систематическое исследование по масштабированию спарсных сетей.

Постановка задачи

Авторы рассматривают 2 задачи -

1️⃣️ Обучение T5 на корпусе С4
2️⃣️ Обучение ViT на JFT-4B (проприетарный гугловский датасет)

Для ViT рассматривают 7 моделей размера от 0.66M до 42.4M параметров, и 4 конфигурации количества шагов обучения, а для T5 - 4 модели (от 1.3M до 85M параметров) и 3 конфигурации длительности обучения. Рассматривают 4 уровня прореживания - 0%, 50%, 75%, 87.5%. Менее 50% не целесообразно рассматривать обычно на практике, а выше 87.5% оптимизация становится затруднительной.

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

Первые 25% времени обучение обучается плотная модель, следующие 50% времени обучения уровень прореживания постепенно поднимается до целевого значения, и последние 25% модель обучается с постоянным прореживанием.
Эксперименты

Вывод закона скейлинга

Авторы отталкиваются от стандартной формулы scaling law по количеству данных и размеру модели. В ней три аддитивных члена:

1️⃣️️️ Спадающий степенным образом с размером выборки.
2️⃣️️️ Спадающий степенным образом с размером модели.
3️⃣️️️ Неустранимая ошибка - некоторая константа.

Однако не очевидно, каким образом sparsity будет входить в конечный закон. Важно лишь общее количество параметров или sparsity может дать некоторое преимущество по сравнению с dense моделью того же размера?

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

1️⃣️️️ Графики лосса против количества параметров образуют почти параллельные линии
2️⃣️️️ Чем выше степень прореживания, тем меньше лосс, но выигрыш от прореживания быстро спадает с ростом степени сжатия.
3️⃣️️️ Форма кривых лосса против количества параметров почти не зависит от количества данных.

Из наблюдений выше возникает анзац для scaling law c прореживанием. Вместо константы помноженной на степень от размера модели, возникает степень доли ненулевых параметров + некоторая константа.

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

Исходя из полученных scaling law можно вывести оптимальную степень прореживания при заданном количестве ненулевых параметров и FLOPs, потраченных на обучение. Чем больше перебор по длительности обучения по сравнению с Chinchilla law, тем выгоднее иметь более сильное прореживание.

Авторы рассматривают два способа оценки количества FLOPs - 1) в предположении, что железо умеет идеально пропускать операции с нулевыми весами, 2) и в типичном сценарии - где операции со спарсными матрицами требуют столько же вычислений, как и с произвольными. Оба метода будут отличаться на некоторый фактор.

Контуры # pretraining FLOPs против # non-zero parameters для разных значений sparsity, при которых данная степень прореживания оптимальна, удивительным образом оказываются параллельны scaling law Chincilla. Однако, даже для Chincilla law оптимальным является ненулевое значение sparsity.

В предположении идеальной утилизации спарсности при обучении 50% модель требует в примерно 2 раза (для ViT), 3 раза (для T5) больше FLOPs чем предсказание Chincilla law для Dense модели. А без этого предположения 5x и 70x, соотвественно. Кажется, что это слишком много, но на самом деле современные языковые модели обучаются нередко значительно больше, чем compute-optimal значение. Например, LLama-2-7B обучалась в 14 раз больше.

Дальше можно задаться вопросом, а какого размера должна быть плотная модель при том же количестве FLOPs, чтобы иметь при том же количестве то же качество, что и sparse модель? Для 50% sparse модели соответствующая ей модель должна быть в 1.6x раз больше, и для 75% - 2.16x, т.е преимущество от sparsity уменьшается с увеличением степени прореживания. Примечательно, что закономерность примерно одна и та же, для ViT и T5, хотя модели и задачи совершенно разные.

Затем авторы исследуют scaling laws для полуструктурированной N:M sparsity (N ненулевых значений). Данный паттерн более ограничителен, потому закономерно ожидать, что он менее эффективен, чем произвольное расположение нулевых/ненулевых весов. 2:4 паттерн (поддерживаемый Nvidia GPU начиная с Ampere) не уступает 50% неструктурированной sparsity, а вот 1:4, 2:8 уже заметно хуже с точки зрения масштабирования, чем 75% sparsity.
Прореживание предобученных моделей

На практике чаще берут обученную модель и сжимают ее. Авторы берут три модели ViT S/16, M/16, B/16 (S, M, B - Small, Medium, Base, а 16 - размер патча) и прореживают их тем же самым способом, что sparse модели в экспериментах выше (только прореживая сразу, а не через 25% времени обучения), используя 5.6% бюджета на обучение плотной модели.

Для 50%, 75% сжатия такой способ в 5 (4) раз эффективнее чем обучение sparse модели from scratch, но при большем сжатии выигрыш уменьшается. По всей видимости, причина этого в том, что модель сильно просаживается, по сравнению с исходной плотной. Если учитывать бюджет обучения плотной модели в суммарных затратах на создание sparse модели заданного качества, то генерация sparse модели с нуля значительно эффективнее.

Вывод

Весьма интересное и нужное исследование, мотивирующее дальнейшую разработку железа и алгоритмов, способных работать с прореженными матрицами. При фиксированной производительности и памяти железа, по всей видимости, оптимальнее всего будет брать большую насколько возможно модель с некоторой долей нулевых весов и квантованную в низкую точность. Дальнейшее повышение эффективности могут дать conditional sparsity архитектуры, использующие часть параметров на прямом и обратном проходе (как пресловутые смеси экспертов) и retrieval-augmented модели.
Подумал я, что длинные полотна, подобные Shine on you crazy diamond, с детальным описанием экспериментов выходят чрезмерно многословными и содержат слишком "многа букв". И думаю сократить среднюю длину постов, акцентируя внимания только на ключевых моментах и результатах. Тем самым заодно можно будет повысить и throughput постов.
Так как голоса, по всей видимости, разделяются поровну - сделаем гибридный формат)
🔥2
В Pytorch 2.1 завезли 2:4 semi-structured sparsity!

Напомню, что произвольный паттерн неструтурированного прунинга не поддерживается на GPU, но начиная с поколения Ampere реализована аппаратная и программная поддержка 2:4 паттерна, где на 2 позициях из 4 стоят ненулевые веса. В общем случае N:M sparsity N ненулевых весов из M.

До недавних пор, чтобы воспользоваться 2:4 sparsity нужно было напрямую использовать ядра из cuSparse или CUTLASS или пользоваться скомпилированной с --sparsity моделью в TensorRT. Но теперь semi-structured sparsity доступна почти всем желающим.

Примечание 😐.
2:4 sparsity работает только на Ampere / Hopper. Не ожидайте ускорения на колабовской T4.

Теоретическое ускорение и сжатие, которое дает такой паттерн, 16/9 для half precision и 16/10 для int8. Но на практике, увы не все так радужно. Реальное ускорение инференса в районе 10-30% (в хорошем сценарии).

Сжатие в 2:4 без дообучения обычно заметно просаживает качество (за исключением совсем больших моделей). Но его можно быстро восстановить, дообучая на целевой задаче.

В приведенном примере c BERT качество сжатой модели такое же как у и исходной после дообучения. При маленьких батчах инференс BERT c 2:4 sparsity работает медленее, чем dense матричные операции, но с ростом батча выигрыш от разреженности становится заметным и стабилизируется в районе 20-30%. Заметим, что в BERT сравнительно небольшие матрицы, и на условной Llama выигрыш будет наблюдаться уже на батче с 1-2 последовательностями.

Документация в торче
Туториал с прунингом BERT
Статья Nvidia про 2:4
🔥6
ECoFLaP: Efficient Coarse-to-Fine Layer-Wise Pruning for Vision-Language Models
[Статья][Код есть, но не почищен]

Большинство методов прунинга сжимают все слои нейронной сети с одинаковой силой .

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

Но как найти это распределение?

Метод

Современные SOTA-методы сжатия LLM-ок опираются обычно на послойное приближение Гессиана, которое ничего не знает о влиянии данного слоя на конечный выход. Как вариант можно оценить важность слоя с помощью градиентов модели, в частности, используя диагональ матрицы Фишера.

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

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

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

Авторы валидируют метод на BLIP-2 (задача VQA), Flan-T5 (на MMLU), EVA-ViT (на ImageNet-1k). Не то, чтобы подсчет градиентов был непосильной задачей для моделей этого размера, но зато можно оценить качество приближения нулевого порядка по сравнению с "честным" Фишером.
В качестве метода прунинга используется Wanda (SparseGPT, где заменили послойный гессиан его диагональю ) и модели не дообучаются после прунинга.

Предложенный метод неплохо накидывает по сравнению с uniform sparsity при сжатии 50-60%, однако просадка все же довольно существенна по сравнению с плотной моделью во всех трех сценариях. Приближение градиента разностью почти не просаживает качество по сравнению с использованием истинного градиента. Найденные sparsity распределения тоже близки. Метод сильнее прореживает текстовую модель в BLIP чем vision. Большее количество шумов для оценки градиента не влияет на качество.

Вывод

На текущий момент при определении важности и влияния слоя на конечный выход модели человечеству приходится оперировать эвристиками, основанными на величине активаций, градиентов, но исчерпывающего, удовлетворительного решения пока нет. Разработка некоторого надежного, подкрепленного теоритическими гарантиями метода позволит сделать большой шаг в сжатии моделей и построении эффективных архитектур. Странно, что статья хоть и предлагает метод, экономичный по памяти, не валидируется на условной Llama/Llama-2 .
👍4
Monarch Mixer: A Simple Sub-Quadratic GEMM-Based Architecture
[Статья][Код есть, но непричесан]

Введение

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

Для специальных классов матриц / преобразований можно добиться субквадратичной сложности - разреженных, блочно-диагональных или обладающих определенной структурой. И в качестве иллюстративного примера уместно привести быстрое преобразование Фурье, имеющее сложность O(N log N).

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

И в этой работе, авторы предлагают заменить трансформерные блоки на поканальные и пространственные проекции, параметризованные матрицами Monarch.

Метод

Матрицы Monarch впервые появились в работе. Идея довольно простая - каждая матрица параметризуется последовательностью блочно-диагональных матриц, между которыми вставлены матрицы перестановок. Перестановочные матрицы эффективно обеспечивают dilation между размерностями матрицы. Вообще говоря, можно рассматривать последовательность нескольких dilation вида 1, N^{1/p}, … N^{p-1/p} , но в данной для простоты работают с p = 2. Количество параметров в такой матрице и сложность вычислений пропорциональна O(N^{3/2}).

В исходной статье про Monarch замена стандартных линейных слоев на Monarch в трансформерах сработала весьма недурно.
А в этой статье пошли дальше и используют монархов для обработки последовательности.

M2-миксер состоит из Sequence Mixer, содержащего длинные свертки и gating, и Dimension Mixer - обычная MLP с монархами в качестве линейных слоев.
👍2🔥1
Эксперименты

Предложенную архитектуру валидируют на ряде задач и архитектур:
1️⃣️️️️️ Masked Language Modeling на BERT
2️⃣️️️️️ классификации изображений с ViT
3️⃣️️️️️ Causal Language Modeling по типу GPT.

При тех же скрытых размерностях M2-BERT, M2-ViT имеет на 25-27% меньше параметров, чем базовая Transformer модель, при этом не уступая в качестве. А если увеличить ширину модели, чтобы сравняться по числу параметров, то имеет место даже некоторый прирост.
На Causal-Language Modeling предложенная модель тоже показывает себя немного лучше GPT-2.

Monarch Mixer заметно лучше масштабируется с длиной последовательности в соотвествии с теоретическими выкладками. На больших длинах последовательностей прирост порядка 9x против BERT-base с vanilla attention и 2x против Flash Attention. Ускорение наблюдается как на GPU, так и на CPU.

Вывод

Использование структурных матриц вместо матриц общего вида - интересное направление в разработке нейросетевых архитектур. При том же количестве вычислений возможно работать с картами признаков большей размерности. Однако, без крупномасштабных экспериментов на современных больших языковых моделях нельзя доподлинно оценить, обладают ли Монархи и иные представители бабочек лучшей масштабируемостью по сравнению с первозданным трансформером. Кроме того в сравнениях по throughput везде фигурирует Flash-Attention-1, а есть Flash-Attention-2 с еще лушчей утилизацией железа.
🔥4
ConvNets Match Vision Transformers at Scale
[Статья] [Кода нет, но у вас все равно нет JFT-4B и TPUv4, чтобы воспроизвести экспы]

Народная мудрость гласит, что трансформеры масштабируются лучше, чем сверточные сети при наличии большого количества данных и бюджета на обучение. Но убедительного экспериментального подтверждения в поддержку данной гипотезы никто не проводил ( В ConvNext-V2 имеется сравнение эффективности MAE-предобучения по сравнению с ViT, но на меньших масштабах данных)

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

Метод + Эксперименты

В качестве семейства сверточных сетей авторы рассматривают NFNet-ы, одно из последних достижений в разработке CNN, до того как ViTы завладели нишей. Разные модели семейства отличаются глубиной (больше номер - больше глубина), и шириной (+ - более широкая модель). Обучается все хозяйство на проприетарном JFT-4M и чипах TPUv4.

Результаты

Сверточные сети удовлетворяют похожим степенным законам убывания лосса от бюджета обучения, что и трансформеры.

При сопоставимых бюджетах сверточные сети выдают сопоставимое качество. Авторы учитывают использование более новых TPUv4 против TPUv3 в прошлых работах и потому дают поправку при сравнении бюджетов.

Самые большие модели из семейства, обученные в течение 100k+ TPU часов выдают 90%+ топ-1 точности на ImageNet-1k при дообучении на нем. Использование Repeated Augmentation для самой большой модели накидывает аж 0.1% на ImageNet-1k.

Вывод

Очередной голос в пользу того, что важны не сколько архитектурные детали, сколько количество данных и время обучения. На большом объеме данных inductive bias уже не имеет особого значения, но и трансформеры, вероятно, не обладают чудесными свойствами с точки зрения масштабируемости. Тем не менее, для пущей убедительности в данном отчете было бы неплохо увидеть аналогичные кривые лосса против часов обучения для семейства ViTов. Три точки, отвечающие трансформерам, недостаточно репрезентативны. Интересно, если провести подобный эксперимент для LSTM, с поправкой на утилизацию железа, будет ли наблюдаться подобная картина?
🔥1
😁14
QMoE: Practical Sub-1-Bit Compression of Trillion-Parameter Models
[Статья] [Код]

Сегодняшний пост можно считать юбилейным. Мой скромный канал преодолел психологический рубеж в 100 подписчиков, за что большое спасибо Милане @milana_shhanukova)

Введение

Современные алгоритмы post-training-quantization вполне успешно квантуют большие языковые модели в 3-4 бита, благодаря чему многомиллиардные модели становится возможным помещать на одну видеокарту.

Но, что если поставить еще более амбициозную задачу - уместить на одном хосте модель с триллионом и более параметров, например, гугловский Switch Transformer c 1.6T весов. Сие чудище настолько огроменное, что при квантизации в 4 бита не поместится даже на целую стойку A100, что уж говорить о более скромном сервере из RTX3090.

Оказывается, что данные модели обладают замечательной сжимаемостью; без заметной просадки в качестве их можно квантовать менее чем в один бит, что позволяет поместить самый большой Switch Transformer на 8 RTX 3090 (24 Gb) или 4 A6000 (48 Gb).

Метод

Рассматриваемый в этой статье класс моделей - смеси экспертов (Mixture of Experts / MoE) - состоят из Attention блоков, которые используются для всех входов, и множества реплик (от 128 до 2048 в семействе Switch Transformer) полносвязных блоков (2-слойных сетей), называемых экспертами, каждый из которых обрабатывает только часть входных данных. Специальная сеть (роутер), предсказывает, к какому эксперту направить данный токен.

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

Однако сама модель остается все еще очень большой и занимает много места в памяти. Деваться некуда - надо сжимать.
🔥7
GPTQ ранее показал сильный результат при квантовании больших языковых моделей, потому авторы статьи (его же создатели) берут его за основу. Однако, наивное применение сопряжено с определенными сложностями - для оценки гессианов нужно прогнать последовательности через каждого эксперта, которые хоть и небольшие, но их много. Авторы прогоняют последовательность через блок, и для каждого эксперта сохраняют в оперативную память активации, нужные для оценки гессиана, и распределение токенов. Чтобы повысить скорость алгоритма, квантизация нескольких экспертов проводится параллельно. 16 Экспертов, обрабатываемых параллельно дают прирост ~6x по сравнению с обработкой каждого эксперта по отдельности.

Чтобы все завелось, потребовался еще ряд мелких хаков :
1) более сильная регуляризация
2) использование округления к ближайшему целому вместо GPTQ, если матрица, оказалась плохо обусловленной
3) ограничение на число токенов для каждого эксперта, чтобы не создавать большие тензоры.

Кроме того, полезным оказалось не учитывать специальные токены при калибровке.

Для сжатия весов используется поканальная тернарная квантизация, когда каждый вес принимает только 3 значения - минимальное, 0 и максимальное. Обычно веса имеют нормальное распределение, сконцентрированное около 0, потому значительная доля весов (85-90%) становится нулевой. Потому возникает идея как-то использовать это свойство.

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

Потому авторы предложили свою схему энтропийного кодирования с фиксированной длиной символа, но кодирующее переменное число бит, которое может быть эффективно реализовано на GPU. Сжатие не Шеннон-оптимально, зато процедура кодирования позволяет эффективно использовать GPU. И далее описывается процедура и реализация CUDA kernel.
Эксперименты

Авторы рассматривают семейство моделей Switch Transformer - 7B, 26B, 1.6T параметров. По существу это encoder-decoder T5-модель с параллельными feed-forward блоками.

Switch Transformer обучался на Masked LM на C4, потому метод тестируют на валидационной выборке из этого датасета, замеряя перплексию. Вдобавок, замеряют аналогичным образом качество на нескольких подмножествах из RedPajama (open-source версии датасета Llama).

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

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

Прогонка алгоритма на одной A6000 занимает менее дня для самой большой модели.

Предложенная процедура кодирования весов дает небольшой оверхед к общему времени вычислений и итоговый прирост времени выполнения - всего 5% по сравнению с тем, что было бы у исходной модели, если ее можно было бы уместить на одну стойку (как я понимаю, оценивали скорость на основе одного блока attention + полносвязные эксперты).

Что же делает экспертов настолько легко квантуемыми? По всей видимости, сама процедура обучения и инференса, предполагает, что в большинстве вычислений данный эксперт не будет задействован, потому модель устойчива к отсутствию операций в большинстве слоев. Кроме того, накопление ошибки меньше, так как есть эффект от округления только части весов, а используемые во всех вычислениях attention слои неизменны. Обсуждение в GitHub issue.

Вывод

Крутой и практически полезный результат, мотивирующий дальнейшее развитие и большее широкое применение смесей экспертов. В то время как обычные языковые модели плохо сжимаются менее чем в 3 бита без значительной просадки в качестве, MoE допускают куда более агрессивное сжатие. Сама концепция MoE и условных вычислений кажется более чем естественной для foundation моделей - для решения задачи по алгебре, вряд ли полезно знать название всех персонажей в Сильмариллоне или формулу тринитротолуола. GPT-4 по слухам представляет собой смесь экспертов. Сдается мне, Llama-3 тоже будет MoE (запомните этот твит).
В недавнем ролике канал Veritasium затронул важную проблему популяризации науки.

Научный прогресс носит преимущественно инкрементальный характер, большие прорывы (если не говорить про DL) происходят редко и ценность многих результатов трудно обьяснить неподготовленной публике. Потому популяризаторы науки и СМИ прибегают к обману, чтобы набрать классов. Кликбейтные заголовки - greatest breakthrough of the 21 st century, future has come, вечный двигатель возможен, и тому подобное. Даже уважаемые издания, например, Quanta Magazine, грешат этим - в статье про кротовую нору они утверждают, что ученые создали кротовую нору, хотя в действительно речь идет о моделировании ее с помощью квантового компьютера. Результат на самом деле выдающийся, но тем не менее, до межгалактических путешествий, доставки алиэкспресс с Альфа-Центавры еще далеко. Результаты, опровергнутые впоследствии, цитируются в среднем больше.

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

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

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

На мой взгляд, основный потенциальный ущерб от недобросовестной популяризации науки, в том, что некоторые интересные и полезные отрасли могут не получать должного финансирования со стороны курирующих структур и насыщения кадрами. Тем не менее, пассионарии и ученые верящие в перспективы, полезность своей деятельности, или просто получающие кайф от нее, по всей видимости, будут заниматься ей вне зависимости от внешних обстоятельств. То же машинное и глубокое обучение до того, как проникнуть во все отрасли жизни, получить широкое признание, долгое время развивалось в относительном андерграунде.
👍5
Снимок экрана 2023-11-10 в 10.48.01.png
583.4 KB
Нет, это не печать с раскладкой на другом языке, и не вывод LLM, квантованной в один бит. Это список флагов интеловского процессора.
😁7
Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time
[Статья] [Код]

Гугл выдаст кучу статей с дежавю в названии:

🎉 Do SSL Models Have Déjà Vu? A Case of Unintended Memorization in Self-supervised Learning.
🎉 DejaVu: Conditional Regenerative Learning to Enhance Dense Prediction
🎉 DEJA VU: Continual Model Generalization For Unseen DomainsDeja-Vu: A Glimpse on Radioactive Soft-Error Consequences on Classical and Quantum Computations
🎉 Déjà vu: A Contextualized Temporal Attention Mechanism for Sequential Recommendation
🎉 Déjà Vu: an empirical evaluation of the memorization properties of ConvNets

Так что авторы немного прогадали с оригинальностью названия)

Перейдем же к сути дела.

Введение

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

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

Ускорить время работы сети без просадки в качестве можно не используя часть голов в attention или каналов в feedforward слоях.

Первая часть работы посвящена анализу внутренних представлений внутри сети.
Авторы делают два прямых прохода: на первом определяют каналы и головы с наибольшими значениями активаций, и на втором проходе используют только долю параметров, соответствующую самым большим активациям. Оказывается, что таким образом можно пропустить до 80% голов в Attention и до 95% в MLP слоях без существенного изменения выхода модели. Кроме того, оказывается что в большинстве голов attention размазан равномерно по токенам, и эти головы не выполняют никакой полезной работы.

При определении важных/неважных для конкретного входа параметров описанным выше образом приходится делать один проход с использованием всех параметров, потому толку от него как от козла молока. Можно ли как-то заранее определить нужные каналы?

Авторы рассматриваемой статьи делают следующее: берут обученную языковую модель и поверх нее обучают слои предсказывать, насколько релевантен вход данному каналу ffn / голове трансформера. На инференсе задается доля весов, которую мы хотим использовать, и берутся только измерения с самым высоким предсказанным скором. Выбор нулевых весов зависит от входа (то есть контекста) - потому sparsity носит прилагательное contextual.

Предсказывать важность канала/головы на основе активаций текущего слоя оказывается технически неэффективно, так как определение используемых для данного входа параметров и прогонка через блок должны осуществляться последовательно, что снижает утилизацию железа. Потому предлагается использовать активации с прошлого блока для выбора. Благодаря наличию residual connections активации слабо меняются от блока к блоку, потому активации прошлого блока служат хорошим приближением активаций в текущем блоке, и предиктор можно прогонять параллельно с attention и mlp блоком.
🔥5👍1
2025/08/27 23:48:59
Back to Top
HTML Embed Code: