Встала задача — срочно за вечер решить практический вопрос: какой квант ставить на карту и нужна ли мне RTX5090 домой (“нужна, нужна, нужна!” говорил внутренний голос). Прогнал 18 конфигураций по схеме — три модели, пять-шесть квантов на каждую, один и тот же набор из 22 реальных задач (код, RU-рассуждение, форматирование). Как итог — ответ на свой вопрос я получил, допом упало еще два интересных нюансика.
Карта — арендованная у Selectel RTX PRO 6000 (96 ГБ, Blackwell), частично по их AI-грантовой программе.
Таблица
|
Модель |
Квант |
Вес |
22/22 |
ток/с |
|---|---|---|---|---|
|
Ornith-9B |
IQ3_M |
4.72 ГБ |
22/22 |
228.7 |
|
Ornith-9B |
Q4_K_M |
5.91 ГБ |
22/22 |
195.1 |
|
Ornith-9B |
Q5_K_M |
6.85 ГБ |
22/22 |
179.7 |
|
Ornith-9B |
Q6_K |
7.70 ГБ |
22/22 |
164.3 |
|
Ornith-9B |
Q8_0 |
9.55 ГБ |
22/22 |
144.8 |
|
Ornith-35B (MoE) |
IQ3_XXS |
16 ГБ |
22/22 |
259.2 |
|
Ornith-35B (MoE) |
Q3_K_M |
16.70 ГБ |
22/22 |
258.9 |
|
Ornith-35B (MoE) |
Q4_K_M |
21.86 ГБ |
22/22 |
252.8 |
|
Ornith-35B (MoE) |
Q5_K_M |
25.49 ГБ |
22/22 |
244.3 |
|
Ornith-35B (MoE) |
Q6_K |
28.43 ГБ |
21/22 |
236.0 |
|
Ornith-35B (MoE) |
Q8_0 |
37.81 ГБ |
22/22 |
223.7 |
|
Ornith-35B (MoE) |
NVFP4, прод, vLLM |
20.4 ГБ |
22/22 |
92.9 (другой движок и метрика) |
|
Qwen3.8-27B |
UD-IQ2_XXS |
7.27 ГБ |
22/22, но 2 пустых ответа |
124.5 |
|
Qwen3.8-27B |
UD-Q3_K_XL |
13.15 ГБ |
22/22 |
87.7 |
|
Qwen3.8-27B |
UD-Q4_K_XL |
18 ГБ |
22/22 |
71.8 |
|
Qwen3.8-27B |
UD-Q5_K_XL |
20.88 ГБ |
22/22 |
63.3 |
|
Qwen3.8-27B |
UD-Q6_K_XL |
23.56 ГБ |
22/22 |
54.4 |
|
Qwen3.8-27B |
NVFP4A16, прод, vLLM |
28.84 ГБ |
22/22 |
80.7 (другой движок и метрика) |
Внутри каждого семейства — все четко, монотонно: меньше вес, быстрее ответ, без исключений. Ожидаемо и скучно, карта упирается в пропускную способность памяти, чем меньше данных перечитывать на каждый токен, тем быстрее.
Быстрее — не значит умнее (что логично, но не всегда 🙂
Ornith-1.5-35B-A3B — MoE, 35 млрд параметров номинально, активных на токен около 3 млрд. Отсюда и скорость: по отдельному прогону (omp bench, decode-профиль, тут я для простоты использовал родной новый функционал omp вместо своих бенчей) она держит 159-198 ток/с против 54-57 у Qwen3.8-27B — разница почти втрое. Вычисления масштабируются по активным параметрам, не по общему весу.
Прогнал head-to-head — два содержательных промпта, не синтетика: числа Фибоначчи и задачка про пять яблок с неоднозначным делением пополам. На коде — ничья, все три модели дали верный ответ, 35B многословнее. На задачке про яблоки Ornith-35B вставила арабское слово («نصف» — «половина») в русское предложение и дала решение с «5,5 яблок» — арифметика верна, а итог физически бессмыслен для целых фруктов. Ни Ornith-9B, ни Qwen3.8-27B этот дефект не воспроизвели: 9B честно разобрала оба варианта округления и дала целое число, Qwen ответила в две строки и сама отметила, что условие некорректно для целых яблок.
Цифры от самих команда Ornith-35B (Terminal-Bench 67.8 против 52.5 у Qwen3.6, SWE-bench 79 против 73.4 — обе непроверенные, из пресс-релиза) на этой проверке не подтвердились.
Выборка — два промпта, не приговор. Но это ровно тот случай, когда собственный замер важнее готовой таблицы от релиз-команды: если бы я поставил модель по одним лишь их цифрам, дефект узнал бы уже в проде. MoE реально быстрее — это бесспорно, просто «быстрее» и «умнее» — разные оси, и покупать вес модели за скорость, не проверив вторую ось на своих задачах, — обычная ошибка, которую я чуть не повторил сам для прода.
Два бита — это уже не квантизация, это грусть
Qwen3.8-27B на UD-IQ2_XXS (7.27 ГБ) дала пустой ответ на 2 из 22 реальных задач — не таймаут, не мусор, буквально ''. Обе задачи практические: Ansible-плейбук с файрвол-правилами и Python-функция очистки контактных данных. Ниже 3х-бит модель не то что хуже отвечает — иногда не отвечает вовсе. Квант дисквалифицирован для реальной работы вне зависимости от того, как заманчиво смотрится размер файла. (Честно, я искал эту инфу очень долго по интернету и встречал рассказы что Q2 вообще ок, поэтому считал своим личным долгом прогнать этот тест)
Один вопрос ничего не доказывает про квант
Отдельная задача на фактчек (prefix caching у Mamba-гибридов в vLLM) дала шумный результат: у Ornith-9B — неверно на Q4 и Q8, верно на IQ3_M и Q5_K_M, с оговоркой на Q6_K; у Qwen — неверно на IQ2/Q3/Q5, верно на Q6_K_XL и на боевом NVFP4A16. Единственная реально устойчивая картина: Ornith-35B ошиблась на этом вопросе на каждом протестированном уровне — включая Q8_0 и продакшн-NVFP4. Раз ошибка не исчезает даже на самом точном кванте, дело не в квантизации — дело в самой модели на этом конкретном вопросе. Единичный фактчек — шумный сигнал о кванте и неплохой сигнал о модели, если повторяется на каждом уровне.
vLLM ещё не умеет то, что нужно (пока)
Хотел прогнать все 18 конфигураций не только через Ollama, но и в бою — на vLLM, том же движке, что и в продакшне. Не вышло: с релиза 0.27.1 поддержка GGUF была убрана из vLLM в отдельный плагин, и опубликованный релиз плагина (v0.0.5, тег от 10 августа) вообще не знает архитектуру семейства Qwen3.5 — ни Ornith, ни Qwen3.8, это именно их гибрид Gated DeltaNet + полное внимание + MoE. Поддержка появилась в Гите плагина 19 августа, за 6 дней до этого замера, и потребовала три нетривиальных числовых багфикса даже для маленькой плотной модели. Единственный тест именно на эту комбинацию архитектура+GGUF помечен slow.
Раз сравнить в проде честно нельзя, весь замер шёл через Ollama (гусары, молчать!) — а значит, скорость выше сравнивает не только квант, но и движок вместе с квантом. Разделить их корректно смогу, когда плагин догонит архитектуру.
Какую карту под какие цели (самый важный блок имо)
Аренда у Selectel RTX PRO 6000 даёт 96 ГБ VRAM — хватает на обе продакшн-модели разом (Ornith-35B в NVFP4, Qwen в NVFP4A16, вместе 90.8 ГБ по калиброванному бюджету с запасом на конкурентность, с чем я немало мучался). Для тех, кто выбирает карту под свою нагрузку покажу что реально проверено, а что посчитано по формуле (вес + KV), а не измерено (говорить про RTX3090 например не хочется, так как ее нет на руках, но в тестах есть MacBook M5 Pro 24GB):
|
Видеопамять |
Что ставить |
Основание |
|---|---|---|
|
16 ГБ |
Ornith-9B, Q5_K_M-Q6_K (~11-13 ГБ с KV) |
Измерено |
|
24 ГБ |
Ornith-9B с большим запасом; Ornith-35B на агрессивном кванте (16 ГБ весов) — контекст придётся урезать |
9B измерено, 35B на 24 ГБ не тестировал |
|
32 ГБ |
Ornith-35B, Q4_K_M-Q5_K_M (реально ~31 ГБ на полных 262K контекста) |
Измерено |
|
48 ГБ |
Одна модель, не обе — вместе им нужно ~91 ГБ |
Измерено (отрицательный результат — вылет по памяти при попытке) |
|
72 ГБ |
Обе модели на умеренных квантах, впритык |
Не тестировал, посчитано по формуле |
|
96 ГБ |
Обе модели на боевом качестве и полном контексте — то, что стоит у меня |
Измерено, это и есть RTX PRO 6000 |
Говорю сразу и честно
Этот тест — один прогон на конфигурацию. Скорость внутри Ollama сравнивается честно — квант к кванту, движок один и тот же. Качество между Ollama и продакшн-vLLM сравнивать нельзя корректно по указанной выше причине с плагином. Единичный фактчек на пункте про Mamba — шумный сам по себе; вывод про Ornith-35B держится не на нём одном, а на том, что ошибка повторилась на всех уровнях без исключения, включая почти лосслесс. Языковой дефект 35B — два промпта, не бенчмарк; нужен больший фиксированный набор тестов, прогнанный вслепую, прежде чем это станет приговором, а не сигналом.
P.S. Я честно видел мало тестов, где сразу понятно что можно взять к себе в работу на GPU четко по весам модели и KV, так как я делал по факту для себя — тут эта инфа есть, уверен, что много кому будет полезно. Я бы честно брал что-то простое и ставил 9B c Q5/Q6.
Спасибо за внимание!
ссылка на оригинал статьи https://habr.com/ru/articles/1074434/