Обновить

Тест DeepSeek, Qwen, GLM и прочих LLM на продвинутом пользовательском железе

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели10K
Всего голосов 17: ↑16 и ↓1+16
Комментарии11

Комментарии 11

Большое спасибо! Интересно. Пара вопросов к автору:

Хотя 10–30ток/с на пользовательской двухканальной DDR5 — все‑таки маловато.

А делать что-то предлагаете с этим?
Например, Gemini предлагает так:
1) Разгон RAM и настройка таймингов (XMP / EXPO);
2) Использование кэша экспертов (Expert Caching);
3) Смена бэкенда через флаги потоков (--threads);
4) Частичный оффлоад (GPU Offloading) - перенос слоев модели в VRAM видеокарты;
5) Более жесткое квантование.

Как понимаю, Вы 4 и 5 применяли. А с 1 и 3 не возились?

даже на Q4-Q6-Q8 видно, что квантование модели оказывается далеко не бесплатным по качеству. 

и

Q4 уже нельзя считать полностью бесплатным по качеству, особенно на небольших моделях.

немного не сочетаются. Или Q6-Q8 "на глаз" Вам, как пользователю были почти незаметны?

Не могу сказать за автора, но я это всё пробова и оно давало чисто косметический эффект.

Кроме 2 и 5.

2 - на бытовом софте это просто не прикрутить :( Только на серверном. Но серверный софт сам по себе бесполезен на таком железе. Ну разве что freetoken это нормально умеет. Вот он действительно огненный результат выдает. Но он сильно ограничен по функциональности и тот же glm 5.3 flash я так и не смог запустить.

5 - снижение квантования довольно сильно сказывается весьма неочевидным образом. В агентском режиме нейронка может начинать точечно вставлять пургу, потом замечать это и исправлять. В конечном результате этого можно даже не заметить, но но затраченное время растёт.

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

И это у меня ещё где-то проблемы, т.к. у других и до 65 т/с доходит…

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

Спасибо за разбор! Вопрос от активного пользователя нейронок, но почти без базы по самостоятельному запуску локальных моделей. Обладаю 4070 ti super (16 GB VRAM)

В поисках простых и элементарных решений уровня "запусти эту одну команду и все будет хорошо", нашел такой проект https://github.com/hasso5703/qwen3.8-27b-in-16gb. Выполнил несложную инструкцию, решил несколько возникающих попутно проблем типа не хватает каких-то модулей/пакетов - и все работает, круто

  1. если взять и поменять "чототам внутри" на Ninfer - мы просто бесплатно получаем огромный прирост и это всегда будет справедливо?


    При самостоятельном запуске очень много параметров, понятно что это дает гибкость, но с другой стороны не только лишь все могут филигранно их настроить, чтобы в этом был толк, либо "одно лечим другое калечим".

  2. Можно ли под конкретную модель собрать "объективно оптимальные параметры в любом общем случае", либо подборку различных значений параметров под очень ограниченные входные высокоуровневые настройки (например объем VRAM, RAM, предпочтение по длине контекста). Такие наборы параметров, которые почти нет смысла менять, которые позволяют достичь максимального показателя tok/sec

"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" - думаю, только если мы совсем не упираемся в возможности железа, что происходит, мягко говоря, редко. И то, например, чем сильнее квантована модель, тем выше скорость, но ниже качество. По-моему, тут всегда компромисс. А на проф. оборудовании начинаются игры с возможностью параллельного запуска.

Довольно удобно подбор параметров агентам поручать.

Спасибо за отличную статью.

Автор, расскажи пожалуйста, как настраивал оперативу и какие изначально комплекты у тебя?

Скорости генерации токенов отличные, за статью спасибо!

Запускал у себя qwen 3.8 next-flash q4 у меня скорость ~ 14 токенов при контексте 262000в кванте 8

Изначально два комплекта 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В, и это сработало. Дальше решил не мучить.

Чисто личный опыт. Может будет полезно или на мысли наведет полезные

Q4 квант на kv-кэш на больших объемах контекста заставляет модель бредить-чудесить. У меня банально opencode зацикливало. Можно попробовать отдельно для K-кэша q8, а для V-кэша q4. По идее так должно быть лучше - в теории вроде k-кэш более чувствителен к точности. Или надо таки турбокванты прикручивать, но вроде пока в основной ветке llama их нет

Для mtp помимо количества черновых токенов можно покрутить вероятность (--spec-draft-p-min). У меня, помнится для qwen3.6 пришлось 0.4 ставить, по умолчанию также был проигрыш

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации