Журнал · Rit.work

Прогноз маршрута переносит веса MoE на SSD

Edge0 загружает экспертов с SSD и заранее выбирает нужные веса: модель класса 35B занимает около 3 ГиБ активной памяти, но пока обслуживает запросы последовательно.

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

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

Edge0 позволил запускать модель-смесь экспертов (MoE) класса 35B на потребительском компьютере без постоянного размещения всех весов в оперативной памяти. На Mac mini M4 Pro система выдала 20,4 токена в секунду, хотя работа AutoArk не рецензирована и все числа в ней получили сами авторы. Такой подход подходит для локального запуска и прототипов с одиночным потоком запросов, но пока не заменяет многопользовательский сервер.

Как система успевает загрузить нужных экспертов

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

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

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

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

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

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

Где предварительная загрузка дала выигрыш

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

На компьютере, где контрольная точка не помещалась в физическую память, предварительная маршрутизация ускорила декодирование на 82% относительно чтения экспертов по требованию. Объём чтения почти не изменился: система выиграла за счёт того, что перенесла ожидание SSD с критического пути и объединила обращения в более крупные загрузки.

Средний разрыв с исходной 16-битной моделью на открытых бенчмарках составил 3,9 балла. Потери распределились неравномерно: на AIME старший выпуск уступил на 6,1 балла, поэтому длинные цепочки математических рассуждений остаются слабым местом.

Замеры охватывают старший и младший выпуски на компьютерах Apple с объединённой памятью. Их сравнивали с полностью загруженным mlx-lm, загрузкой экспертов по требованию и исходными моделями на публичных задачах. Сервер обрабатывал один запрос за раз в порядке поступления, а рабочая реализация использовала только MLX.

Когда Edge0 меняет план продукта

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

Подключить этот режим к произвольной MoE без подготовки не получится. Качество держится на обученном предварительном маршрутизаторе и восстановительном LoRA-адаптере, причём адаптер должен обучаться с уже заменённой маршрутизацией. Обычная выгрузка экспертов на SSD оставит задержку чтения внутри каждого шага.

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

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

Источники

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

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

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

Rit.work

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

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

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