Селф-хост Ornith-1.5 и Qwen3.8: тестирую 18 квантов на одной карте и похоже не покупаю RTX5090

от автора

Встала задача — срочно за вечер решить практический вопрос: какой квант ставить на карту и нужна ли мне 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/