← Все статьи

Нейросеть по рецепту: веса считают, а не хранят целиком

Обзор на Habr: гиперсети, Kilobyte Models и SeedLM — компактный «рецепт» вместо гигабайтных матриц и чем платят за экономию места.

Нейросеть по рецепту: веса считают, а не хранят целиком
Содержание

Коротко

На Habr вышел длинный обзор исследований, где вместо гигабайтных матриц весов предлагают хранить короткий «рецепт» — правило, по которому нужные числа можно собрать в момент работы. Это похоже на кулинарную карточку вместо морозилки, полной готовых тортов: места меньше, но перед подачей всё равно придётся готовить. Автор проходит путь от гиперсетей и координатных генераторов до Kilobyte Models и SeedLM для LLM и отдельно считает три бюджета: диск, рабочая память и время вычислений.

Что произошло

Обычная схема знакома каждому, кто ставил локальную модель: файл весов на диске, затем загрузка в видеопамять — целиком или блоками. Для Qwen2.5-7B-Instruct в BF16 это уже около 15 ГБ; у гигантов вроде Kimi-K3 речь идёт о триллионах параметров и терабайтах даже при грубом четырёхбитном учёте. Обзор спрашивает иначе: можно ли пользоваться сетью, не храня матрицу как список всех элементов, а восстановив её из компактного описания?

Самый прямой ход — гиперсеть: маленькая сеть порождает веса большой. На Wide ResNet для CIFAR-10 число параметров падает с миллионов до долей миллиона, но ошибка классификации растёт. Позже появляются координатные предикторы вроде NeRN и Big2Small: на вход идут индексы слоя и канала, на выход — ядро свёртки. На ResNet18 и ImageNet точность почти сохраняется (примерно 71,5% → 71,2%), а файл сжимается сильнее, если рецепт сочетают с квантизацией — правда, задержка вывода в одном из замеров выросла примерно на 30%.

Дальше рецепт укорачивают ещё сильнее. В Kilobyte Models хранят зерно генератора (seed) и короткий обучаемый латент; для небольшой CNN описание укладывается примерно в два килобайта при точности, близкой к полной модели на MNIST. SeedLM переносит идею на уже обученную LLM: у каждого блока весов своё зерно и коэффициенты смеси на базе регистра сдвига. На Llama 2-7B неопределённость предсказания (perplexity) на WikiText-2 чуть портится при 3–4 битах на вес; на Llama 3-70B та же схема бьёт сильнее. Seed-Q и AWSRC добавляют неравномерные биты и компактную поправку к уже сжатой основе — качество подтягивается, но «магического архиватора для любой готовой модели» из этого не получается.

Почему это важно

Сжатие на диске и экономия рабочей памяти — разные обещания. Можно хранить рецепт в килобайтах, а перед проходом всё равно развернуть плотные веса и занять столько же видеопамяти, сколько и раньше. Можно генерировать блок, умножить, выбросить — пик памяти ниже, зато каждое восстановление добавляет вычисления. У LLM сверху ещё кэш ключей и значений внимания по предыдущим токенам: он живёт своей жизнью и от «красивого рецепта» сам не исчезает.

Есть и жёсткий потолок выразительности. Короткое описание при фиксированном декодере выбирает лишь крошечную долю всех возможных матриц. Поэтому Kilobyte Models учат сеть внутри семейства, которое генератор умеет воспроизводить, а не упаковывают произвольный снимок весов без потерь. Для разработчика, который мечтает «запустить LLM на каждом чайнике», как когда‑то игру Doom, это трезвый фильтр: часть работ даёт аппаратный выигрыш на ПЛИС (FPGA), часть — аккуратные цифры на ResNet, и почти нигде нет готового ответа «скачал рецепт — получил ChatGPT в браузере».

На практике

Текст — обзор чужих статей и препринтов, а не инструкция «выкинуть safetensors». Имеет смысл читать его как карту компромиссов, если вы выбираете формат весов, смотрите на слабые и встраиваемые устройства или сравниваете квантизацию с более экзотическими схемами.

  1. Разделяйте три бюджета: размер файла, пик памяти во время работы и цена восстановления весов на каждом проходе.
  2. Не равняйте «меньше обучаемых параметров» и «меньше гигабайт на диске» — в рецепт входят латенты, индексы, масштабы и оставшиеся обычные веса.
  3. Для уже обученной LLM смотрите блочные схемы вроде SeedLM: экономия локальна, а потеря качества зависит от размера модели.
  4. Если нужен минимум на диске без ускорения вывода — это нормальный исход; авторы Kilobyte Models прямо пишут, что вычисления прохода они не сжимают.
  5. Прежде чем обещать «модель в два килобайта», проверьте, обучалась ли она под этот генератор или кто‑то пытается сжать чужой снимок весов после обучения.

Итог

Идея рецепта вместо полной матрицы уже не фантазия: гиперсети, координатные генераторы, зерно и латенты дают реальную компактность на диске и иногда помогают железу меньше читать память. Но компактность почти всегда покупается качеством, временем восстановления или узким семейством моделей. До «LLM на чайнике» путь ещё длинный — зато карта, куда смотреть в литературе, на Habr собрана аккуратно.

Комментарии

Загрузка комментариев…