Conditional Program сжимает n-gram память DeepSeek с 203 до 51 ГБ при 2 битах
Условная память расширяет ёмкость языковой модели через выборочный поиск по таблице, но хранить приходится всю таблицу целиком. Авторы новой работы представили Conditional Program (CP): каждая строка кодируется коротким 2-битным кодом и локальным масштабом, а программа реконструкции общая для всей таблицы. В основе гауссова решётка (trellis), восстановление нормы и независимо декодируемые записи строк. Выходная KL-дивергенция падает на 41–63% относительно 2-битного round-to-nearest. Для DeepSeek таблица уменьшается с 203 до 51 ГБ. - Две бита на код, локальный масштаб на строку - KL ниже на 41–63% при том же битовом бюджете - 203 ГБ → 51 ГБ, таблица помещается на GPU
AI-обработка оригинала Hugging Face Daily Papers; редакция Hamidun News
Таблицы n-gram памяти дают языковой модели дополнительную ёмкость почти без роста вычислений: на каждый токен читается лишь несколько строк. Но платить за это приходится объёмом. Чтобы ответить на любой возможный вход, в доступе должна лежать вся таблица. Новая работа с Hugging Face Daily Papers предлагает формат Conditional Program (CP), который хранит строки в двух битах на код и восстанавливает только те, что запросил вход. Для таблицы DeepSeek размер падает с 203 до 51 ГБ, а выходная KL-дивергенция оказывается на 41–63% ниже, чем у наивного 2-битного округления.
Как устроен CP
Идея в том, чтобы не квантовать таблицу как монолитный тензор, а описать каждую строку компактной записью. У строки есть короткий код и локальный масштаб. Программа, которая превращает код обратно в вектор, у всех строк одна. Она хранится один раз на всю таблицу и почти ничего не стоит в пересчёте на строку.
Авторы реализуют это тремя компонентами. Первый — гауссова решётка (trellis), то есть структурированный кодбук, в котором код выбирает путь по решётке, а не запись в явном списке. Второй — восстановление нормы: после декодирования длина вектора возвращается к исходной, чтобы квантование не сдвигало масштаб активаций. Третий — независимо декодируемые записи строк. Это ключевое требование для условной памяти: чтобы прочитать одну строку, не нужно разжимать соседние блоки.
Именно последнее отличает задачу от обычного сжатия весов. Там декодирование идёт пачками по слоям. Здесь обращение случайное и редкое, и формат должен выдерживать произвольный доступ.
Что показали измерения
Авторы проанализировали три обученных семейства n-gram памяти. Вывод двойной. Статистика отдельных координат близка к гауссовой, поэтому гауссова решётка подходит. При этом между строками остаются выученные связи, и их нельзя считать шумом. Тем не менее при одинаковом бюджете хранения общая решётка обошла и подогнанные под данные кодбуки, и варианты с низкоранговой поправкой (low-rank residual), которые проверяли авторы.
Ключевые цифры из аннотации:
- код: 2 бита на элемент плюс локальный масштаб на строку;
- выходная KL ниже на 41–63% относительно 2-битного round-to-nearest;
- таблица DeepSeek: 203 ГБ → 51 ГБ, то есть примерно в 4 раза;
- формат: общая программа реконструкции, независимые записи строк;
- проверка на трёх семействах обученных n-gram memory.
Отдельно про четырёхкратный выигрыш. Если исходная таблица хранится в 16 битах, чистые 2 бита дали бы восьмикратное сжатие. Откуда разница, в аннотации не сказано. Накладные расходы на масштабы и записи строк могут быть частью объяснения, но это стоит проверить по полному тексту статьи.
Практика: куда уходит освободившаяся память
Главный практический эффект сформулирован в самой работе: когда таблица лежит на GPU, освободившиеся гигабайты можно отдать под более крупные нагрузки. Это длиннее контекст, больше одновременных запросов, крупнее батч. Память видеокарты почти всегда упирается в KV-кэш, и 150 ГБ экономии на таблице напрямую превращаются в запас под него.
Для команд, которые разворачивают модели с условной памятью, есть ещё один вариант. Таблицу в 51 ГБ проще держать целиком на ускорителе, чем 203 ГБ, и не выносить её в хост-память с задержками на каждое обращение. Это снимает один из главных аргументов против n-gram памяти в продакшене.
Осторожность тоже нужна. Метрика качества в аннотации — KL выходного распределения, а не набор бенчмарков по задачам. Прежде чем закладывать CP в инференс-стек, нужно посмотреть, как 2-битная таблица ведёт себя на реальных задачах и какова стоимость декодирования строки на GPU при высокой нагрузке. Но направление понятно: у условной памяти теперь есть способ платить за ёмкость не терабайтами, а десятками гигабайт.
Системное обучение работе с ИИ и AI-агентами
Образовательная платформа Vibe Academy (vibe-academy.ru) — практические курсы, промпт-инжиниринг, автоматизация процессов и прикладные AI-воркфлоу.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.