Короткий ответ на главный вопрос: полноценного сравнения Freetoken и llama.cpp по MoE offload на подтверждённых данных сейчас не существует. У llama.cpp режим выгрузки экспертов MoE есть, о нём говорят документация и обсуждения в сообществе. По Freetoken данных о работе именно в режиме MoE offload в открытых источниках нет: находится только вопрос пользователя /u/fragment_me в сообществе r/LocalLLaMA, обсуждение опубликовано на Reddit.
Автор вопроса сам признаёт, что ещё не запускал инструмент, и приводит две формулировки: «Anyone running Freetoken with MoE offload?» и «How's that working out compared to llamaCPP MoE offload?». Про Freetoken он замечает, что инструмент, похоже, набирает популярность. Это наблюдение о внимании сообщества, а не измеренный результат, и о стабильности или скорости выгрузки экспертов оно ничего не говорит.
Дальше разбираем, что такое MoE offload, как он устроен в llama.cpp, что известно о Freetoken, по каким критериям сравнивать инструменты и как проверить Freetoken самостоятельно, если вы готовы поставить собственный тест.
Что такое MoE offload и зачем он нужен при локальном запуске
MoE offload, или выгрузка экспертов, распределяет веса MoE-модели между видеопамятью, оперативной памятью и накопителем. Часть экспертов остаётся в RAM или на диске и подгружается по мере надобности, что позволяет запустить модель, которая целиком в VRAM не помещается.
MoE, эксперты и роутер: краткое объяснение
MoE расшифровывается как Mixture of Experts, то есть смесь экспертов. Вместо одного крупного блока вычислений модель содержит набор подсетей, которые называют экспертами. Перед ними стоит роутер, небольшой механизм, который для каждого токена решает, каких экспертов задействовать.
Обычно выбирается top-k: например, два эксперта из восьми, шестнадцати или шестидесяти четырёх. Остальные эксперты в обработке этого токена не участвуют. Общее число параметров модели при этом растёт, а вычислений на каждый токен тратится примерно столько же, сколько на несколько активных подсетей.
Аналогия: бригада узких специалистов, где на конкретную задачу зовут только тех, кто нужен, а остальные продолжают заниматься своим делом.
Почему offload экспертов помогает на ограниченном железе
Эксперты MoE-модели нужны не все сразу. Роутер выбирает небольшую часть на каждый токен, поэтому остальные веса можно держать вне VRAM и подтягивать по необходимости. Часть экспертов остаётся в системной RAM, самые редкие могут лежать на диске.
Практический смысл: модель целиком не влезает в видеопамять, но её удаётся запустить, распределив экспертов между GPU, RAM и накопителем. Плата за это - скорость. Обмен данными между GPU и RAM идёт по PCIe, доступ к диску ещё медленнее, и на каждом шаге генерации появляются задержки.
MoE offload - компромисс между доступностью модели и скоростью работы. Конкретные цифры просадки зависят от модели и железа, поэтому без замеров на своей конфигурации ориентироваться не на что.
Как MoE offload реализован в llama.cpp
llama.cpp - один из самых распространённых инструментов для локального запуска LLM. Он работает с форматом GGUF, поддерживает инференс на CPU и GPU и умеет частично выгружать модель на видеокарту. Механизм выгрузки экспертов MoE в нём есть, и он открыто обсуждается в сообществе.
Основные параметры и режимы выгрузки
За выгрузку отвечают параметры двух категорий: сколько слоёв модели уходит на GPU и как распределяются эксперты MoE между видеопамятью и CPU. Классический параметр выгрузки слоёв известен как n-gpu-layers. Для экспертов MoE есть отдельные настройки, но их точные имена зависят от версии и сборки, поэтому сверяйтесь с актуальной документацией проекта, а не с постами годичной давности.
На практике всё сводится к подбору баланса: чем больше экспертов уходит в RAM, тем меньше нужно VRAM и тем ниже скорость. Среди открытых материалов проекта есть разбор с патчами и бенчмарками MoE-инференса в llama.cpp на RTX 4080, где видно, какие задачи ускоряются, а где появляются регрессии. Есть и экспериментальная ветка с expert expansion для MoE-моделей, но её результат нельзя считать универсальным.
Ограничения и компромиссы MoE offload в llama.cpp
Выгрузка экспертов снижает скорость генерации: часть вычислений идёт на CPU, а веса постоянно перемещаются между системной памятью и GPU. Нагрузка на RAM и процессор растёт, модель может дольше загружаться. Насколько сильно падает скорость, зависит от самой модели, размера экспертов и пропускной способности памяти.
Из-за этих задержек в сообществе обсуждают Hot Expert Reload: подкачку активных экспертов в VRAM прямо во время генерации, чтобы сократить простои. Идея показывает слабое место обычного offload: чем чаще нужные эксперты лежат вне видеопамяти, тем больше времени теряется на их передачу.
Freetoken и MoE offload: что известно на текущий момент
Freetoken описывают как инструмент для локального запуска моделей, который, по наблюдениям из сообщества, набирает популярность. Подтверждённой информации о том, как он работает именно в режиме MoE offload, в открытых источниках не нашлось.
Публичный запрос /u/fragment_me и его контекст
Тема сравнения появилась из вопроса на Reddit. Пользователь /u/fragment_me спросил, запускал ли кто-нибудь Freetoken с MoE offload, и предложил сопоставить это с аналогичной функцией в llama.cpp по ссылке на обсуждение выше.
Anyone running Freetoken with MoE offload?
How's that working out compared to llamaCPP MoE offload?
Ключевая деталь: автор вопроса сам ещё не запускал инструмент и написал об этом прямо: «I haven't gotten a chance to run this». Это запрос на чужой опыт, а не результат теста. Ни стабильности, ни цифр скорости, ни списка плюсов и минусов в треде не приводится.
В том же сообщении отмечено, что Freetoken, похоже, набирает популярность: «it seems to be gaining some traction». Это наблюдение о внимании сообщества, и о качестве выгрузки экспертов оно не говорит ничего.
Чего не хватает для полноценного сравнения
Для честного сопоставления нужны данные, которых пока нет:
- как Freetoken выгружает экспертов и какие требования предъявляет к железу;
- скорость генерации в токенах в секунду на конкретной конфигурации;
- задержка первого токена и время загрузки модели;
- стабильность при длительной работе, сбои, рост потребления памяти;
- список поддерживаемых MoE-моделей и форматов весов.
Публичные материалы проекта о Freetoken касаются другого механизма. В разборе дискового тира Overspill показано, как движок FreeToken запускает крупную MoE-модель DeepSeek-V4-Flash REAP-150B весом 85 ГБ на RTX 3060 с 12 ГБ VRAM и выдаёт около 2,8-3,4 ток/с против 0,4-0,5 у llama.cpp. Это замеры конкретного эксперимента с выгрузкой на диск, и переносить их на весь режим MoE offload нельзя.
Сравнение Freetoken и llama.cpp по MoE offload: что можно сказать сейчас
На момент публикации публичных тестов и подтверждённых отзывов о Freetoken с MoE offload нет. Короткий вывод: данных недостаточно, чтобы назвать победителя.
Критерии для сравнения MoE offload
Если вы планируете тестировать самостоятельно, сравнивайте движки по одному набору критериев:
| Критерий | Почему важен |
|---|---|
| Скорость генерации, ток/с | Определяет, годится ли модель для интерактивной работы или только для фоновых задач. |
| Задержка первого токена | Влияет на отзывчивость при длинных промптах и в диалоге. |
| Потребление VRAM и RAM | Показывает, влезает ли конфигурация в ваше железо с запасом. |
| Стабильность при длительной работе | Сбои и утечки памяти обнуляют любой выигрыш в скорости. |
| Простота настройки | Чем меньше ручных правок конфигов, тем быстрее вы получите рабочий запуск. |
| Поддержка MoE-моделей и форматов | Не каждый движок одинаково быстро добавляет новые архитектуры. |
| Документация и активность разработки | Определяют, как быстро вы найдёте ответ на проблему и получите исправление. |
Почему пока нет однозначного ответа
Сравнение требует воспроизводимых замеров на одинаковом железе, одинаковой модели и одинаковой квантизации. Таких публичных данных по Freetoken и llama.cpp нет. Даже когда тесты появляются, результат сильно зависит от конфигурации: объёма RAM, скорости накопителя, числа GPU и пропускной способности шины.
Поэтому честный ответ на вопрос «что лучше» сейчас выглядит так: неизвестно, нужны собственные замеры. Любое утверждение о превосходстве одного движка над другим без цифр будет догадкой.
Как проверить Freetoken с MoE offload самостоятельно
Самый надёжный способ получить ответ - поставить собственный тест. Ниже план, который опирается на фиксацию параметров и проверку команд в актуальной документации.
Что подготовить перед тестом
- MoE-модель в формате, который поддерживает тестируемый движок, и одинаковую квантизацию для обоих инструментов;
- установленный Freetoken и установленный llama.cpp;
- инструменты мониторинга: nvidia-smi для VRAM и загрузки GPU, htop или аналог для RAM и CPU;
- зафиксированное описание железа: CPU, объём и частота RAM, модель GPU и объём VRAM, тип накопителя;
- модель, которая уже стабильно работает в llama.cpp с offload, чтобы было с чем сравнивать.
Конкретные команды и флаги зависят от версии и сборки. Их стоит брать из документации Freetoken и llama.cpp, а не из старых постов: набор параметров меняется от релиза к релизу.
Какие метрики фиксировать
- скорость генерации, ток/с, на одинаковом промпте и одинаковой длине вывода;
- время загрузки модели с диска до готовности к работе;
- пиковое потребление VRAM и RAM во время генерации;
- задержка первого токена;
- поведение при длительной работе: рост потребления памяти, вылеты, замедление.
Чтобы сравнение было честным, держите одинаковыми модель, квантизацию, длину контекста и промпт. Если меняете хотя бы один параметр, меняйте его у обоих движков. Про методику честного сравнения nInfer, vLLM и llama.cpp есть отдельный разбор.
Кому и когда стоит использовать MoE offload
MoE offload - компромисс, а не бесплатное ускорение. Он расширяет список моделей, которые вы можете запустить, но за счёт скорости.
Когда MoE offload оправдан
- VRAM не хватает для модели целиком, но есть большой объём RAM;
- модель относится к MoE с большим числом экспертов, и используются они неравномерно;
- скорость не критична: подойдут фоновые задачи, пакетная обработка, редкие запросы;
- есть быстрый накопитель, если часть экспертов уходит на диск.
Конкретные пороги по объёму RAM и VRAM зависят от модели и железа, поэтому проверять их стоит на своей конфигурации, а не по общим таблицам.
Когда лучше выбрать другие подходы
- нужна высокая скорость и низкая задержка: подойдёт модель меньшего размера или более сильная квантизация;
- есть GPU с достаточной VRAM: модель может поместиться целиком без offload;
- разовые или редкие задачи: аренда облачного GPU может оказаться дешевле, чем апгрейд железа.
Приоритеты обычно расставляют так: качество ответов, затем скорость, затем стоимость. Под каждый приоритет подбирается свой вариант.
Итог: что делать читателю
MoE offload помогает запускать MoE-модели на железе с ограниченной VRAM, распределяя экспертов между GPU, RAM и диском. У llama.cpp этот режим подтверждён документацией и обсуждениями в сообществе, включая эксперименты с оптимизацией MoE-инференса и запросы на подкачку экспертов в VRAM. О Freetoken с MoE offload публичных данных пока нет: есть вопрос пользователя /u/fragment_me, и на момент публикации ответов с результатами в нём не появилось.
Если вам нужна предсказуемость и документация, разумно начинать с llama.cpp. Если интересно попробовать Freetoken, ставьте собственный тест по плану выше и фиксируйте те же метрики для обоих движков. Публичных замеров, которые позволили бы объявить победителя, сейчас нет, и любой вывод без собственных цифр будет догадкой.
Если вы уже запускали Freetoken с выгрузкой экспертов, полезно поделиться конфигурацией, моделью и результатами в ток/с: такие данные закрывают тот пробел, который пока остаётся в публичном поле.