Привет, Хабр! Еще чуть больше года назад ваш покорный слуга наконец решился обновить комп, приобретя ПК с RTX 5090 и 96Gb RAM, которые, как я тогда думал, окажутся ультимативным решением для запуска всего, что может когда‑либо хотеться запустить. Но с выходом DeepSeek V4 Flash в апреле понял, что оказался в своеобразном «лимбо» — суммарных 128Gb VRAM+RAM хватало либо на запуск модельки в кванте Q2, либо на самом пределе возможного в Q3XSS. То есть был Qwen 3.6, а на всё, что больше — памяти уже не хватало. А тут как раз вышла новая версия DSv4Flash 0731… Казалось бы, комп мощный, и для запуска продвинутой нейронки не хватает совсем чуть‑чуть, а в отличие от злосчастных обладателей DGX Spark, которым, наверно, брать разве что вторую такую же, я могу просто докупить еще один комплект 96Gb RAM, который мне тогда обошелся всего‑то в… 32000р?

…Я не хочу говорить, во сколько мне это обошлось сейчас. Тем не менее, 192Gb RAM на AM5 завелись в весьма достойных 6000Mhz в режиме 1:1 и после лишь небольшого шаманства с напряжениями успешно прошли все тесты на стабильность.

Тем временем конец лета оказался ну прямо‑таки жарким!
DeepSeek V4 Flash (0731) — 31 июля 2026 года. (MoE‑модель на 284B параметров с 13B активных, ориентированная на ИИ‑агентов).
Qwen 3.8 27B — 3 августа 2026 года. (Плотная (dense) локальная модель, умещающаяся на одной производительной видеокарте).
GLM 5.3 Flash — 26 августа 2026 года. (Мультимодальная MoE‑модель на 320B параметров с 18B активных, ранее тестировавшаяся под стелс‑именем Ox Alpha).
Qwen 3.8 Flash Next — 28 августа 2026 года. (Архитектурное превью линейки Qwen 4, MoE‑модель на ~125B обычных параметров с ~6B активных на токен, плюс около 51B параметров n‑gram‑эмбеддингов; суммарно — ~180B).
И еще несколько более мелких, но интересных релизов навроде Ornith 1.5 35B‑A3B и 397B. То есть за несколько недель у меня появился огромный набор моделей от «плотной» 27B до 300+B MoE, на котором можно было проверить, что сегодня вообще имеет смысл запускать дома — причем, в идеале, не просто запускать, а с приемлемой скоростью, большим контекстом и без убийственного квантования. Хочу попробовать все!
Формат тестов
Тесты проводились посредством создания cmd‑скрипта запуска модели, поднимавшего локальный LLM‑сервер по адресу http://127.0.0.1:5000/v1, и обращения к нему через клиент Jan Desktop. Пример скрипта запуска (тут меня «вел за руку» ChatGPT):
Скрытый текст
@echo off setlocal chcp 65001 >nul set "COMMON=%~dp0benchmark-common.ps1" set "LLAMA_DIR=C:\Users\[User]\.unsloth\llama.cpp\build\bin\Release" set "SERVER=%LLAMA_DIR%\llama-server.exe" set "CUDA_LIBS=C:\Users\[User]\.unsloth\studio\unsloth_studio\Lib\site-packages\torch\lib" set "MODEL=D:\LLM\Qwen3.8-Flash-Next\Qwen3.8-Flash-Next-UD-Q4_K_XL\UD-Q4_K_XL\Qwen3.8-Flash-Next-UD-Q4_K_XL-00001-of-00004.gguf" set "CTX=262144" set "THREADS=16" set "FIT_TARGET=1024" if not exist "%COMMON%" ( echo ERROR: benchmark-common.ps1 not found: echo %COMMON% pause exit /b 1 ) if not exist "%SERVER%" ( echo ERROR: llama-server.exe not found: echo %SERVER% pause exit /b 1 ) if not exist "%MODEL%" ( echo ERROR: model not found: echo %MODEL% pause exit /b 1 ) if not exist "%CUDA_LIBS%" ( echo ERROR: CUDA runtime directory not found: echo %CUDA_LIBS% pause exit /b 1 ) set "PATH=%CUDA_LIBS%;%PATH%" set "NVIDIA_TF32_OVERRIDE=0" rem ============================================================ rem BENCHMARK METADATA rem ============================================================ set "BENCH_SERVER=%SERVER%" set "BENCH_MODEL_FILE=%MODEL%" set "BENCH_MODEL=Qwen3.8-Flash-Next" set "BENCH_PARAMS=~180B / ~6B active per token" set "BENCH_QUANT=Unsloth UD-Q4_K_XL GGUF" set "BENCH_RUNTIME=llama.cpp (Unsloth build)" set "BENCH_DRAFTER=none; baseline (MTP disabled)" set "BENCH_CONTEXT_KV=256K (262144) / Q8_0, Q8_0" set "BENCH_VISION=No; mmproj not loaded" set "BENCH_LAYERS=48 trunk layers; hybrid recurrent/attention architecture" set "BENCH_EXPERTS=512 routed experts; 10 selected per MoE layer" set "BENCH_EXPERT_PLACEMENT=TRUE AUTO FIT; mixed VRAM/RAM" set "BENCH_GPU_EXPERT_CACHE=n/a; auto-fit tensor placement" set "BENCH_CPU_MOE=automatic placement; no --n-cpu-moe override" set "BENCH_RUN_ARGS=-m "%MODEL%" --alias benchmark --host 127.0.0.1 --port 5000 -c %CTX% -np 1 --cache-type-k q8_0 --cache-type-v q8_0 -fa on --fit on --lazy-mode off --fit-target %FIT_TARGET% --load-mode none -b 2048 -ub 128 -t %THREADS% --threads-batch %THREADS% --cache-ram 0 --jinja --reasoning-preserve" title Qwen3.8-Flash-Next UD-Q4_K_XL - 256K baseline benchmark - port 5000 powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "%COMMON%" set "RC=%ERRORLEVEL%" echo. echo llama-server exited with code %RC%. pause endlocal exit /b %RC%
Каждой модели для каждого способа запуска давалось три «one‑shot» задачи:
Напиши подробное техническое объяснение того, почему упреждающее декодирование (speculative decoding) может ускорять локальную языковую модель (LLM), но иногда вместо этого замедляет её. Разбери долю принятых предсказаний (acceptance rate), стоимость вспомогательной модели (draft model), проверку предсказаний основной моделью (verification), пропускную способность памяти (memory bandwidth), влияние длины блока предсказаний (speculative block) и влияние длинного контекста. Не используй таблицы. Продолжай подробное объяснение до достижения лимита в 4096 токенов. Не завершай ответ досрочно.
Сделай SVG‑изображение: осёл едет на велосипеде, на заднем плане в лесу стоит медведь. Выдай только один законченный SVG‑код, без пояснений, Markdown и внешних ресурсов. SVG должен открываться как самостоятельный файл в браузере.
Сделай одним ответом законченную браузерную игру, аналог Battle City. Выдай один самодостаточный HTML‑файл без внешних библиотек и ресурсов. Управление WASD/стрелки, Space — выстрел. Должны быть игрок, противники, разрушаемые кирпичные стены, неразрушаемые стены, столкновения, снаряды, очки, жизни, поражение и перезапуск. Не объясняй код — выдай только готовый HTML.
Тестировались модели: Ornith-1.5–35B‑A3B, Qwen3.6–35B‑A3B, Qwen3.8–27B, Qwen3.5–122B‑A10B, Laguna‑S-2.1, Qwen3.8-Flash‑Next, DeepSeek‑V4-Flash-0731, Ornith-1.5–397B, GLM-5.3-Flash, Hy3, MiniMax‑M3. Под конец было решено попробовать хайпануть и запустить огромную модель Hy4-preview в STQ1_0 — потому что могу! Все остальные модели я пытался запускать на максимальном разумном качестве.
Инференсы
Довольно быстро я понял, что наилучший набор параметров для запуска не всегда очевиден, а для достижения наилучшей скорости нужно тестировать вообще разные способы запуска, а не только универсальный llama.cpp. Первым «звоночком» в этом плане стал Ninfer — наткнулся на упоминание о нём на Reddit, когда искал информацию по скорости запуска моделей. И первый же тест на Qwen3.8–27B поднял скорость с ~100 токенов в секунду до ~170ток/с. Вау!
NInfer — специализированный движок инференса (запуска и вывода LLM), заточенный под небольшой набор конкретных моделей и современное NVIDIA‑железо; в отличие от универсального llama.cpp он сознательно жертвует широтой поддержки моделей и форматов ради скорости. На видеокартах архитектуры Blackwell NInfer использует преимущества 4-битного формата вычислений NVIDIA FP4 (NVFP4), имеющего аппаратную поддержку тензорными ядрами данной архитектуры. Это позволяет одновременно уменьшить объём читаемых из видеопамяти данных и ускорить сами матричные вычисления. Обратная сторона — необходимость заранее переквантовать веса модели из BF16 в NVFP4, а 4-битное представление уже может заметно влиять на качество, плюс используется собственный формат файлов *.ninfer. Раньше движок разрабатывался только под Linux и в Windows обычно запускался через WSL2, но сейчас появились и нативные реализации, например, natpate/ninfer‑windows.
Из альтернатив мне попались ещё ExLlamaV3, ориентированный на NVIDIA GPU и собственный формат EXL3, и FreeToken, рассчитанный на попытку оптимизации запуска MoE‑моделей с разгрузкой слоев в RAM.
Из более известных систем запуска стоит упомянуть vLLM и SGLang. В отличие от llama.cpp, который в первую очередь ценен широкой поддержкой моделей, форматов и самого разного железа, эти проекты сильнее ориентированы на серверное использование: одновременную обработку множества запросов, эффективную работу с уже посчитанным контекстом и распределение нагрузки между несколькими видеокартами. Поэтому они особенно популярны при развёртывании LLM как сервиса. В этом тесте я их пока не использовал: здесь основной сценарий — одна пользовательская машина и один активный запрос.
Из всего этого набора в дополнение к llama.cpp я тестировал NInfer, ExLlamaV3 и FreeToken там, где видел в этом возможность и смысл.
VRAM, RAM и MoE
Другим важным тестом стал тест Q6 vs Q8 на моделях Qwen3.8–27B и Ornith-1.5–35B‑A3B. Попытка перехода с Q6 на Q8 для первой из них потребовала всего лишь выгрузить пару слоев из VRAM в RAM… и скорость со 100ток/с улетела до 10. В 10 раз, Карл! Для Ornith-1.5–35B‑A3B выгрузка пары слоев в RAM прошла заметно менее болезненно — если Q6_K GGUF с контекстом 192K с квантованием kv‑кеша в Q8, полностью помещавшаяся в видеопамять, давала ~235ток/с, то увеличение контекста с частичной выгрузкой до 256K дало уже ~185ток/с, а переход вместе с тем на Q8 — ~95ток/с.
Очевидно, разница этих моделей — в архитектуре последней — Mixture of Experts (MoE, смесь экспертов). Если в классической LLM, так называемой «плотной» модели, для каждого следующего слоя активируются все параметры, то в MoE каждый слой разделен на набор «экспертов» (набор параметров), и присутствует роутер, который для каждого следующего слоя выбирает, какой набор параметров будет задействован (подробнее — https://newsletter.maartengrootendorst.com/p/a‑visual‑guide‑to‑mixture‑of‑experts).

Использование на каждом слое только части параметров позволяет проходить этот слой гораздо быстрее. Что в свою очередь может позволить вместо видеокарты с пропускной способностью VRAM в сотни и тысячи ГБ/с (1792 ГБ/с для 5090) использовать RAM с «жалкими» десятками ГБ/с (96 ГБ/с для двухканальной DDR5-6000). При этом пропускная способность памяти всё равно оказывается узким местом, и 2 канала DDR4 сильно хуже DDR5, 2 канала DDR5 пользовательских ПК сильно хуже 8 каналов в профессиональных пользовательских станциях (например, AMD Threadripper Pro) или 12 каналов в серверах (например, AMD Epyc, в многопроцессорных конфигурациях может быть больше, но там много нюансов), которые в свою очередь медленнее VRAM. Но много быстрой VRAM сейчас стоит просто неприличных денег.
При этом, сама модель — это не только слои. И даже в MoE помимо экспертов (Routed Experts) в модели остаётся общая, постоянно вычисляемая часть — attention, нормализации и прочее, в зависимости от архитектуры, а также общие эксперты (Shared Experts), которые задействуются для каждого токена. Всё это лучше оставлять в VRAM. Но помимо слоев есть еще и кэш памяти (KV cache) модели, а также опционально драфтер (предиктор, ускоритель модели, о нём позже) и слои Vision — их, кстати, если не предполагается постоянная работа нейросети с картинками, как раз часто можно отправить в RAM.
KV cache — это рабочая память модели для уже обработанного текста: истории чата, загруженного документа, программного кода и вообще всего, что сейчас находится в её контекстном окне. Контекстное окно — это тот объём информации, который модель ещё «видит»; всё, что осталось за его пределами, она уже не учитывает. Для токенов внутри этого окна модель хранит в KV cache промежуточные результаты вычислений, чтобы не пересчитывать их заново при каждом следующем токене.
Чем больше контекстное окно, тем больше KV cache. На длинных контекстах он может занимать гигабайты и даже десятки гигабайт видеопамяти, а поскольку кэш постоянно используется при генерации, его крайне желательно держать в дорогой для нас VRAM. Но расход памяти, можно и уменьшить.
Технически, KV cache (Key‑Value Cache) — это буфер в памяти GPU/CPU, в котором хранятся промежуточные тензоры Key и Value, вычисленные механизмом самовнимания (self‑attention) для каждого обработанного токена. В трансформере на каждом слое внимания каждый токен формирует три вектора: Query (Q), Key (K) и Value (V). При генерации нового токена его Query должен быть сопоставлен с Keys всех предыдущих токенов, чтобы определить, на какие части контекста обратить внимание, и затем агрегировать соответствующие Values. Без кэша эти K и V пришлось бы пересчитывать заново на каждом шаге генерации, что привело бы к квадратичной сложности по времени. KV‑кэш сохраняет их один раз, превращая каждый последующий шаг decode из O(N²) в O(N) по вычислениям (https://sponsr.ru/evil_about_tech/159835/IIshnica_Upravlenie_KVkeshem_v_vLLM_i_llamacpp_Arhitekturnye_razlichiya_i_ih_posledstviya/).
Важно то, что и K, и V мы также можем квантовать, разменивая память на точность ответа. То есть вместо 128K контекста с 16-битным KV cache можно получить 256K Q8, Q8 почти без потерь, или даже 512K Q4, Q4. Последнее я пока не пробовал, ибо чем больше контекст, тем сложнее модели не терять важные детали среди большого объёма контекста и так, а квантование не только позволяет вместить больший объем контекста, но и не добавляет вычислениям точности.
Как итог, крайне желательно, чтобы в VRAM видеокарты помещались все слои «плотной» LLM или вся общая часть и Shared Experts для MoE, драфтер (если есть), KV cache, и оставался хотя бы гигабайт видеопамяти под рабочие буферы и саму систему. Квантованием слоев модели (вернее, чаще выбором и скачиванием более подходящего кванта), квантованием K, V и управлением размером контекстного окна мы можем этого добиться. Конечно, чем большая часть экспертных слоев также окажется в видеопамяти, тем быстрее заработает MoE‑модель. Если видеокарт несколько, слои можно распределить между ними (но это разделение тоже не бесплатно). Нужно больше видеокарт!
Наибольшее разочарование — драфтеры
Наибольшее — после цен на видеокарты и оперативку, конечно. Но да, впервые узнав про MTP (Multi‑Token Prediction) и DFlash\DSpark, я прямо был в предвкушении. MTP — встроенный в модель предиктор нескольких следующих токенов. DSpark у DeepSeek решает ту же задачу более хитрым способом, используя отдельный специально обученный модуль.
Идея на бумаге красивая. Вместо того чтобы основная модель по одному генерировала каждый следующий токен, ей в помощь дают небольшой предиктор, который пытается угадать сразу несколько следующих токенов. Основная модель затем проверяет этот кусок целиком: удачные предсказания принимаются, на первом ошибочном токене цепочка обрывается. Если предиктор достаточно дешёвый и угадывает достаточно хорошо, за один дорогой проход основной модели можно получить сразу несколько токенов.
И это работает! На той же Qwen3.8–27B в Q6 включение MTP подняло среднюю скорость генерации в моих трёх тестах примерно с 56 до 106 ток/с — почти в два раза! Но наилучшим образом драфтеры должны повести себя там, где они наиболее нужны — в ускорении больших и медленных MoE моделей! Верно?

Первой под раздачу попала Qwen3.8-Flash‑Next. Без MTP она у меня давала около 34,3 ток/с. Включаю штатный MTP — и получаю:
n_max=1 — 20,5 ток/с;
n_max=2 — 21,2 ток/с;
n_max=3 — 20,3 ток/с;
n_max=4 — 20,9 ток/с.
Где n_max — макс. количество предсказываемых драфтером токенов.
То есть вместо ускорения — стабильные минус 38–41%. Причём изменение длины speculative‑блока почти ни на что не влияет: сама по себе работа MTP уже стоит настолько дорого, что отбить её дополнительными принятыми токенами не получается. Попытка добавить сверху ещё ngram‑mod тоже ничего не спасла — 20,7 ток/с.
Неудачный конкретный режим? Казалось бы, да. Но дальше стало интереснее.
На GLM-5.3 Flash обычный decode дал 9,22 ток/с. MTP с n=2 поднял скорость до 9,49 ток/с, то есть аж на 2,9%. С n=3 скорость уже упала до 8,19 ток/с.
Иными словами, здесь драфтер примерно вышел в ноль. Второй предсказанный токен ещё кое‑как окупает затраты на предиктор и проверку, третий — уже нет.
А вот DeepSeek V4 Flash внезапно показал обратную картину: с его DSpark ускорение у меня оказалось с 13.5ток/с до 17ток/с — примерно на 25%!
То есть на одном и том же компьютере, среди трёх больших современных MoE я получил буквально все возможные варианты:
Qwen Flash‑Next — драфтер сильно мешает.
GLM-5.3 Flash — почти ничего не меняет.
DeepSeek V4 Flash — заметно ускоряет.
После этого выражение «speculative decoding ускоряет генерацию» мне стало нравиться заметно меньше.
Причина, судя по всему, довольно приземлённая: драфтер тоже не бесплатен. Нужно вычислить его собственные предсказания, подготовить несколько кандидатов, проверить их основной моделью, отбросить неудачные. Всё это имеет смысл только в том случае, если стоимость этой дополнительной работы меньше, чем стоимость тех обычных последовательных проходов, которые удалось пропустить.
И здесь архитектура модели решает очень многое.
У Qwen3.8-Flash‑Next основная модель и без того чрезвычайно разреженная — около 6 млрд активных параметров на токен. Обычный проход получается относительно дешёвым, и мы пытаемся ускорить уже быстрый механизм, добавляя к нему вполне реальную дополнительную работу. Результат — минус 40%.
У GLM-5.3 Flash основная активная часть тяжелее, поэтому экономить уже есть что, но её обычный MTP, похоже, просто не угадывает достаточно длинные куски достаточно дёшево. Получается почти точка безубыточности.
А у DeepSeek V4 Flash используется уже более специализированный механизм DSpark, и он оказался достаточно эффективным, чтобы действительно окупать собственные расходы.
Есть ещё один неприятный момент именно для MoE с экспертами в RAM. Проверка сразу нескольких токенов не означает, что можно один раз загрузить экспертные веса и получить несколько токенов почти бесплатно. Разные позиции могут отправляться роутером к разным экспертам, и тогда при проверке блока приходится тащить из памяти гораздо больше разных весов. Если маршруты токенов хорошо пересекаются — отлично, если нет — преимущество совместной проверки быстро уменьшается.
На плотной Qwen3.8–27B, которая у меня помещается в VRAM целиком, ситуация заметно приятнее. Там для нескольких проверяемых токенов используются одни и те же матрицы весов, лежащие в быстрой GDDR7, и драфтер действительно может дать пользу. То есть проблема не в самой идее speculative decoding — просто для разных архитектур и способов размещения модели её экономика радикально различается.
Практический вывод у меня получился довольно грустный: драфтер нельзя просто включить и считать, что стало быстрее. Его нужно тестировать отдельно на каждой модели и на конкретном железе. Причём иногда оптимальной настройкой оказывается n=2, иногда n=3, а иногда — кнопка «выключить».
Результаты тестов
Но хватит уже душнить, пытаясь своими словами написать то, что большинству здесь наверняка очевидно. Вот результаты тестов:






В целом, глядя на получившиеся скорости и результаты тестов, я бы заключил, что:
-
Первое — поколение модели сейчас может оказаться важнее её номинального размера. Qwen3.8–27B, Qwen3.8-Flash‑Next, DeepSeek V4 Flash и GLM-5.3 Flash в практических тестах выглядят заметно сильнее многих более крупных моделей предыдущего поколения. К ним же с некоторой оговоркой можно отнести Ornith-1.5–35B‑A3B как своеобразный «топ за свои деньги». Понадеемся, что Qwen3.8–35B‑A3B все‑таки тоже выйдет. При этом Ornith-397B, Hy3, MiniMax M3 и прочие справились хуже, несмотря на гораздо больший размер. Hy4, вероятно, проиграл из‑за абсурдно низкого кванта.
Кстати, ещё один неожиданный результат — новые модели иногда пытаются вызывать инструменты, которых им никто не давал. В обычном чате это оказывается галлюцинацией, и, похоже, становится характерной ошибкой современных агентно‑обученных моделей.
Второе — размещение модели в памяти критично. Если у плотной Qwen3.8–27B часть постоянно используемых весов вылетает из VRAM в RAM, скорость может рухнуть почти на порядок. У MoE‑моделей выгрузка экспертных слоёв обычно переносится мягче, но тоже напрямую бьёт по скорости. Поэтому размер контекста, квант KV cache и выбор кванта весов оказываются не вспомогательными настройками, а частью настройки производительности.
Третье — NInfer действительно выделяется среди альтернатив llama.cpp, показывая реальный значительный прирост скорости. FreeToken тоже вначале показался мне более быстрым по скорости, но после приведения настроек reasoning к сопоставимому виду оказался примерно на уровне llama.cpp. ExLlamaV3 чаще оказывался медленнее, но видимо, при определенных условиях и удачных квантах, как получилось с GLM-5.3-Flash EXL3 4.05 bpw, может внезапно оказаться оптимальным вариантом.
Четвертое — драфтеры работают далеко не всегда. На Qwen3.8-Flash‑Next MTP дал почти минус 40%, на GLM-5.3 Flash — около нуля, а на DeepSeek V4 Flash специализированный dFlash/DSpark дал примерно плюс 25%. То есть включать speculative decoding “потому что он есть” точно не стоит, всегда требуются тесты.
Пятое — скорость в токенах в секунду сама по себе недостаточно точно описывает удобство модели. Qwen3.8-Flash‑Next генерирует быстрее DeepSeek V4 Flash, но в тестовых задачах часто пишет существенно больше токенов. Поэтому по полному времени выполнения конкретной задачи преимущество может оказаться ниже ожидаемого или вообще исчезнуть. GLM-5.3 Flash в этом отношении показала себя ещё тяжелее: она не только примерно вдвое медленнее DeepSeek по скорости генерации, но в тестах ещё и тратила больше токенов, так что компенсировать низкую скорость краткостью ответа не получилось. Хотя, заметим, в качестве ответов ей не откажешь.
-
Шестое — даже на Q4-Q6-Q8 видно, что квантование модели оказывается далеко не бесплатным по качеству. Ниже Q3 как правило уходить вообще бессмысленно, оставаться на Q3 можно только от безысходности, но даже Q4, особенно на малых моделях, оказывается не всегда приемлемым компромиссом.
Кстати, для Qwen3.8-Flash‑Next возможно размещение n‑gram‑эмбеддингов на SSD без драматичного замедления работы модели, но конкретно для моей текущей конфигурации это неактуально.
Краткие выводы
Для локального запуска поколение модели сейчас может оказаться важнее её номинального размера.
Главное ограничение — не просто объём VRAM, а то, помещается ли в неё «hot working set». KV cache и постоянно активную часть модели — лучше не трогать, а вот Vision часто можно вынести в RAM.
Для MoE быстрая RAM действительно позволяет запускать огромные модели с приемлемой скоростью. Хотя 10–30ток/с на пользовательской двухканальной DDR5 — все‑таки маловато.
NInfer на поддерживаемых моделях — реальный способ получить новый класс производительности. FreeToken и ExLlamaV3 могут оказаться полезными ситуативно.
Драфтеры не всегда дают ускорение — нужно тестировать отдельно для каждой модели и конфигурации оборудования.
Скорость модели лучше оценивать с учетом затрат токенов на получение результата.
Q4 уже нельзя считать полностью бесплатным по качеству, особенно на небольших моделях.
Топ локальных моделей на текущий момент, полагаю, выглядит так:
№ |
Модель |
Комментарий |
1 |
Qwen3.8–27B |
Топ по скорость/качество |
2 |
GLM-5.3-Flash-321B‑A18B |
Топ по качеству, но медленно. |
3 |
DeepSeek‑V4-Flash-0731-284B‑A13B |
Всё еще хорош. |
4 |
Qwen3.8-Flash‑Next-180B‑A6B |
Среди тройки новых MoE — самый быстрый. |
5 |
Ornith-1.5–35B‑A3B |
Топ за свои деньги (если их почти нет). |
P. S.:

Комментарии (10)

vektory79
09.09.2026 16:51Вообще странно… У меня ровно на той же конфигурации Qwen3.8-Flash‑Next на Freetoken выдаёт среднюю скорость генерации 52 т/с, которая почти не падает вплоть до полного забивания контекста в 256к.
И это у меня ещё где-то проблемы, т.к. у других и до 65 т/с доходит…

ZloyFrag Автор
09.09.2026 16:51Когда тестил и писал, нормальной реализации Freetoken для Qwen3.8-Flash‑Next еще не появилось. Обязательно протестирую, спасибо!

simplepersonru
09.09.2026 16:51Спасибо за разбор! Вопрос от активного пользователя нейронок, но почти без базы по самостоятельному запуску локальных моделей. Обладаю 4070 ti super (16 GB VRAM)
В поисках простых и элементарных решений уровня "запусти эту одну команду и все будет хорошо", нашел такой проект https://github.com/hasso5703/qwen3.8-27b-in-16gb. Выполнил несложную инструкцию, решил несколько возникающих попутно проблем типа не хватает каких-то модулей/пакетов - и все работает, круто
-
если взять и поменять "чототам внутри" на Ninfer - мы просто бесплатно получаем огромный прирост и это всегда будет справедливо?
При самостоятельном запуске очень много параметров, понятно что это дает гибкость, но с другой стороны не только лишь все могут филигранно их настроить, чтобы в этом был толк, либо "одно лечим другое калечим". Можно ли под конкретную модель собрать "объективно оптимальные параметры в любом общем случае", либо подборку различных значений параметров под очень ограниченные входные высокоуровневые настройки (например объем VRAM, RAM, предпочтение по длине контекста). Такие наборы параметров, которые почти нет смысла менять, которые позволяют достичь максимального показателя tok/sec

ZloyFrag Автор
09.09.2026 16:51"https://github.com/hasso5703/qwen3.8-27b-in-16gb" - если я правильно понимаю, здесь автор сделал специальный квант модели (3.7 bpw - наверно, что-то близкое к IQ3_XXS от Bartowski) и сборку llama.cpp, а также подобрал параметры (Q8/Q4 KV, без Vision и MTP) чтобы уместить 27B в 16Gb VRAM, пусть и в агрессивном кванте. По-моему, вышло круто, сложно сделать лучше.
Ninfer - система запуска, затачиваемая под конкретную модель в конкретном кванте (чаще 4-битном) на конкретной видеокарте (изначально 5090, но есть форки и для 4090, 3090). Нет, если нет версии под конкретную видеокарту, скорее всего не получится.
"объективно оптимальные параметры в любом общем случае" "которые позволяют достичь максимального показателя tok/sec" - думаю, только если мы совсем не упираемся в возможности железа, что происходит, мягко говоря, редко. И то, например, чем сильнее квантована модель, тем выше скорость, но ниже качество. По-моему, тут всегда компромисс. А на проф. оборудовании начинаются игры с возможностью параллельного запуска.
-

4klproJ
09.09.2026 16:51Автор, расскажи пожалуйста, как настраивал оперативу и какие изначально комплекты у тебя?
Скорости генерации токенов отличные, за статью спасибо!
Запускал у себя qwen 3.8 next-flash q4 у меня скорость ~ 14 токенов при контексте 262000в кванте 8

ZloyFrag Автор
09.09.2026 16:51Изначально два комплекта F5-6400J3239F48GX2-RM5RK - один брал при покупке компа, еще один вот последний урвал недавно. Один комплект работал при своих родных 6400, два комплекта изначально тоже загрузились с XMP с 6400, с UCLK:MCLK = 1:2, но на TestMem5 Absolut уже на 15-й минуте вылезла бага. Полез в биос, уменьшил множитель сначала с 64 до 62 (тоже тест не прошло, на 11:58 fail), затем до 60, fail, но плата переключила режим на 1:1. Когда вручную задал UCLK=MEMCLK/2, тест прошло. Далее попробовал все-таки добиться режима 1:1, увеличив напряжение до VCORE SOC = 1.20В, и это сработало. Дальше решил не мучить.

slabnoff
09.09.2026 16:51Чисто личный опыт. Может будет полезно или на мысли наведет полезные
Q4 квант на kv-кэш на больших объемах контекста заставляет модель бредить-чудесить. У меня банально opencode зацикливало. Можно попробовать отдельно для K-кэша q8, а для V-кэша q4. По идее так должно быть лучше - в теории вроде k-кэш более чувствителен к точности. Или надо таки турбокванты прикручивать, но вроде пока в основной ветке llama их нет
Для mtp помимо количества черновых токенов можно покрутить вероятность (--spec-draft-p-min). У меня, помнится для qwen3.6 пришлось 0.4 ставить, по умолчанию также был проигрыш
SER_26
Большое спасибо! Интересно. Пара вопросов к автору:
А делать что-то предлагаете с этим?
Например, Gemini предлагает так:
1) Разгон RAM и настройка таймингов (XMP / EXPO);
2) Использование кэша экспертов (Expert Caching);
3) Смена бэкенда через флаги потоков (
--threads);4) Частичный оффлоад (GPU Offloading) - перенос слоев модели в VRAM видеокарты;
5) Более жесткое квантование.
Как понимаю, Вы 4 и 5 применяли. А с 1 и 3 не возились?
и
немного не сочетаются. Или Q6-Q8 "на глаз" Вам, как пользователю были почти незаметны?
vektory79
Не могу сказать за автора, но я это всё пробова и оно давало чисто косметический эффект.
Кроме 2 и 5.
2 - на бытовом софте это просто не прикрутить :( Только на серверном. Но серверный софт сам по себе бесполезен на таком железе. Ну разве что freetoken это нормально умеет. Вот он действительно огненный результат выдает. Но он сильно ограничен по функциональности и тот же glm 5.3 flash я так и не смог запустить.
5 - снижение квантования довольно сильно сказывается весьма неочевидным образом. В агентском режиме нейронка может начинать точечно вставлять пургу, потом замечать это и исправлять. В конечном результате этого можно даже не заметить, но но затраченное время растёт.