cookie

Utilizamos cookies para mejorar tu experiencia de navegación. Al hacer clic en "Aceptar todo", aceptas el uso de cookies.

avatar

КПД

Квантование & Прунинг & Дистилляция Блог про сжатие сетей и не только. От древнейших времен по настоящее время.

Mostrar más
Publicaciones publicitarias
887
Suscriptores
+424 horas
+157 días
+20130 días

Carga de datos en curso...

Tasa de crecimiento de suscriptores

Carga de datos en curso...

Не проплаченной рекламы пост. Хочу порекомендовать канал То Шо Нейросети. На данном канале вы можете найти сборную солянку интересных и полезных материалов во всякой всячине, связанной с нейронками. И более чем годные туториалы от самого автора. В частности, внимания заслуживает недавняя ветка постов про Liquid Neural Networks. И реализация Мамбы с нуля.
Mostrar todo...
9🥰 1
TerDiT: Ternary Diffusion Models with Transformers [Статья ][Код инференса] LLMки не квантовал за последние год-два только ленивый, потому назрело время осваивать и другие ниши. Квантование диффузионных моделей на текущий момент пока не столь исследовано, как LLMки, в связи с тем, что сами модели не доросли до своих собратьев из NLP, потому и не было столь острой необходимости. Тем не менее, прогресс не стоит на месте, и стоит быть готовым к дальнейшему масштабированию диффузионных тушек. В рассматриваемой статье авторы перенесли метод тернарной квантизации (quantization-aware-training) QAT из BitNet1.58 на DiTы для class-conditional генерации на ImageNet. Квантуют только веса (активации остаются в исходной точности). Метод По существу ничего нового по сравнению с BitNet1.58, веса обучаются через straight-through estimator (STE) с большим learning rate. Единственное нововведение - нормализация на выходе AdaLayerNorm. Авторы обнаружили, что тернарные веса выдают большие активации, и scale/shift/gate модуляции слишком велики, чтобы сетка могла нормально сходиться. Навешивание RMSNorm на конец MLP для получения модуляций решает проблему. Эксперименты Метод валидируют на DiTах двух размеров - с 600M параметров (примерно как DiT-XL из оригинальной статьи) и 4.2B параметров - на class-conditional генерацию на ImageNet 256x256. По метрикам, тернарная 4.2B модель примерно равна DiT-XL, 600M несколько хуже. То есть для большой модели близкое качество к floating point модели при чуть меньшем общем размере модели (параметров больше в 7 раз, бит на параметр ~10 меньше, чем в fp16). Справедливости ради, стоит заметить что TerDiT обучался меньшее число итераций по сравнению с моделью из статьи фейсбука. С инференсом немного грустненько 😢 получилось. Для работы с тернарными весами берут кернелы из HQQ и деквантизуют на ходу. Квантованные модели медленнее 😱 fp32 на 20-25%, а при опущенном сравнении с fp16 замедление было бы порядка 3 раз. Зато неплохая экономия по памяти. 4.2B моделька есть 3Gb видеопамяти на пике при инференсе. В приложении еще зачем-то показывают что существующие 4-битных квантизации ломают полностью DiT. Берут, правда SmoothQuant, который в отсутствие квантования активаций, вырождается в round-to-nearest (RTN), т.е самый наивный и грубый метод, при существовании куда более сильных PTQ методов для диффузии (Q-Diffusion, PTQ4DM). Вывод С одной стороны, очередное подтверждение того, что тернарный QAT как-то да работает. Однако результат куда скромнее того, что получили для LLM майкрософты, и с таким замедлением инференса вряд ли интересен практикам. Тем не менее деятельности представляет определенный интерес, и развитием эффективных алгоритмов QAT, вероятно, тернарные модели вполне могут быть около Парето-оптимальными. Во всяком случае, в некоторых приложениях.
Mostrar todo...
👍 6 3
Квантование KV-кэшей добавили в 🤗! [Блогпост] Чтобы не пересчитывать каждый раз все заново при авторегрессивной генерации, в трансформерах используются kv-кэши, ключи и значения, посчитанные для прошлых токенов, сохраняются в памяти и используются при подсчете attention для каждого нового токена. Однако есть проблема - если последовательность длинная, кэш слишком тяжелый становится. Для 🦙 (1 или 2) 7b для 10к токенов потребуется 5Gb памяти (2 * 2 * 32 * 32 * 128 * 10000 ≈ 5GB). А для более крупных моделей и , если контекст переваливает за миллион, страшно представить сколько. Существуют разные подходы к сжатию KV-кэшей, и один из наиболее очевидных - квантизация кэша, преставление ключей и значений в более низкой битности. Метод В работе KIVI предложили 2-битное ассиметричное (с zero point) квантование кэшей. Ключи квантуются поканально, значения - по токенно. Поканальное квантование помогает бороться с outliers. В HF использует по-токенное квантование для ключей и значений из соображений скорости, несколько жертвуя качеством. Кроме того, чтобы немного улучшить качество, самые свежие 128 токенов держат в исходной точности. Они обычно самые важные для текущего токена, и не добавляют много памяти для длинного контекста. HF поддерживает два метода квантизации: - quanto (простой rount-to-nearest) - hqq Оба метода data-free. Валидация На замерах перплексии на Llama-2-7b на PG-19, 4-битный HQQ не просаживает качество, а quanto_int4 умеренно просаживает. 2-битные квантизации сильно роняют качество. На LongBench в 4 битах почти нет просадки по качеству. На длинных последовательностях удается достичь до 2.5x экономии потребляемой памяти. Скорость, генерации, однако замедляется так как на текущий момент нет оптимизированных ядер. Просадка по скорости 30-50% судя по графикам (крайняя правая точка на графике number_of_tokens/sec явно забагованная). Кроме того, данная стратегия помогает именно на стадии генерации, а заполнение промпта (pre-fill) приходится делать стандартным способом. Метод совместим с Flash Attention. Использование Достаточно установить quanto, и прописать аргументы в методе .generate.
Mostrar todo...
👍 20
Photo unavailableShow in Telegram
С приближением дедлайна NeurIPS частота сообщений про новый revision стремительно нарастает...
Mostrar todo...
18😁 5 2😨 2
Photo unavailableShow in Telegram
Чем ближе к дедлайну, тем
Mostrar todo...
Что у вас приходит первым на ум при слове КВАНТ?Anonymous voting
  • Что-то из физики элементарных частиц
  • Что-то из экономики
  • Что-то про сжатие нейронок
  • Свой вариант
0 votes
Судя по количеству создателей, имеет место scaling law не только по размеру модели и обьему данных на обучении, но и числу рисерчеров при обучении LLMок.
Mostrar todo...
😁 18🍾 3
Полагаю, многие уже успели восхититься выдающимися возможностями нового детища от OpenAI - GPT4o. Детальный разбор и сводка имеющейся информации приведена в постах Сиолошной, так что дабы сэкономить на генерации собственных токенов я не буду повторяться. На мой взгляд, самое удивительное во всем этом, что новая модель, не только стала лучше, обрела новые возможности и кучу мелких и крупных плюшек, но и стала дешевле в использовании. Безумно любопытно, в чем же секрет столь эффективного и быстрого инференса при сохранении высочайшего качества? Подозреваю, что там весьма нетривиальное сочетание алгоритмов сжатия и ускорения, разных оптимизаций движка. Вероятно, и архитектурные навороты - смесь / несмесь экспертов (может в ширину, а может и в глубину). А может просто большой трансформер без причуд?) И возможнось бесплатного пользования моделью (хоть и в ограниченном количестве) - очень неожиданный ход от OpenAI, которые хоть немножечко, но приоткрылись) Но думаю, что все продумано, не разорятся на этом жесте доброй воли...
Mostrar todo...
🤔 9👍 2 2
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 (так как словарь большой). В будущем планируем попробовать посжимать и эмбеды / языковую голову.
Mostrar todo...
👍 26🙏 5
Абитуриентов в принципе можно евалить как LLMки. Вместо ЕГЭ давать MMLU_ru. А на вступительных давать проверяющему (которого можно заменить GPT4 или Зелибобой) ответы двух абитуриентов (без указания их имен) и затем отсекать по ELO score.
Mostrar todo...
👾 28