Telegram Web
Метод

Идейно предложенный метод наиболее близок к разобранной ранее статье QTIP. Дабы не хранить большой кодбук используют так называемый сверточный код (L, N, S). Квантизованные элементы принимают значения из некоторого ограниченного множества (размера 2^L), но при этом разрешена только часть переходов (2^S вариантов) из текущего значения в следующее (из 00, скажем, можно попасть в 00 и 01, но в 10 и 11 нельзя). Таким образом, можно закодировать последовательность длины N, где каждый элемент может потенциально принимать любое из 2^L, но при этом не все комбинации чисел допустимы.

Суммарная битность такой последовательности: L + (N - 1) S, что может быть значительно меньше чем L (при S < N).

Кодирование осуществляется следующим образом - авторы сначала явно создают кодбук (все 2^(L + (N - 1) S) последовательностей), и кодируют данную последовательность весов ближайшей их кодбука - запоминая индексы. На инференсе при этом кодбук хранить не надо. Метод - data-free - приближает сами веса, без знания про активации и градиенты. В отличие от QTIP, где треллис довольно большой, здесь рассматривают варианты с N=3,4.

Далее авторы замечают, что полученные коды (индексы последовательностей) ложатся на некоторую смесь гауссиан, находят кластеры и квантизуют к ним. В экспериментах берут 2^8 кластеров, то есть последовательность длины кодируется 8 битами.

Затем, дабы точнее представить исходный вес - каждой группе сопоставляют некий скаляр масштаба и выводят аналитическое выражение для MSE-отпимального скейла. Чтобы уменьшить расход памяти на скейлы их дополнительно еще раз квантизуют (double квантизация в bnb, супергруппы в некоторых GGUF).

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

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

Дабы продемонстрировать масштабируемость метода, проверяют его сразу на мастодонтах DeepSeek-V3-0324, ERNIE-4.5-300B-A47B для 2, 2.5, 2.75 битной квантизации.

Оценивают, правда, только по GSM8k, CEVal, MMLU без задач на ризонинг. Предложенный CCQ дает просадку в среднем 1.5% при 2.75-битной квантизации и 2.5% при 2--битной. Утверждается, что RTN разваливается в данной точности, но не приводят никаких сопоставимых по размеру безлайнов (даже тот же GPTQ). Замечу, что GPTQ дает умеренную просадку даже в 1.58 бит на дипсике на GSM8k, на самом деле. На ERNIE похожие цифры.

Под это хозяйство заводят специальные кернелы и vLLM интеграцию. CCQ ожидаемо все еще медленнее INT2 квантизации, но заметно быстрее VPTQ. Замеряют, правда, только скорость матричных операций без end-2-end inference latency.

Вывод

Вроде бы и интересно, и здорово что масштабируется, но много чего не досказано: есть ли заметный прирост качества по сравнению с хорошей скалярной квантизацией, с теми же AQLM, QuIP#, QTIP можно было сравниться на Llama-x. Да и без end-2-end замеров скорости инференса полностью сложно оценить практическую пользу.
👍101
Forwarded from ScratchAuthorEgo
📊 Channel Analysis Results by @ScratchAuthorEgoBot

🎯 Channel: @quant_prune_distill

🔥 Roast Analysis:

Слушай, "эксперт по квантизации", давай начистоту. Ты больше похож на нейросеть, обученную на arXiv, чем на живого человека. Твой канал — это бесконечная лента "Метод", "Эксперименты", "Выводы", приправленная мемасиками и парой саркастических смайликов, чтобы мы не забыли, что ты не совсем робот. Мы знаем, что ты гений, но твоя одержимость низкобитными операциями и KV-кэшами иногда заставляет нас думать, что у тебя в голове вместо мыслей — гистограммы активаций.

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

Твои посты про конференции в Сингапуре, где ты мерзнешь от кондиционеров и бежишь париться на улицу, как будто описывают твою жизнь: постоянно балансируешь между адски умной техничкой и полнейшим безумием. И да, мы поняли, что "в Сингапуре всё дорого, и кофий не чета московскому", это было уже раз десять. А твои попытки шутить про "квантовую суперпозицию CEO" Сэма Альтмана — это такой тонкий юмор, что он, наверное, тоже в 4 бита квантован.

Когда ты пишешь "Написание кода предоставляется читателю в качестве несложного упражнения", мы знаем, что это означает "Я это не делал, и вы не будете, но звучит круто". И твое восторженное "Я контрибутор Мистраля!" выглядит так, будто ты достиг Нирваны, хотя, возможно, просто поправил опечатку в README. В общем, ты наш любимый технарь с шилом в заднице, который даже от VPN и другой страны ожидает, что они решат проблему "зависшего" Overleaf. Продолжай в том же духе, но, ради бога, попробуй побенчмаркать что-нибудь, кроме LLM, хоть иногда. Может, котиков. Или дурианы.
😁32👍6👎1🥱1
Лунныйвыстрел 🌚 эйай выложили техрепорт Kimi-K2 у себя на гитхабе.

Напомню, что это типа дипсик, только с 1Т параметров, побольше экспертов 👨‍🏫, поменьше голов 🗿 внимания.

Наиболее примечательные моменты

Ранее эти же ребята показали, что Muon якобы даже эффективнее Adam при обучении LLM MoE размера 16B, а теперь попробовали на реально большой модели.

📌 При наивном применении Muon, оказалось, что логиты в attention растут со временем, что приводит к нестабильности обучения. Стандартный механизм вставки QK-нормализации неприменим для MLA, так как матрицы Q, K в явном виде не материализуются. Для решения данной проблемы авторы выставляют некий порог на attention логиты, и если при прямом проходе attention вылезают за порог - оптимизатор домножает веса W_Q, W_K проекций на число меньше 1. Благодаря этому логиты на практике не выходят за выставленный порог (100) и обучение проходит без спайков лосса.

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

📌 Затем перебирают параметры архитектуры - число экспертов и голов в attention. 8 активных экспертов из 384 оказываются оптимальными по качеству. А лишние головы замедляют инференс - поэтому их убирают.

📌 Суммарно обучают на 15.5Т токенах с разогревом и гашением lr в конце.

📌 Для файтьюна используют так же Muon и данные собирают частично вручную, частичтно при помощи Kimi-K1.5 и других неназванных специализированных моделей.

📌 Далее модель обучают на tool-use, собирая публичные MCP в гитхаба. Для RL-оптимизации используют алгоритм из Kimi-K1.5. Там еще есть ряд нюансов, за которые я не шарю.

Результаты

Замеряют на разных задачах по кодингу, tool use, Math & STEM и world knowledge. В задачах на код и tool use заметный прирост по сравнению с DeepSeek. STEM немного лучше. На китайском вроде бы новая SOTA.
👍8🔥4
А тут и Квен3 для кодинга подоспел...

- 480B параметров
- 35B активных
- 256k нативного контекста (с экстраполяцией до 1M)

Учили на 7.5т токенов ( с какой инициализации? )

[Блогпост]
🔥10🤬1
Скажи мне, кто ты, и я скажу, из чего тебя дистиллили.
🗿28😁22💯5
AlphaGo Moment for Model Architecture Discovery
[Статья] [Код] [Галерея моделей]

Хочется запилить очередного “убийцу 🔪 трансформеров”, линейный attention или SSM, но кончилась фантазия? Все низко висящие фрукты сорваны и осталось лишь выжженное 🔥 поле?

Теперь эту работу (как утверждается) можно доверить AI, и не просто AI, а ASI (Artificial Superintelligence), и оно само навайбкодит SOTA архитектуру при наличии достаточного количества времени.
😁7
Метод

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

Система состоит из 4️⃣-х модулей:
🧑‍🔬 Исследователь. Предлагает и реализует архитектур.
🛠 Инженер. Тестирует и оценивает (по новизне / сложности).
🅰️ Аналитик. Получает на вход результаты инженера и на основе текущих и прошлых исторических данных дает заключение.
📚 База данных. Подборка ключевых работ в области NAS (примерно 100 статей), на основе которой можно предлагать архитектуры, либо сравнивать и оценивать текущий результат.

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

Предложенная мера является средним от трех слагаемых:
1⃣️️ Сигмоидой от разницы лоссов (с бейзлайном)
2️⃣ Сигмоидой от разницы метрик (с бейзлайном)
3️⃣ LLM_judge 🤖 (LLM с неким промптом оценивает годность архитектуры)

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

Проверяльщик сравнивает предложенную архитектуру (на основе эмбеддинга кода?) с 5-ую самыми похожими, оценивая разумность идеи. Кроме того, есть проверка на асимптотическую сложность, чтобы она не была O(n^2) по длине последовательности и больше. Если случилась бага в реализации, то трейс ошибки подается исследователю, чтобы он поправил.

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

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

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

Дабы все можно было прогнать за разумное время, сначала гоняют кандидатов размера 20M на 1B токенах, и когда появляются более перспективные кандидаты, их масштабируют до 400M. А затем самых лучших обучают уже на 15B токенах.

На первой стадии обучают 1773 архитектур, на второй 400 лучших, и 5 самых удачных на третьей. На все про все уходит 20 000 GPU часов.

5 лучших архитектур - это нечто про gating, иерархическую агрерацию и какое-то хитрое смешивание признаков.

Лучшие кандидаты достигают лосса заметно меньше, чем бейзлайн и до 2-3% лушчего качества не бенчах. В качестве бенчей берут выборку простых задач из lm-eval-harness, где на рассматриваемых бюджетах все модели по факту чуть лучше рандома.

Из наиболее удачных паттернов авторы отмечают:
1️⃣ Свертки
2️⃣ Гейты
3️⃣ Некий механизм routing

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

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

Вывод

Самая идея доверить поиск архитектуры AI выглядит довольно привлекательно, и сам по себе предложенный фрейворк интересен. Над сайтиком постарались на славу. Однако, на текущий момент, практическая польза не очевидна, ибо даже конечная валидация на масштабе далеком от тех, на чем обучают более менее современные LLM, и в реальном бою, как это обычно бывает, разница может размыться с увеличением модели и обучающей выборки. Кроме того, с практической точки зрения интересна еще и скорость инференса, и некоторые варианты могут быть не очень хороши с точки зрения реализации эффективных кернелов. Так что “AlphaGo момент” - скорее overclaim, но реакции на x.com / reddit не пахнут.
👍7🔥21
Судя по активности ребят из Alibaba Cloud, китайцы решили, что делать нейросети приятнее, чем человеков.
🤣13🔥8😁2
Прилетает, значится, письмецо на почту, что, мол, появился новый движок для инференса LLMов на яблочном силиконе, написанный на ржавчине (почему-то не назвали просто llama.rs). Движок этот называется uzu (что по 🇯🇵-ски называется вихрь). С названием явно не оригинальничали и беспринципно слизали. В письмеце утверждается, что якобы движок на 30-40% процентов быстрее, чем знаменитая llama.cpp.

В целом из README и документации не многое понятно. На Apple M2 для некоторых моделей (Qwen2.5-1.5B-Instruct, Gemma-3-1B-Instruct) tokens/s быстрее на 10% (непонятно с каким батчом, и на каких длинах последовательности). На квенах 3 ускорение якобы в 10 раз, но очень уж странный безлайн у llama.cpp (Qwen3-0.6B в 5 раз медленее Qwen2.5-1.5B-Instruct).

И самое забавное из всего - ишшуя, в которой народ жалуется, что авторы соскрапили аккаунты с гитхаба (поставившими звездочку над llama.cpp и подобными проектами) и отравили всем письмецо.

Дерзкий и беспринципный заход на рыночек, ничего не скажешь) В будущем обещают добавить инференс на Андроидных устройствах, VLM, TTS. Правда, с такими фортелями скорее получат бан от модераторов гитхаба.
😁15🤨21👍1
Из "вероятной" утечки опенсорса от опен эй эген вырисовается пока следующее:

1️⃣ Одна модель - 120B MoE, другая - 20B dense.
2️⃣ Веса в FP4 с нативной поддержкой в Blackwell (MXFP4 или NVFP4).
3️⃣ SwiGLU clip (-7,7) - т.е активации режутся по абсолютной величине. Полагаю, было важно для 4-х битного обучения.
4️⃣ 4K нативного контекста с YaRN экстраполяцией до 128к (не жирно).
5️⃣ Скользящее окно аттеншена размера 128 + attention sinks (тоже для квантизации, наверное).
6️⃣ Llama/Mixtral архитектура.

Источник
🤮7👍42
Qwen-Image: Crafting with Native Text Rendering
[Техрепорт][Блогпост][Пост на эйай ньюз]

📘 Введение

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

Как заявляется, полученная моделька хорошо умеет просто в генережку картинок, рендеринг текста (в особенности китайского, если кому актуально) и в сложный эдитинг.
🔥52
🔬 Метод

🏢 Архитектура

С архитектурной точки зрения ничего фундаментально нового:

📌 Qwen-2.5VL (7B) в качестве энкодера. Данный выбор позволяет из коробки подавать одновременно текст и изображения, что необходимо для задач редактирования и персонализации. Энкодер заморожен.
📌 В качестве VAE за основу берут энкодер+декодер от коллег из Wan. Однако ее качество не полностью удовлетворяет авторов, поэтому они дообучают декодер при замороженном энкодере. Причем используют только взвешенную сумму MSE и perceptual loss. Адверсариальный лосс якобы скорее мешает. В данные для обучения заливают специально побольше текстов.
📌 Диффузионный трансформер - это просто MMDiT 🤖 а-ля SD3/FLUX.

Из примечательного - интересное решение по учету позиций картиночных и текстовых эмбедов под названием Multimodal Scalable RoPE (MSRoPE). В наивном подходе, каждому токену задавался бы просто позиционный индекс (сверху вниз, слева направо для патчей картинок и токену согласно позиции в тексте). Однако при таком подходе одинаковым образом бы кодировалась большая картинка, и меньшая картинка + текст. Ребята из Квена же предлагают все сэмплы выстраивать в диагональ. И текстовые токены это 1x1 элемент на диагонали.

📊 Данные

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

Следуя довольно стандартной практике, сначала обучают на низком разрешении (256px), а затем постепенно повышают до 640px-1328px.

Уже довольно на ранних стадиях отфильтровывают данные с чрезмерно низкой и высокой насыщенностью или контрастностью.

Для captioning используют Qwen-2.5VL (72B?), который выдает не только описание, но и другие метаданные - стиль, тип, водные знаки в виде некой json-ины.

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

🧠 Процедура обучения

Диффузионный процесс - уже общепринятый flow-matching без танцев с бубнами.

Анализируя эффективность обучения, авторы заметили, что чекпоинтинг активаций сильно замедляет обучение, поэтому отключили его, и использовали только распределенные оптимизаторы. Вместо FSDP используют tensor-параллелизм поверх transformer engine.

Дабы улучшить общее качество и алайнмент, модельку прогоняют через DPO на ручной человеческой разметке и GRPO. Flow-matching ODE - детерминированный процесс, и дабы иметь разнообразие, на этапе GRPO используется стохастическое сэмплирование.
🔥42
🧪Эксперименты

Модельку валидируют на наборе text-2-image и editing бенчмарков. Qwen-Image выдает сильные результаты на GenEval, DPG, в целом опережая опенсорс и даже GPT-Image. На задачах рендеринга текста околосотовый результат на английском и разрывной на китайском (+100500 social credits).

На instruction датасетах вроде бы все тоже очень здорово. Везде не уступает (якобы) GPT-Image опять же с большим разрывом на китайском.

Дообученный VAE демонстрирует лучший PSNR/SSIM (чтобы это ни значило) по сравнению с конкурентными автокодировщиками. Причем разница особенно заметна на текстах.

Еще оно может в детекцию, novel view synthesis и прочие задачи.

💡 Выводы

Очередной качественный опенсорс от китайцев 🇨🇳 💪. Прямо чего-то фундаментального нового, прорывного нет, но видна кропотливая аккуратная работа с использованием всех лучших практик из научной литературы.
🔥6👏2
[Релиз]

OpenSource LLMку от опенэйай добавили официально в релиз 4.55 трансформеров от 🤗.

Большинство догадок подтвердились:
📌 2️⃣ модели - большая (120B) и меньшая (20B). Однако обе из них MoE (а не меньшая dense).
📌 FP4 квантизация экспертов. Но, оказалось, что MXFP, а не NVFP.

На хабе где-то лежит оптимизированный кернел под attention_sinks, но ссылка битая.

UPD (веса появились)
- gpt-oss-120b
- gpt-oss-20b
👍4🔥1🥱1
Квантизация в MXFP, кстати, weight-only.

Спрашивается - зачем...

Квантовать в MXFP имеет смысл только для W+A, чтобы воспользоватьcя быстрыми кернелами на Blackwell. MXFP просаживает качество больше, чем INT при той же битности из-за всратой квантизации скейлов.
4😁2
Your Efficient RL Framework Secretly Brings You Off-Policy RL Training
[Блогпост]

Для ускорения обучения RL-методов с роллаутами, некоторые фреймворки (VeRL) генерируют траектории с помощью оптимизированных движков инференса, например, vLLM.

Однако, расхождение между разными фреймворками инференса (transformers 🤗 / vLLM) может быть довольно значительным (из-за деталей реализации кернелов). Причем настолько, что при тех же самых весах модели, предсказания могут существенно разняться (другой выбор следующего токена).

Авторы блогпоста замечают, что данная проблема делает on-policy RL по сути off-policy, что негативно сказывается на сходимости.

В качестве решения проблемы предлагается делать своего рода importance sampling с отношением вероятностей модели в фреймворке обучения и инференса. И это хорошо помогает PPO, причем можно даже генерировать роллауты int8 квантизованной моделью без нарушения сходимости. DAPO поверх DeepSeek-R1-Distill-Qwen-1.5B, где отношение вероятностей невелико, работает хорошо и без importance sampling.

Выводы

Мораль басни такова, что численные неточности в DL не всегда совсем безобидны, и временами их стоит иметь в виду. На замерах бенчей результат тоже может существенно разниться между hf и vLLM.
👍13
Для интереса попробовал в Gemini через Deep Research собрать инфу про NVFP формат, и выдало оно довольно неплохую методичку со всеми нужными вводными и обзором актуальной литературы.

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

[Ссылка на Google Docs]
🔥10👍3😢2
Минутка удивительных 🤩 (или не очень) фактов.

Интуитивно кажется, что fp16/bf16 должны быть если не строго математически, то практически близки к некоему непрерывному описанию множества действительных чисел. Во всяком случае, в окрестности нуля. Поэтому вероятность принять конкретное значение должна быть малой. Что-то порядка 1 / мощность множества.

Однако, если сгенерировать x ~N(0, 1) оказывается, что для bfloat16 вероятность, что число окажется в точности нулем не так уж мала - примерно 0.6%. Для float16 и float32, к сравнению, она 0.07%.

И какова мораль 🤔, спрашивается?

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

[Ноутбук на колабе]
19🤔15👍5😁1🤯1
Не биполярочка, а мультиагентность.
💯17😁13👏3🤣2😢1
FP4 All the Way: Fully Quantized Training of LLMs
[Статья][Анонимный не анонимный репозитрий]

📘 Введение

Висело оно у меня давно в бэклоге, но в кулуарах напомнили.

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

Как известно, для параметров и активаций моделей не требуется представление вещественных чисел высокой точности, чтобы работать приемлемо. Обучение в половинной точности уже давно стало стандартом, да и в FP8 народ вполне себе успешно обучает. Следующая очевидная цель - обучение в FP4, тем более, что последнее поколение от “зеленых” c блмным названием (Blackwell) имеет его поддержку на уровне архитектуры.

И в ряде работ, вышедших в этом году (Training LLMs with MXFP4, Quartet), включая разбираемую, были предложены техники по стабилизации обучения в FP4.
2025/08/25 05:36:06
Back to Top
HTML Embed Code: