Pull to refresh
31
2
Денис Кузнеделев@19blackadder97

Сжимаю нейросети я ради забавы

Send message

Сообщите, как появится, с удовольствием и интересом почитаю!

Рад, что было интересно.

FlashAttention - это, наверное, must have при обучении и инференсе сейчас. Берем обычно готовую реализацию от Tri Dao.

И вам уважуха за реализацию Flash Attention под turing. Видать задачка непростая, коли сам Tri Dao не взялся на нее. Даже есть issue на гитхабе, где он говорит, что если хотите законтрибутить - буду признателен.

Спасибо за ссылку на сравнение!

Я даже не знал, что коллеги продолжили исследование)

Спасибо за статью, довольно интересный результат!

Пара замечаний по содержанию:

  • в течение 200.000 эпох - по всей видимости, имело в виду шагов обучения (если только обучающая выборка не совсем крошечная). Иначе не представляю, как можно даже для маленькой GPT-2 прогнать столько итераций за 12 часов на 1 A100.

  • На рисунке с 4-мя графиками (Давайте разберем получившиеся графики по одному. ) на графике (a) в легенде оба графика зеленые. Наверное, предполагалось, что сплошные графики отвечают оригинальной модели, а пунктирные - грокнутой. Зеленый цвет - train по всей видимости, а синий - test.

Мне кажется по одному примеру еще более странно делать выводы про общее качество модели, тем более, что QwQ позицинируется как сильный компактный ризонер для решения задач по математике/логике/коду, требующих цепочек рассуждений. Никто и не обещал, что модель будет состязаться с DeepSeek-R1 в world knowledge, storytelling.

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

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

Еще пара примечаний по поводу памяти, требуемой для запуска моделей:

  • DeepSeek-R1 залит в специфичном fp8 формате и на картах более нового поколения (от Hopper/Lovelace) будет требовать ~650 Гигов

  • QwQ в половинной точности будет весить в районе 64 гигов VRAM, что далеко не пользовательский ПК. Но 4-битной квантизацией можно гонять на 3090 c не очень длинным контекстом.

Спасибо за интересную статью, захотелось сразу заботать наконец RL.

Кажется, что KL дивергенция должна быть вне знака матожидания в разделе про DPO, то есть минимизируемый функционал \mathbb{E}_{\pi_{\theta}(s|a)} \Vert r_{\psi}(s|a) \Vert - \beta KL (\pi_{\theta}(s|a) | \pi_{SFT}(s|a)).

Матожидание по (\pi_{\theta}(s|a) уже стоит по факту перед логарифмом в KL-дивергенции.

и одну книгу...

проблема есть - поиск оптимальной подсети, даже для одного линейного слоя - NP-сложная задача

Ряд современных подходов использует дистилляцию для обучения дифференцируемых параметров. AQLM и QuIP# оптимизируют L2 лосс между выходами исходной float модели и квантизованной после каждого блока трансформера, а затем минимизируют кросс-энтропию/kl-дивергенцию между выходами квантизованной модели и исходной. Довольно неплохо накидывает в качестве, и при этом сравнительно дешево. В этих подходах - векторная квантизация, когда квантуются веса не поодиночке, а группами (обычно по 8 подряд идущих весов).

В более классических подходах, рассмотренных в статье, можно обучать скейлы квантизации (своеобразный PEFT). И еще layernorm-ы, biasы, входные эмбеддинги и голова модели обычно держат в исходной точности.

Спасибо за статью - довольно подробный и интересный разбор с описанием функционала различной сложности.

В плане производительности существует ряд других альтернатив с быстрым препроцессингом изображений:

  • FFCV

  • DALI Интересно было бы видеть сравнение kornia c данными библиотеками. Правда, функционал kornia значительно шире, чем у приведенных альтернатив.

А вы используете какие-то кастомные ядра, типа Sputnik, SparTA, или nmSparse? Произвольный паттерн прореживания ускоряется не очень хорошо. 2:4 sparsity можно ускорить на Nvidia GPU, начиная с Ampere, но там ускорение порядка 20-30% обычно.

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

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

В разделе, посвященном первой статье, возникает где-то посередине картинка (блок-схема) с комментариямии на английском. Это не фича, а баг, в редактируемой версии ее просто не существует.

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

У знаменитого AI блогера Янника Килхера есть про это даже видео.

Здесь неплохой туториал по эффективному по времени и памяти. Рассказывается про стандарнтый способы уменьшить расход памяти - переход в half precision, gradient checkpointing, gradient accumulation и т.д.

Спасибо за статью. Есть пара вопросов.

А вы проводили ablation study? Типа что будет, если убирать по отдельности CE1, CE2, CE3, CE4?

Мне кажется, что конкатенация трех эмбеддингов возможно грубоватый метод. Можно было бы попробовать что-нибудь в духе Perceiver - иметь изначально какие-то обученные токены, и делать cross-attetion между этими токенами и эмбеддингами картинки и текста, а затем уже поверх них ставить ArcFace.

Да, похоже , пространство параметров в архитектурах еще мало исследовано. Здесь, правда замечу, что разница все же не так велика в производительности Swin и их ConvNext, более того, если сравнивать с XCiT, то они выйдут круче обоих моделей.

Стрелочка вверх означает разрешение 384x384, а \Ipsilon - дистилляцию
Стрелочка вверх означает разрешение 384x384, а \Ipsilon - дистилляцию

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

А вообще, кажется что оптимальная архитектура бы брала лушчее из двух миров - свертки с сильным inductive bias и attention со свойством улавливания глобального контекста.

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

Спасибо! Кажется, где-то мелькало мимо меня, но пристально не изучал. Стоит присмотреться)

Я бы сказал, что религия была лишь видимой причиной и оправданием Гугенотских войн, да и вообще всех конфликтов католиков и протестантов в Новое время. Протестантизм появился в это время, не потому, что всех достали католики и роскошь в образе жизни каноников, а как конфликт буржуазии (чьи доходы и имущество были получены за счет торговли) с родовой Средневековой аристократией.

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

Но все же можно добиться заметной пользы. Есть стартап neural magic и для некоторых моделей они добиваются серьезного ускорения за счет прунинга + квантования. На классификации и детекции ускорение серьезное (если верить цифрам).

1

Information

Rating
1,406-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity