Зачем вообще менять 2-битный квант на 4-битный
Переход с 32 ГБ на 64 ГБ DDR5-5800 дал возможность запустить Qwen3.8-Flash-Next на RTX 4090 24 ГБ и i9-14900K в 4-битном кванте Unsloth UD-IQ4_XS вместо 2-битного IQ2_XS. 40 ГиБ экспертов остаются в оперативной памяти, остаток модели занимает видеопамять, и во время генерации движок не читает веса с SATA-диска. Лог размещения это подтверждает: 40.00 ГиБ экспертов в RAM и ноль обращений к blob-файлу. Отчёт автора с замерами и логами
Цена перехода видна сразу. Декодирование на коротких промптах: 87-98 т/с, на тесте с 36K токенов 94 т/с, на 136K токенов 92 т/с. У IQ2_XS на той же карте было 140-160 т/с. Апгрейд RAM покупает не скорость, а право отдать примерно треть т/с за качество 4-битного кванта и при этом не ждать диск на каждом токене.
Конфигурация из отчёта: RTX 4090 24 ГБ, i9-14900K, 64 ГБ DDR5-5800, Arch Linux, движок Strata 0.1.45, контекст 262K нативно без YaRN, KV-кэш q4_0, MTP-драфты при spec 4. Strata заточен под одну конкретную модель, и его поведение на 12 ГБ VRAM мы разбирали отдельно: там тот же IQ3_XXS-квант выдаёт около 65 ток/с вместо 15 в llama.cpp.
Ниже разбор компромисса «скорость против качества» и чек-лист по RAM, квантам и настройкам движка. Все цифры получены на одной машине одним автором, на другом железе они не обязаны повторяться.
Почему 64 ГБ RAM оказались решающими: бюджет экспертов и стриминг с диска
У MoE-модели на каждом токене срабатывает небольшая часть экспертов, но роутер может выбрать любого из них. Держать весь набор в RAM дешевле, чем подкачивать нужного эксперта в момент генерации. SATA SSD со скоростью около 550 МБ/с для такой задачи слишком медленный: чтение десятков гигабайт вперемешку с вычислениями превращает генерацию в ожидание диска. Схема со стримингом 99 ГиБ весов с SSD работает, но даёт 9-10 tok/s, и там это осознанный выбор для 16 ГБ VRAM.
Раскладка в отчёте выглядит так. UD-IQ4_XS содержит около 55 ГиБ экспертов, бюджет 40 ГиБ в RAM оставляет примерно 15 ГиБ, которые забирает 4090 вместе с KV-кэшем q4_0 и служебными буферами. Во время работы свободно около 11 ГБ оперативной памяти, то есть запас есть, но небольшой.
Для контраста UD-Q4_K_XL: чтобы держать всех экспертов в RAM, ему нужно около 88 ГБ. На 64 ГБ примерно 19 ГБ экспертов пришлось бы стримить с SATA-диска на 550 МБ/с, и скорость декодирования определялась бы накопителем, а не GPU. Именно поэтому квант отвергли до запуска.
Сколько экспертов влезает в 64 ГБ и когда начинается стриминг
Прикидка для своей сборки занимает три шага.
- Возьмите объём экспертов выбранного кванта: для UD-IQ4_XS это около 55 ГиБ.
- Вычтите RAM-бюджет, который готовы отдать движку: в отчёте 40 ГиБ.
- Остаток должен поместиться в VRAM вместе с KV-кэшем, весами внимания и буферами. Если не помещается, лишнее уйдёт на диск.
Проверять результат надо не на глаз, а по логу размещения и счётчику blob reads. Цифры зависят от кванта, длины контекста и настроек движка, поэтому у себя вы можете увидеть другую картину при тех же 64 ГБ.
Сравнение квантов: IQ2_XS, IQ3_S и UD-IQ4_XS в цифрах
Замеры на одной и той же карте дают понятную лестницу: чем выше битность, тем ниже скорость.
| Квант | Декодирование | Совпадение топ-токена с Q8_0 | Комментарий |
|---|---|---|---|
| IQ2_XS (2 бита) | 140-160 т/с | нет в таблице Strata | исходный вариант на 32 ГБ |
| IQ3_S (3 бита) | 110-126 т/с | нет в таблице Strata | сборка GSQ-RCO занимает 55,1 ГБ |
| IQ3_XXS | нет данных | 84,5% | промежуточный тир |
| Q2_0 | нет данных | 80,6% | самый агрессивный тир |
| UD-IQ4_XS (4 бита) | 87-98 т/с, 94 на 36K, 92 на 136K | 88,9% | около 55 ГиБ экспертов, 40 ГиБ в RAM |
Сборки IQ3_S, IQ3_XXS, IQ2_XS и Q2_0 в линейке GSQ-RCO сохраняют раскладку тензоров и контекст 262K, а IQ3_S верифицирована по тензорам: 55,1 ГБ, каждый тир добавляет к upstream всего 0,25-0,44 ГБ. Каталог этих сборок с характеристиками полезен тем, кто хочет сравнить объёмы до скачивания.
Что означает совпадение с Q8_0 и как его читать
Метрика показывает, как часто квант выбирает тот же топ-токен, что и эталонный Q8_0. 88,9% у UD-IQ4_XS против 84,5% у IQ3_XXS и 80,6% у Q2_0 дают грубый ориентир: 4-битный вариант ближе к эталону, чем 3- и 2-битные. Это не гарантия качества текста и не оценка на ваших задачах.
IQ2_XS в таблице отсутствует, его качество приходится оценивать косвенно, между IQ3_XXS и Q2_0. Отдельно проверяйте вызовы инструментов и длинный контекст: там редкая ошибка выбора токена стоит дороже, чем в обычном чате. Логику выбора битности под код, скрапинг и tool use мы разбирали в материале про IQ3_XXS против Q4_K_M.
Замеры на длинном контексте и вызовах инструментов
На тесте с иглой в 36K токенов игла найдена, промпт обработан на 2 000 т/с, декодирование 94 т/с. На 136K токенов игла тоже найдена, промпт обработан на 2 850 т/с, декодирование 92 т/с. Между 36K и 136K скорость генерации просела на 2 т/с, то есть длинный контекст почти не сказался на декодировании.
Кэш экспертов при этом держится на уровне около 91%: девять из десяти обращений попадают в уже размещённые веса, и чтения с диска не происходит. Вызовы инструментов прошли чисто, нужная функция и аргументы с первой попытки.
Часть результата объясняется настройками: контекст 262K включён нативно, без YaRN, KV-кэш в q4_0 экономит видеопамять, MTP-драфты при spec 4 добавляют спекулятивное декодирование. Это замеры автора на конкретной связке железа и движка, а не универсальный бенчмарк модели.
Настройка Strata 0.1.45: сэмплинг и STRATA_ROUTE_TAIL_SKIP
Первый момент касается сэмплинга. Strata 0.1.45 берёт параметры из карточки модели, если запрос не передаёт свои: temp 1.0, top_p 0.95, top_k 20 при включённом thinking. Старые сборки работали жадно. Для агентских сценариев разница существенная: жадное декодирование предсказуемее, а «карточный» сэмплинг даёт разнообразие, которое на вызовах функций иногда мешает. Передавайте параметры явно в запросе, если нужна воспроизводимость.
Второй момент важнее. Дефолтный STRATA_ROUTE_TAIL_SKIP=7 примерно удваивает KL-дивергенцию относительно Q8_0 на файлах Unsloth в режиме RAM-бюджета. Автор выставил 0 и советует проверить это до того, как списывать просадку качества на 4-битный квант. Детали эксперимента с параметрами
Почему дефолтный tail skip стоит проверить первым делом
KL-дивергенция измеряет расхождение распределения токенов с эталоном Q8_0: чем она выше, тем сильнее модель отходит от референсного поведения. Рост примерно вдвое на дефолтном значении 7 даёт деградацию, которую легко принять за слабость кванта и зря вернуться на 2 бита.
Эффект зафиксирован на файлах Unsloth в режиме RAM-бюджета, поэтому проверять его надо именно на своей связке квант плюс движок. Практический порядок действий:
- уточнить версию движка, поведение сэмплинга менялось между сборками;
- задать temp, top_p и top_k явно в запросе;
- выставить
STRATA_ROUTE_TAIL_SKIP=0; - сравнить ответы до и после на одних и тех же промптах, включая вызовы функций.
Стоит ли апгрейд 32→64 ГБ именно вам
Апгрейд имеет смысл, если вы запускаете крупные MoE-модели вроде Qwen3.8-Flash-Next и хотите уйти с 2-битных квантов на 4-битные без стриминга с диска. Выигрыш проявляется именно на пороге: квант, который раньше не влезал, теперь держит всех экспертов в RAM. Если модель помещается в VRAM целиком или вы работаете с моделями меньшего размера, 64 ГБ дадут запас, но не скачок качества. Расчёт футпринта под 48, 64 и 96 ГБ RAM помогает прикинуть, что вообще влезает в ваш объём.
Ограничения конфигурации стоит держать в голове. SATA SSD на 550 МБ/с остаётся узким местом при любом стриминге: как только эксперты перестают помещаться в RAM и VRAM, скорость падает до уровня накопителя. 24 ГБ VRAM ограничивают остаток модели и KV-кэш на длинном контексте, поэтому 262K достижимы при q4_0 и аккуратных буферах, а не при любых настройках. Около 11 ГБ свободной RAM выглядят запасом, но браузер, IDE и фоновые процессы легко съедают половину.
И главное: 4-битный квант стоит примерно трети скорости относительно IQ2_XS. Если вам нужна максимальная отзывчивость в интерактиве и качество 2 бита устраивает, апгрейд ничего не изменит. Если качество ответов важнее, 87-98 т/с всё ещё комфортный режим для чтения и работы с длинными документами.
Чек-лист: как повторить конфигурацию
- 64 ГБ DDR5 и бюджет экспертов в RAM около 40 ГиБ, остальное оставьте системе.
- Квант Unsloth UD-IQ4_XS с примерно 55 ГиБ экспертов, а не UD-Q4_K_XL с его 88 ГБ.
- Проверьте по логу размещение экспертов и ноль blob reads. Если чтения есть, уменьшайте контекст или RAM-бюджет.
- Strata 0.1.45, контекст 262K нативно без YaRN, KV-кэш q4_0, MTP-драфты при spec 4.
- Задайте сэмплинг явно в запросе: temp 1.0, top_p 0.95, top_k 20 при thinking включены, если хотите поведение из карточки модели.
- Выставьте
STRATA_ROUTE_TAIL_SKIP=0и сравните ответы с дефолтом на своих промптах. - Прогоните needle test на 36K и 136K токенов и проверьте вызовы инструментов с аргументами.
- Следите за свободной RAM (в описанной конфигурации около 11 ГБ) и попаданием в кэш экспертов (около 91%).
Ориентируйтесь на свои замеры: т/с зависят от кванта, длины контекста, настроек движка и фоновой нагрузки. Конфигурация из отчёта даёт рабочую точку отсчёта, а не гарантированный результат. Автор на момент публикации ещё запускал калибратор Strata (pcie-frac, pool workers, draft settings) и планировал сравнение с NInfer, так что настройки могут измениться.