Перейти к содержанию
Публикация AiManual

64 ГБ RAM для локальной LLM: как запустить Qwen3.8-Flash-Next в 4-битном кванте без стриминга с диска

Апгрейд с 32 до 64 ГБ DDR5-5800 позволил запустить Qwen3.8-Flash-Next в 4-битном Unsloth UD-IQ4_XS на RTX 4090 без чтения экспертов с SATA-диска. Разбираем заме

Коротко

Что будет в материале

  1. 01

    Зачем вообще менять 2-битный квант на 4-битный

  2. 02

    Почему 64 ГБ RAM оказались решающими: бюджет экспертов и стриминг с диска

  3. 03

    Сравнение квантов: IQ2_XS, IQ3_S и UD-IQ4_XS в цифрах

  4. 04

    Замеры на длинном контексте и вызовах инструментов

Зачем вообще менять 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 ГБ и когда начинается стриминг

Прикидка для своей сборки занимает три шага.

  1. Возьмите объём экспертов выбранного кванта: для UD-IQ4_XS это около 55 ГиБ.
  2. Вычтите RAM-бюджет, который готовы отдать движку: в отчёте 40 ГиБ.
  3. Остаток должен поместиться в 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 на 136K88,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 т/с всё ещё комфортный режим для чтения и работы с длинными документами.

Чек-лист: как повторить конфигурацию

  1. 64 ГБ DDR5 и бюджет экспертов в RAM около 40 ГиБ, остальное оставьте системе.
  2. Квант Unsloth UD-IQ4_XS с примерно 55 ГиБ экспертов, а не UD-Q4_K_XL с его 88 ГБ.
  3. Проверьте по логу размещение экспертов и ноль blob reads. Если чтения есть, уменьшайте контекст или RAM-бюджет.
  4. Strata 0.1.45, контекст 262K нативно без YaRN, KV-кэш q4_0, MTP-драфты при spec 4.
  5. Задайте сэмплинг явно в запросе: temp 1.0, top_p 0.95, top_k 20 при thinking включены, если хотите поведение из карточки модели.
  6. Выставьте STRATA_ROUTE_TAIL_SKIP=0 и сравните ответы с дефолтом на своих промптах.
  7. Прогоните needle test на 36K и 136K токенов и проверьте вызовы инструментов с аргументами.
  8. Следите за свободной RAM (в описанной конфигурации около 11 ГБ) и попаданием в кэш экспертов (около 91%).

Ориентируйтесь на свои замеры: т/с зависят от кванта, длины контекста, настроек движка и фоновой нагрузки. Конфигурация из отчёта даёт рабочую точку отсчёта, а не гарантированный результат. Автор на момент публикации ещё запускал калибратор Strata (pcie-frac, pool workers, draft settings) и планировал сравнение с NInfer, так что настройки могут измениться.

Подписаться на канал