TGViewer
Channel Public Channel
КПД

КПД

@quant_prune_distill

Квантование & Прунинг & Дистилляция

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

Группа с комментариями:
@quant_prune_distill_comments
Subscribers
3.49K
Photos
284
Videos
0
Links
501

Showing posts older than #830 · Back to latest

Older Posts 19 shown
Post #829 1.72K
🧩 Метод

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

Каузальный энкодер-декодер

Вместо привычной декодерной архитектуры используют энкодер-декодер а-ля трансформер из статьи Vaswani и T5. Однако мотивация за этим — экономить активные параметры на префилле, а также уменьшить размер KV-кэша.

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

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

Compressed Sparse Attention 2

В DeepSeek-V4 чередовались HCA (Heavily Compressed Attention) и CSA (Compressed Sparse Attention): одно сильно сжимало токены и делало полный аттеншен, а другое сжимало не так сильно и делало спарсный. Теперь аттеншен только один.

⚙️ Устроено оно так: поддерживается SWA (внимание со скользящим окном), которое внимает на последние токены, и иерархический sparse attention, который отбирает важные токены по всей последовательности с помощью обучаемой подсети, а потом компонуется со SWA. TopK считается на основе query/key-индексеров.

Существуют три режима слоя:

- 🔵 Full mode. Слой считает полный KV-кэш и сам определяет, какие токены ему нужны в спарсном attention. Самый гибкий, но дорогой случай.
- 🟡 Reindex mode. Используем KV-кэш с другого слоя, но считаем свой TopK, используя специфичные для данного слоя query.
- 🟢 Reuse mode. Переиспользуем как KV-кэш, так и TopK-индексы.

В энкодере на 1 Full Mode приходится 5 Reuse. В декодере — только Reuse и Reindex. Reuse к Reindex — в отношении 3:1. Потому кэш нужно хранить по факту лишь в небольшой доле слоёв.

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

Single-pass mHC

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

Engram

🧠 Дабы обогатить представления признаков условной памятью, накатывают Engram с 2-, 3- и 4-граммами. Наивно накатывать их выйдет слишком накладно — ни в какую память не влезет. Потому нужный эмбед достаётся через хэширование.

Дабы уменьшить риск коллизий, используют восемь независимых хэш-таблиц. Размер каждой из них — примерно 16M токенов, но берут разные простые числа, чтобы головы были более независимы. В Engram-таблице 198B параметров, распределённых между двумя слоями. Такой распил таблицы нужен для эффективного pipeline parallelism, чтобы не было перекоса в конкретную часть модели.

На выходы модуля энграмм навешивается гейт, который решает, надо ли и с какой силой добавлять информацию от Engram-эмбеддингов в данный токен. Хранится всё в FP8.

DSpark

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

FP4 Cache

💾 Чтобы сэкономить на хранении KV-кэша, его квантизуют в FP4. За основу берут NVFP4, но без global scale. Вместо этого данные нормализуют так, чтобы они укладывались в целевой диапазон.
  • ❤ 7
  • 👍 1
Post #828 1.53K
DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression

📄 Техрепорт

Ребята из Дипсика выкатили новую версию своей мультимодальной МоЕшки с сопутствующим техрепортом. И, как это любят и умеют делать только китайцы, нагородили всяческой инженерии по самое мама не балуй.
Post #827 1.79K
Design Docs Are All You Need: An AI-native Machine-Learning Performance Tool
📄 Статья

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

Может быть так, что проще не разбираться в том что уже есть и адаптировать под новые реалии, а взять и написать ML-либу с нуля на основе некоего скелета.

Авторы предлагают реализацию ML-либы в виде набора документов, образующих направленный ациклический граф (DAG), где расписывается структуру библиотеки, формат входов и выходов для отдельных операций. Более высокоуровневые операции можно делегировать моделям посильнее, нишевые куски - более дешевым. Все в итоге состоит из 50 файликов и 9000 строк спецификаций.

Написание либы через Claude Code поверх их документации требует примерно 100 баксов на API и 1.5-3 часа работы агента.

💡 Выводы

Сама либа из документов не выложена, нет примера реализации поверх документов агентов, бенчмарков, поэтому из статьи непонятно, насколько это хорошо работает. Но звучит прикольно.
  • ❤ 8
Post #825 1.67K
[Блог]

Мы сделали что-то очень крутое.

Не скажем что, но оно очень крутое.

Ставьте лайки и пишите комментарии.
  • 👍 11
  • 😁 9
  • 🔥 3
Post #824 1.91K
Метод

Сам метод донельзя прост:

- 📝 Не сжимаем промпт.
- 🎲 В каждом слое и голове случайно выбираем токены для выбрасывания.

И все!

Почему это работает?

Увидим ниже.

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

🧪 Эксперименты гоняют на семействе Qwen3 / Phi-4 (новые модели сжимать не так интересно, у них гребаные GDN-ы и SWA).

📊 Замеряют на бенчах по математике / STEM — где промпт короткий, а генерация довольно длинная.

🔍 Сравниваются с SnapKV, R-KV, Vase, TriAttention.

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

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

Почему так?

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

Потом проводят синтетический эксперимент со вставкой простого факта (число = тому-то) и делают его ретривал. По отдельности головы плохо предсказывают факт, но в совокупности, как оказывается, уже 2–3, а чем больше, тем лучше.

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

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

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

Где эвристики оказываются важны — это в задаче доставания passkey: если факт указывается в начале и не повторяется в процессе. Тогда случайный прунинг и все бейзлайны, кроме R-KV, лажают.

🚀 По throughput при сервинге (1k токенов на вход, 32k токенов на выход) на H200 через vLLM они оказываются быстрее TriAttention на 30–40%. Ускорение за счет того, что скоринг не требуется.

Выводы

Довольно интересный результат про сжимаемость KV-кэшей: как будто attention-based и прочие эвристики все равно не угадывают ничего лучшего, чем случайный выбор. Да и про размазывание информации по головам тоже интересное наблюдение, было бы интересно связать это как-то с interpretability. Однако у подхода есть серьезное ограничение — он не очень полезен, если сам промпт длинный.
  • ❤ 11
  • 🔥 2
  • 👍 1
Post #823 1.56K
Random Attention: Rethinking KV Cache Eviction for Efficient Reasoning

📄 Статья

С увеличением характерной длины контекстов в LLM все острее стал вставать вопрос о сжатии KV-кэша. Длинный KV-кэш занимает много места в памяти, а еще и замедляет инференс.

Исследователи за последние несколько лет придумали много эвристик по прунингу / слиянию токенов разной степени безумия — одна якобы лучше другой.

А тут вот ребята из Salesforce Research заметили, что рандомный прунинг работает, вообще говоря, не хуже всех этих хитроумных идей, а кроме того, предлагает более быстрый инференс ввиду отсутствия необходимости оценивать важность токенов.
  • 😁 12
  • 🔥 1
  • 🤣 1
Post #822 1.91K
Я разочарован Астрой.

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

А она, собака такая, за пару минут управилась.
  • 😁 45
  • 🥰 20
  • ❤ 1
Post #821 2.44K
Еще дедлайн подачи заявок не прошел, а чуваков уже приняли на ICLR 27.

Респект!

📄 Статья
  • 😁 32
  • ❤ 14
  • 🎉 4
  • 😭 1
Post #819 2.4K
А могли бы Joseph Redmon нанять для рисования графиков)
  • 🤣 20
  • ❤ 3
  • 👍 1
Post #818 2.21K
Сам дисклеймер
  • ❤ 7
  • 🔥 1
Post #817 1.8K
🧩 Метод

Мотивация следующая.

Омонимы пишутся одинаково, а могут иметь совершенно различный смысл в зависимости от контекста. Bank в английском — это банк и берег реки. В следующем примере из статьи по смыслу имеется в виду второе, но, увидев ATM, модель триггерится на первое и дает неверный ответ:

User: Fred took the day off work and pulled out his fishing pole. He drove
to the bank. When he reaches the bank, should he wear boots or flip flops?

Model: While flip flops may be more comfortable for a casual day, they are
not the best choice for fishing, especially at a river bank. Here’s why:
...

User: Is it likely that Fred will find an ATM at this bank?

Model: It is highly likely that Fred will find an ATM at the bank. Most
banks, especially those located near bodies of water popular for fishing,
have ATMs on-site for customer convenience.


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

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

Оптимальный выбор пары source/target слоев гридсерчат на некой калибровочной выборке и берут ту, где больше всего улучшается перплексия. Коэффициенты смешивания source/target слоев тоже перебирают по сетке.

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

Метод валидируют в основном на моделях семейства Gemma-3 (потому что там эффект наиболее выражен, ха-ха-ха) и самые удачные конфигурации дают улучшение перплексии до 5%.

На Ministral / Qwen3 / Pythia / Phi2 эффект куда слабее — максимум 0,5% улучшения.

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

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

На бенчах с коротким ответом статзначимого улучшения метод не дает. На GSM8k якобы есть прирост от recirculation. Но базовое качество претрейна Gemma3-4B — 29,3%, с которым сравниваются, — не соответствует 38,4% из техрепорта, потому есть здесь вопросики.

⚠️ Ах да, и самое веселое: в текущей ревизии перед секцией 4 авторы написали большой дисклеймер про то, что замеры перплексии в Gemma3 сломаны из-за того, что был неправильно учтен BOS-токен. Из-за этого, по всей видимости, такое хорошее улучшение перплексии у Gemma3 вышло.

💡 Выводы

Концептуально идея интересная, но насколько оно на реальных задачах работает из коробки и актуально ли для более современных моделей (обогащенных mHC / attention residuals), остается открытым. И методология / результаты экспериментов довольно спорные.
Post #816 1.65K
🔄 Recirculation

📄 Статья

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

В данной же работе исследователи из глубокого разума 🧠 предложили добавлять с каким-то весом скрытое состояние с прошлого шага, с более глубокого слоя, в текущий шаг, дабы обогатить его знанием после глубокой обработки.
  • 👍 6
  • ❤ 3
  • 🤯 1
Post #814 2.49K

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 😁 27
  • 🔥 1
Post #813 2.35K
презентации от Codex be like
  • 😁 17
  • 😢 11
  • ❤ 2
Post #812 2.53K
Страница курса Efficient Systems for Foundation Models от небезысвестного Tri Dao в Принстоне от осени 25-го года.

Полезна тем, что содержит в себе хороший список литературы для последовательного изучения предмета - от простому к сложному.
  • ❤ 14
  • 🔥 8
Post #811 2.2K
И ссылка на группу для комментов и обсуждений:
@quant_prune_distill_comments
Походу до нее не очевидно добраться)
Post #810 1.97K

Forwarded from Фарш не провернуть 💝

NVIDIA на днях выложила статью про перенос KV-кэша между разными моделями: маленькая модель читает промпт, большая отвечает из её кэша через линейный маппинг. Кода нет, анонса нет, ничего нет, только цифры с 8x H100. Ну я и решил проверить 🤨

Взял пару Qwen3 0.6B и 1.7B, две 3090, и собрал всё внутри vLLM, а не на синтетике: свой KV-коннектор, перенос через /dev/shm, ridge-маппер замкнутой формулой, 15 минут фита на FineWeb. Живёт всё как KV Connector для вллм.

Оно работает 😫 HellaSwag держит 94% качества, перплексия хуже всего на 10%. TTFT на 32K контексте падает с 3657 до 1645 мс, в x2.22 🤌🏻 Под конкурентностью 8 прогретый путь тоже гуд, 2393 против 3928 мс на запрос, ноль сбоев за все прогоны.

У авторов 17-25x на паре 14B и 32B с NVLink, у меня 2.22x на PCIe, и короткие промпты проигрывают накладным расходам переноса. Окупается это дело на длинном контексте, где prefill больнее всего 📉

Код, коннектор и оба обученных маппера выложил 👇

https://github.com/alesha-pro/vllm-cross-model-kv
https://huggingface.co/anonymousmaharaj/vllm-cross-model-kv
  • 🙏 12
  • 🔥 9
  • ❤ 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →