Недавно я обновил свою видеокарту до RTX-5060-TI 16GB. Получив новую карту я решил исследовать, что можно на ней запустить из нейросетей. Традиционно пишут, что нормальные ИИ модели начинаются с rtx3090 и выше, что ниже 24GB VRAM жизни нет. В этой статье я постараюсь развеять этот миф.
Модели на ограниченном железе всегда имеют компромисс между скоростью, качеством и контекстом. Сформирую требования, пригодные для агентик кодинга:
Контекстное окно > 80к (системный промпт + пара скиллов уже 15к токенов, при низком контексте модель постоянно будет забывать детали и сжимать историю сообщений)
Скорость >= 50 тпс (чем выше скорость, тем быстрее проходят циклы разработки, тем быстрее новые фичи идут в релиз. До этого пробовал с 30 тпс работать, агент кажется заторможенным)
Интеллект должен быть достаточным для того, чтобы допускать мало ошибок в коде и чтобы его дебагинг больше чинил, чем ломал
Выбор модели
Бесспорным флагманом локальных нейросетей на низкой врам сейчас является Qwen3.8–27b. Также имеется более умный Qwen3.8-Next‑Flash, но он требует не менее 64гб ОЗУ для нормальной работы и его ТПС на моем железе держится в районе 20, что не удовлетворяет требованиям скорости. В качестве целевой модели будет выбран Qwen3.8–27b
Начнём с очевидного — стандартный qwen весит 51,77ГБ — получим почти полную выгрузку в ОЗУ и скорость 0.3 токена в секунду. Исходная модель кодирует веса в формат bf16, что означает 16 бит на один вес модели. Для высокой скорости работы модель и её веса должны целиком помещаться в гпу, поэтому необходимо брать квантованную модель.
Кратко расскажу суть квантования. Специалисты ML с Hugging Face сжимают веса моделей так, чтобы минимизировать потери её интеллекта, при этом значительно уменьшив вес файла. Сейчас уже научились квантовать модели практически без потерь навыков в кодинге. Именно такие кванты используются для нашей задачи. Под целевое железо нам подходят 3 и 4 кванты, обеспечивающие размеры модели менее 16 гигабайт.
В процессе тестирования моделей всплыло дополнительное требование. Стандартные модели поставляются с цензурой, которая часто вставляет палки в колеса, отказываясь выполнить запрос. Для решения этой проблемы выбирались кванты с модификацией на удаление цензуры. На HF популярны методы Abliteration и Heretic. Abliteration находит в активациях модели направление, связанное с отказами, и модифицирует веса так, чтобы подавить его влияние без полноценного переобучения. Heretic развивает этот подход и автоматически подбирает параметры такой модификации, стараясь одновременно снизить число отказов и минимизировать отклонение поведения модели от оригинала.

Qwen3.8–27B‑IQ4_XS
Помимо чисел у квантов ещё есть категории от XXS до XXL, от них зависит насколько агрессивное было сжатие. Стандартный Q4 квант весит чуть больше 16гб и имеет выгрузку в озу, поэтому для тестов использовался более малый IQ4_XS (вес 15.3 ГБ). Популярных децензоров с минимальными потерями в кодинге два — orcarouter и JonathanColetti. Я протестировал оба и разницы не заметил, orca по ощущениям немного лучше рисует svg, поэтому остановился на ней.
Для запуска модели использовался llama‑server последней версии. Конфиг к этой модели выглядел так:
llama-server ^ -m models/Qwen3.8-27B-Uncensored-IQ4_XS.gguf ^ -ngl all ^ --fit off ^ -c 64000 ^ -np 1 ^ --flash-attn on ^ -ctk q4_0 ^ -ctv q4_0 ^ -b 512 ^ -ub 128 ^ --jinja ^ --reasoning off
Объяснение параметров
ngl all — попытаться положить всю модель и контекст на гпу, ускоряет вычисления
fit off — запрещает серверу менять параметры контекста и слоёв модели на гпу. По умолчанию может срезать контекст или выгрузить часть слоёв на процессор при нехватке гпу памяти
c — доступный контекст, в данном случае 64 000 токенов
np 1 — ограничивает параллельность запросов к серверу до одного, благодаря нему делает некоторые оптимизации ускоряя вычисления
flash‑attn — быстрое внимание, делает вычисления блоками, снижает потребление врам и повышает скорость
ctk, ctv — квантование контекста до 4 бит, снижает потребление врам
b, ub — батчи на которых выполняется prefill, то есть обработка input токенов. Повышение b увеличивает скорость появления первого токена вместе с расходом врам, 512/128 компромисс скорости и расхода памяти
jinja — формат общения с моделью удобный для агентов и llama ui
reasoning — влияет на уровень рассуждений и бюджет токенов на них
Данный конфиг дал примерно 25 тпс, что недостаточно для нормальной работы. В качестве оптимизации был изучен механизм mtp (Multi‑Token Prediction) — подход, при котором модель пытается предсказывать сразу несколько последующих токенов вместо одного. Этот метод особенно хорош в написании кода, на нём прирост достигает х3 скорости. В рассуждениях скорость становится ниже, поскольку модель реже угадывает токены. В текущую модель mtp уже встроен, для его активации потребовалось добавить в конфиг несколько новых параметров:
-ctkd q4_0 ^ -ctvd q4_0 ^ --spec-type draft-mtp ^ --spec-draft-n-max 3 ^
Объяснение
ctkd, ctvd — квантование мтп кэша, также экономит врам
spec‑type draft‑mtp — метод спекулятивного декодинга. Кроме мтп есть другие методы, один из них будет описан дальше
spec‑draft‑n-max — сколько токенов за раз пытается угадать модель. Число индивидуально под каждую модель, вычисляется эмпирическим путём через тестирование на одинаковых промптах
Добавление этих параметров повысило средний тпс до 40–50, что в целом удовлетворяет требованию по скорости, но мтп увеличило расход врам и потребовало уменьшить контекст до 32к. С открытом браузером на несколько вкладок контекст пришлось дополнительно понизить до 20к, что сделало этот вариант непригодным для агент кодинга. Я оставил этот квант в качестве модели для чата, как эксперта для одноразовых задач.

Qwen3.8–27B‑UD‑Q3_K_XL
Чтобы вместить больше контекста пришлось искать модели в третьем кванте. Подходящей под эту задачу мне показалась UD‑Q3_K_XL (13.2 ГБ) от outsourc‑e. Эта модель является форком популярной версии от unsloth с вырезанной цензурой, сохраняя максимальные навыки кодинга. Под эту модель был написан отдельный конфиг:
llama-server ^ -m models/Qwen3.8-27B-Unleashed-UD-Q3_K_XL.gguf ^ -ngl all ^ --fit off ^ -c 92160 ^ -np 1 ^ --flash-attn on ^ -ctk q4_0 ^ -ctv q4_0 ^ -ctkd q4_0 ^ -ctvd q4_0 ^ --spec-type draft-mtp ^ --spec-draft-n-max 3 ^ -b 512 ^ -ub 128 ^ --jinja ^ --reasoning-effort low ^ --reasoning-budget 2048
Из заметных изменений здесь комфортно вмещается 92к контекста даже с открытым браузером, а также добавлен небольшой reasoning для более качественных ответов. Эта модель выдаёт около 50 тпс на кодинге и полностью соответствует заявленным в начале критериям.
После получения подходящей модели я начал смотреть как подключить её к opencode. Для этого потребовалось модифицировать её конфиг вписав в неё локальный адрес сервера llama:
{ "$schema": "https://opencode.ai/config.json", "model": "llama.cpp/qwen3.8-27b", "plugin": [ "superpowers@git+https://github.com/obra/superpowers.git" ], "provider": { "llama.cpp": { "npm": "@ai-sdk/openai-compatible", "name": "llama-server (local)", "options": { "baseURL": "http://127.0.0.1:8080/v1" }, "models": { "qwen3.8-27b": { "name": "Qwen3.8 27B", "limit": { "context": 92160, "output": 15360 } } } } }, "compaction": { "auto": true, "prune": true, "reserved": 8192 } }
Из интересного, я добавил ограничение аутпута — 15к токенов на один ответ, чтобы модель не съела весь контекст и автоматическое сжатие контекста за 8к токенов до лимита. Также был добавлен плагин superpowers , который делает модели значительно эффективнее, за счёт создания детальных планов и разработки через TDD.
В качестве тестов модель написала несколько простых игр на html+js. С хорошим планом игры работали уже с первого промпта, в случае возникновения ошибок нейросеть самостоятельно вносила исправления до полной работоспособности.


На этапах thinking и составлении плана тпс проседает до ~38, на написании кода вырастает до 50. Это связано с тем, что мтп чаще угадывает код и значительно реже обычный текст. Эту нейросеть можно использовать в работе, но я решил найти варианты, которые можно разогнать ещё сильнее.
Qwen3.8-GSQ‑RCO‑IQ3_S
Эта версия кванта размером всего 11.8 гб, что по задумке обеспечивает большую вместимость контекста. У неё имеется версия со встроенным мтп, но в ходе тестов выяснилось, что на этой модели мтп плохо угадывает контекст. В результате была взята модель без встроенного мтп, а также протестирована новая архитектура DFlash. Это модифицированная версия мтп, которая позволяет прогнозировать следующие токены параллельно, давая прирост в скорости. Файл DFlash2-Q4_K_M весит 1.14 гб и запускается вместе с моделью. Для запуска я использовал следующий конфиг:
llama-server ^ -m models/Huihui-Qwen3.8-27B-abliterated-GSQ-RCO-IQ3_S.gguf ^ -md models/Qwen3.8-27B-DFlash2-Q4_K_M.gguf ^ -ngl all ^ -ngld all ^ --fit off ^ -c 92160 ^ -np 1 ^ --flash-attn on ^ -ctk q4_0 ^ -ctv q4_0 ^ -ctkd q4_0 ^ -ctvd q4_0 ^ --spec-type draft-dflash ^ --spec-draft-n-max 4 ^ -b 512 ^ -ub 128 ^ --jinja ^ --reasoning-effort low ^ --reasoning-budget 2048
Из примечательного здесь spec‑type draft‑dflash — новый метод прогнозирования и увеличение draft‑n‑max. В некоторых квантах максимальное ускорение достигается на n=6, но в третьем кванте он теряет acception rate и снижает скорость, поэтому оптимальным выбран n=4. Также контекст остался прежним, поскольку освободившееся место от сжатия модели занял dflash.
Тестирование в кодинге не показало явной деградации, различие было на уровне стат. погрешности. При этом скорость кодинга возросла до 55–65 тпс, в пике достигая 70, что эффективно ускоряет разработку.

Прямое сравнение моделей
Протестировав эти три модели можно составить таблицу с их соотношением сильных и слабых сторон
Модель | Скорость | Контекст | Интеллект |
IQ4_XS | 40 — 50 тпс | 22к | 100% |
UD‑Q3_K_XL | 45 — 55 тпс | 92к | 97% |
GSQ‑RCO‑IQ3_S | 55 — 65 тпс | 92к | 95% |
Деградация моделей в кодинге почти не заметна, но низкие кванты могут быть слабее в рассуждениях на длительных сложных задачах.
В качестве дополнительного теста я попросил все три модели нарисовать медведя на машине в svg файле. Дополнительно к ним был подмешан импостер gemma4-26b.
Промпт
Создай автономный SVG 16:9 по мотивам референса.
Сцена: яркая мультяшная векторная иллюстрация. Летний пейзаж с голубым небом, облаками, солнцем, горами, зелёными холмами, хвойными деревьями и цветами. По центру дороги стоит красный ретро‑кабриолет, вид спереди. За рулём сидит улыбающийся бурый медведь в голубом шарфе.
Слева расположен большой зелёный дорожный знак с надписями: «ОМСК» «80» «СЕВЕР» и белой стрелкой вверх.
На номере автомобиля текст: «КОСОЛАПЫЙ»
Сверху крупный мультяшный заголовок: «Qwen 3.8 27b»
Стиль: flat vector, детская иллюстрация, чистые формы, округлые контуры, насыщенные цвета, лёгкие градиенты и блики. Композиция должна быть визуально близка референсу, но точные размеры, координаты и мелкие детали выбери самостоятельно.
Используй только SVG‑примитивы и текст. Не используй raster images, base64, canvas и внешние ресурсы.
Верни только валидный SVG‑код от <svg> до </svg>.
Результаты:

Кванты квенов не подписаны, попробуйте угадать кто что нарисовал. Мне кажется лучше всех получился рисунок справа вверху, нарисовал его самый маленький IQ3_S.
P. S. тест не очень надёжный и может выдавать сильно разное качество на нескольких запусках, однако при сильной деградации моделей разница становится ощутимой. В данном случае сильной разницы между квенами нету.
Выводы
Невозможность запускать сильные модели на бюджетных видеокартах мне кажется преувеличенной. Конечно, переход на RTX-3090 даёт определенные преимущества. Можно запустить квант побольше и выделить больше контекста, пропускная способность ллм может перевалить за 100 тпс. Но списывать свою 16 ГБ врам видеокарту со счетов не стоит, она вполне может запускать мощные модели с хорошим контекстом и скоростью работы.
