Продолжаю сжимать, и вот некоторые наблюдения.
Оказалось, что даже на такой старой карточке, как у меня (V100 32GB), можно делать MTP (multi-token prediction).
Использование MTP-моделей, вместе с включенным спекулятивным выполнением (опции --spec-type draft-mtp и --spec-draft-n-max N в llama.cpp), дают ускорение до двух раз (число N подбирается экспериментально от 1 до 6, и используется то, которое даёт самый высокий draft acceptance). MTP требует где-то на гигабайт больше VRAM.
Ускорение инференса позволило перейти к анализу действительно больших тредов с полноразмерными картинками. Рутинные операции удалось автоматизировать скриптами (скачивание и преобразование картинок, извлечение имён файлов картинок, создание промптов для субагентов, вставка описаний картинок из jsonl-файлов обратно в тред).
Вот три модели — короли на потребительском железе:
1. Qwen 3.5 27B. Из минусов: типично ЛЛМный стиль письма ("не то, а это"), часто приукрашает реальность, склонен к поиску глубинного смысла и галюнам на ровном месте. Он многое находит, но после него часто нужно исправлять места, где он катастрофически лажает.
2. Qwen 3.6 27B. Напоминает помесь Терминатора, пробивающего кирпичную кладку головой, с Шелдоном Купером из Big Bang Theory. Чуть лучше пишет, не забывая при этом изредка коверкать грамматику (не сказал бы, что он в этом значительно хуже 3.5). Так же трудолюбив, что может приводить к высасыванию фактов из пальца.
3. Gemma 4 31B. Парадокс этой модели в том, что она не зарывается слишком глубоко, и поэтому меньше лажает, требует меньше контроля. Её ответы короче, более лаконичные и часто содержат неудобную правду, на которую Qwen с радостью бы закрыл глаза. Более того, она чрезвычайно устойчиво следует инструкциям, если они простые, когда всё уже автоматизировано.
Для Геммы я использую тоже пятибитные кванты от Unsloth. Но из-за того, что Gemma требует больше памяти, приходится запускать только один слот (--parallel 1).
Сейчас вот с такими опциями гоняю:
llama-server \
--host 0.0.0.0 \
--port 8080 \
--model unsloth-Gemma-4-31B-it/gemma-4-31B-it-UD-Q5_K_XL.gguf \
--mmproj unsloth-Gemma-4-31B-it/mmproj-F16.gguf \
--model-draft unsloth-Gemma-4-31B-it/gemma-4-31B-it-Q8_0-MTP.gguf \
--alias 'gemma4' \
--jinja \
--gpu-layers all \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
--ctx-size 98304 \
-ctk q8_0 -ctv q8_0 \
-b 1024 -ub 1024 \
--spec-type draft-mtp \
--spec-draft-n-max 4 \
--parallel 1 \
--ctx-checkpoints 12 \
--checkpoint-min-step 16384 \
--cache-ram 0 \
--no-cache-idle-slots