Журнал · Rit.work

DuoRate разделяет стоимость хранения и чтения MoE-модели

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

Rit.work
Студия разработки
12 октября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Разрядность весов MoE-модели можно выбирать отдельно для хранения и для пошаговой генерации, не создавая второй контрольный пункт. В нерецензированном препринте Huawei, где все числа получили сами авторы, DuoRate при чтении 2,9 бита на вес сравнялся с четырёхбитными форматами, которым требовалось на 1,4–1,6 бита больше. Это позволяет считать объём памяти и трафик генерации как разные статьи расходов.

Один набор весов создаёт два разных расхода

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

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

Поэтому средняя разрядность контрольного пункта не показывает, сколько данных оборудование переносит во время генерации. В разобранном авторами BitsMoE экспертные веса занимают 2,54 бита на вес, но один шаг генерации читает в среднем 7,50 бита. Разрыв возникает из-за общей основы весов: при хранении её стоимость распределяется между всеми экспертами слоя, а при генерации — только между выбранными.

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

Префикс весов позволяет менять разрядность без перекодирования

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

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

Главный результат метода касается частоты маршрутизации. Для одной рабочей нагрузки она одинаково умножает и ошибку эксперта, и объём чтения его весов, поэтому сокращается при выборе разрядности. Частый эксперт не должен автоматически получать больше битов: порядок определяет то, насколько дополнительный фрагмент весов уменьшает искажение.

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

На Qwen3-30B-A3B чтение 2,3 бита на вес повысило среднюю долю верных ответов на MMLU-Pro, MMLU и GSM8K на 6,3–47,0 процентного пункта относительно методов того же класса разрядности. На GSM8K вариант с 2,6 бита не уступил форматам NF4 и FP4 с 4,5 бита, а при более широком чтении отстал от BF16 лишь на четверть процентного пункта. Именно GSM8K требует длинной генерации, поэтому там разделение двух расходов проявилось сильнее.

Когда DuoRate меняет инфраструктурный план

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

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

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

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

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

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

← Ко всем материалам
Понравилось? Обсудим вашу задачу