Сначала я выбрал модель, которая отлично писала код. Подключил её к OpenCode и выяснил, что создавать файлы на диске она просто не умеет. Взял другую — та уверенно работала с файлами, но полностью поплыла на русском языке.
В итоге победила модель, которую я поначалу оставил «для экспериментов»: слишком большая, на грани по квантованию и, казалось, сплошной компромисс.
Ниже — о том, как я подбирал рабочую лошадку под WordPress и фронтенд на видеокарте с 16 ГБ памяти. Со скоростями, квантами и неожиданным экзаменом по русскому языку.
Для каких задач я её искал
Я занимаюсь WordPress‑разработкой. Мой повседневный набор — PHP, HTML, CSS, JavaScript, интеграция вёрстки и работа с блоками Gutenberg.
От локальной модели мне нужны были вполне конкретные вещи: прочитать существующий код, внести правки, создать нужные файлы и соблюдать правила проекта. В том числе писать по‑русски названия полей, которые потом увидит человек в админке.
Работать я собирался через OpenCode, поэтому одного умения хорошо писать код было недостаточно: нужны были ещё вызовы инструментов, нормальный русский и скорость, при которой не забываешь, о чём спрашивал. И всё это должно было помещаться в 16 ГБ вместе с контекстом.
В контексте ещё должны жить инструкции, исходники, переписка и результаты вызова инструментов. Если модель загрузилась в видеопамять, это ещё не значит, что там осталось место для её полноценной работы.
Качество я оценивал по своим рабочим задачам, а скорость и память замерял на таком компьютере:
Компонент |
Моя конфигурация |
|---|---|
Видеокарта |
GIGABYTE GeForce RTX 5060 Ti WINDFORCE MAX OC, 16 ГБ |
Память GPU в диагностике |
|
Процессор |
AMD Ryzen 5 5600 |
Оперативная память |
32 ГБ |
Среда |
Windows, |
Пакет CUDA runtime |
|
Агент для работы с проектом |
OpenCode |
Гонять модель на абстрактных задачах вроде «напиши функцию сортировки» не имело смысла — синтетические тесты ничего не говорят о реальной работе.
Задача стояла вполне прикладная: превращать готовую HTML‑вёрстку в блоки Gutenberg через Carbon Fields, в рамках моего базового плагина для блоков. Модель должна была разобраться в структуре, разложить PHP по нужным файлам, подключить блок и задать осмысленные подписи к полям в админке на русском языке.
Первый этап: скачать всё, что посоветовали нейросети
Список кандидатов я собирал через ChatGPT, Claude и DeepSeek: спрашивал, что из кодинг‑моделей реально влезет в 16 ГБ, и скачивал варианты. Получилась небольшая коллекция:
Модель |
Какие варианты пробовал |
Первое впечатление |
|---|---|---|
Qwen Coder 7B семейства 2.5 |
Q4, Q8 |
Подходит для небольших задач, в Q8 хорошо помещается |
Qwen2.5-Coder-14B‑Instruct |
Q4, Q5 |
Хороший баланс размера и качества |
Qwen3-Coder-30B‑A3B‑Instruct |
Q4, Q3 |
Q4 не помещался целиком в VRAM; Q3 оказался интереснее, чем я ожидал |
Qwen3-Coder‑REAP-25B‑A3B |
Q4 |
Помещается с контекстом до 32K в моей конфигурации |
DeepSeek‑Coder‑V2-Lite‑Instruct |
Q4, Q5 |
Аномально медленная работа в моих запусках |
Phi-4 |
— |
Отдельной роли в коллекции не нашлось |
Модели на 3–8 миллиардов параметров я не стал подробно сравнивать как кандидатов на основную роль. Но одну 7B оставил для мелких задач: иногда нужно поправить небольшой фрагмент, и для этого необязательно запускать самого тяжёлого участника.
Для тех, кто пока не запомнил все эти индексы: квантование уменьшает точность хранения весов модели и позволяет экономить память. Q4, Q5 и Q8 — обозначения разных вариантов такого сжатия. Обычно меньший размер означает больший компромисс по качеству, но сравнивать модели только по цифре после Q нельзя.
У Qwen3-Coder есть ещё обозначение A3B. Это MoE‑модель: всего у неё около 30 миллиардов параметров, а при обработке токена активируется примерно 3 миллиарда. Это снижает объём вычислений, но не превращает её в трёхмиллиардную модель по требованиям к хранению весов. Точные характеристики есть в карточке Qwen3-Coder.
REAP — отдельная история. Это версия исходной модели, уменьшенная за счёт удаления части экспертов. То есть здесь меняется состав модели, а квантование уже применяется поверх неё. Метод описан в карточке Cerebras
Вместо «вроде быстро» — скрипт с замерами
На коротких вопросах модель отвечает быстро, но стоит скормить ей побольше кода — начинает заметно тормозить. По таким впечатлениям выбирать было сложно.
С помощью ChatGPT я написал PowerShell‑скрипт для тестирования через llama-server.exe. Он последовательно прогонял несколько размеров контекста, снимал использование видеопамяти через nvidia-smi и сохранял результаты.
Поэтому задачу я поставил предельно конкретно: нужны реальные цифры — сколько токенов вошло, сколько памяти занято после загрузки, сколько на пике и с какой скоростью всё работает. Общее понимание у меня уже сложилось, а единой таблицы для сравнения ещё не было.
Скорость смотрел отдельно на чтении входного текста (prefill) и на генерации ответа (generation). Заодно следил, сколько свободной VRAM остаётся на пике нагрузки.
Размер файла модели на диске при этом не равен расходу VRAM. Помимо весов, память нужна под рабочие буферы и KV‑кеш — данные, которые используются при обработке контекста.
В выводе скрипта были отдельные колонки Context и PromptTokens. Первая — настроенный размер окна, вторая — фактическое число входных токенов. В финальном тесте на 32K вход занимал 29 491 из 32 768 токенов, а в следующем прогоне на 48K — 44 236 из 49 152. В обоих случаях это примерно 90% окна: проверялась работа с реально длинным запросом, а не короткое «привет» при большом значении в настройках.
Просто скачать подходящий по весу GGUF и загрузить его в память — лишь половина дела. Реальный стресс‑тест начинается при забитом под завязку окне.
Первый победитель: Qwen2.5-Coder-14B Q5
7B в Q8 осталась для быстрых небольших задач. Полная Qwen3-Coder-30B в Q3 — для экспериментов. REAP 25B в Q4 — как перспективный кандидат.
Основной моделью я выбрал Qwen2.5-Coder-14B в Q5. Она устраивала меня по размеру и качеству кода. Казалось бы, идеальный баланс найден — на этом можно было ставить точку.
Заодно почистил коллекцию.
DeepSeek‑Coder‑V2-Lite у меня работала аномально медленно. Почему — так и не разобрался. Другие кандидаты уже работали лучше, поэтому её удалил.
Phi-4 тоже убрал. Это универсальная 14B‑модель с заявленным контекстом 16K, а я искал помощника под конкретный процесс разработки. Её характеристики можно посмотреть в карточке Microsoft. Среди уже отобранных вариантов я не нашёл задачи, ради которой стоило держать ещё и её.
Забить диск гигабайтами GGUF под любые кванты легко. Гораздо труднее получить инструмент, которому не страшно доверить реальный проект.
Подключаю OpenCode — и меняю победителя
Подключил выбранную Qwen2.5-Coder-14B к OpenCode. И довольно быстро пожалел, что не сделал этого раньше.
На просьбу создать или отредактировать файл модель могла вывести JSON в чат и остановиться. Текст есть. Изменений в проекте нет.
До подключения агента я оценивал, какой код она предлагает. Теперь критерий стал предельно простым: создан запрошенный файл в проекте или нет?
В агентском сценарии модель должна корректно запросить вызов инструмента, получить результат и продолжить работу. Просто написать похожий на вызов JSON недостаточно.
С вызовами инструментов должны сойтись модель, шаблон чата, сервер и клиент — у llama.cpp про это есть отдельная документация. В моей связке надёжно это не заработало.
А вот Qwen3-Coder‑REAP-25B‑A3B подхватила задачи OpenCode заметно лучше. Она выполняла команды, работала с файлами и хорошо справлялась с кодом. При этом в Q4 оставалось место для контекста до 32K.
Казалось, идеальный кандидат наконец найден: код пишет, команды агента выполняет, по памяти запас есть. Поиски окончены — теперь уже наверняка.
Второй фаворит засыпался на русском языке
В моих блоках Gutenberg нужны русские названия полей. Это часть интерфейса: пользователь должен видеть понятные подписи в админке.
Я не просил модель писать художественную прозу. Мне нужны были подписи к полям Carbon Fields. Казалось бы, если модель осилила бэкенд на PHP, с обычным русским текстом проблем быть не должно.
И именно здесь у REAP начались проблемы. Добиться стабильно чистого русского в заголовках не получалось. Я уточнял инструкции, добавлял правила и запреты, но результат всё равно меня не устраивал.
Код модель писала. Инструменты вызывала. А на подписях полей мы застряли.
Переписывать подписи после каждого запуска мне не хотелось.
Я вернулся к полной Qwen3-Coder-30B‑A3B‑Instruct в Q3. Она сразу отработала промпт и выдала нормальные русские заголовки.
Осталось договориться с видеопамятью.
Q3 бывает очень разным
У полной 30B‑модели в моей первоначальной конфигурации получалось работать примерно с 24K контекста. Хотелось больше.
Особенно наглядным оказался тест обычного Q3_K_M:
Настроенный контекст |
Генерация |
|---|---|
16K |
63,8 токена/с |
32K |
1,57 токена/с |
На 32K скорость упала примерно в сорок раз. При полутора токенах в секунду работать я уже не хотел — пришлось искать другой вариант.
Тогда я попробовал ещё два варианта квантования от Unsloth:
Вариант Qwen3-Coder-30B‑A3B‑Instruct |
Размер файла, примерно |
|---|---|
|
14,7 ГБ |
|
13,8 ГБ |
|
12,8 ГБ |
Размеры указаны для файлов в репозитории Unsloth. Это гигабайты файла на диске, а не замеры занятой видеопамяти.
Сначала я больше склонялся к UD-Q3_K_XL: он экономил память относительно Q3_K_M, при этом выглядел менее радикальным компромиссом, чем вариант с названием IQ3_XXS.
Но после прошлых тестов полагаться только на буквы в названии файла я уже не стал.
Финальный замер: почти одинаковая скорость, разный запас памяти
Вот результаты двух запусков с настроенным контекстом 32 768 токенов и входом 29 491 токен:
Метрика |
UD‑IQ3_XXS |
UD‑Q3_K_XL |
|---|---|---|
VRAM после загрузки, MiB* |
14 717 |
15 605 |
Пиковая VRAM, MiB* |
14 794 |
15 666 |
Прирост от загрузки до пика, MiB* |
77 |
61 |
Свободно на пике, MiB* |
1 517 |
645 |
Обработка входа, токенов/с |
1 863,13 |
1 718,98 |
Генерация, токенов/с |
42,32 |
42,04 |
77 MiB — это просто прирост от загрузки до пика, но эта разница не показывает полный расход на контекст: LoadedMB я замерял уже после запуска сервера с выбранными настройками. В таблице показана занятая память карты, включая всё, что разместилось там помимо весов.
По скорости генерации для меня это ничья: 42,32 и 42,04 токена в секунду.
А вот запас памяти различался существенно: у UD-IQ3_XXS оставалось на 872 MiB больше — 1 517 против 645. Более чем вдвое больше свободного места при практически одинаковой скорости генерации.
Разницы в качестве кода на своих задачах я тоже не заметил. Отдавать за UD-Q3_K_XL почти ещё гигабайт памяти не имело никакого смысла.
А если всё‑таки попробовать 48K?
Конечно, на этом всё не закончилось: когда на карте пустуют полтора гигабайта, сразу хочется выжать из них максимум.
Вот что получилось на 48K:
Метрика |
Прогон на 48K |
|---|---|
Настроенный контекст |
49 152 токена |
Фактический вход |
44 236 токенов |
VRAM после загрузки |
15 878 MiB |
Пиковая VRAM |
15 937 MiB |
Прирост от загрузки до пика |
59 MiB |
Свободно на пике |
374 MiB |
Обработка входа |
1 419,72 токена/с |
Генерация |
22,68 токена/с |
48K прошёл, но свободными остались всего 374 MiB. Генерация — 22,68 токена/с, почти вдвое медленнее, чем 42,32 у UD-IQ3_XXS на 32K.
Попытка замахнуться на контекст в 65K закономерно упала с ошибкой. Так что идея выжать честные 64K так и осталась слишком оптимистичным сценарием.
Для повседневной работы я остановился на 32K: около 42 токенов в секунду и заметный запас памяти. До 48K добраться удалось, но оставлять всего 374 MiB свободной VRAM для постоянной работы я не стал.
Основным инструментом в итоге стала:
Qwen3-Coder-30B-A3B-Instruct-UD-IQ3_XXS.gguf
Название размером с терминальную команду. Зато она работает с инструментами OpenCode, справляется с моими задачами по WordPress и фронтенду и пишет русские подписи, с которыми мы застряли на REAP. Это полная версия модели, без удаления экспертов, хотя и с сильным квантованием. На 32K после всего этого остаётся 1 517 MiB — около 1,48 GiB видеопамяти.
С чего я начинал бы тесты сеодня
Поначалу я ориентировался на качество кода в ответах чата, а проверять надо было реальную работу с агентом.
Теперь я бы сразу давал кандидату маленькую, но законченную рабочую задачу: прочитать файл, внести изменение через инструмент, создать нужный код и написать русские подписи. А уже прошедшим этот этап измерял скорость и доступный контекст.
Qwen2.5-Coder-14B устраивала по коду, но не заработала как нужно в моей агентской связке. REAP хорошо работала через OpenCode, но не устроила меня по русским подписям. Полная Qwen3-Coder устроила и по качеству генерации, и по интеграции в агентский пайплайн, однако потребовала перебора квантований.
Именно поэтому итоговый выбор оказался менее очевидным, чем «возьми модель побольше в Q4».
Параллельно с выбором модели я дорабатывал инструкции: объяснял, как устроен плагин и каким должен получиться блок. Правил постепенно набралось прилично.
В итоге рабочий промпт для блока разросся больше чем до 400 строк. Блок встал без ошибок, но тут же возник вопрос: где заканчиваются полезные правила проекта и начинается скрипт, который я почему‑то написал словами? С моделью определился, теперь разбираюсь с этим.
Теперь под Qwen3-Coder-30B я планирую и дальнейший апгрейд: рассматриваю вторую видеокарту с 16 ГБ, чтобы попробовать Q4–Q5 и более широкий контекст. Насколько удачным получится такой запуск на двух GPU — но это уже совсем другая история и отдельный объём тестов.
Дальше хочу так же разобрать модели общего назначения и vision‑модели, которые работают с изображениями. Но это следующие истории.
Изначально план был простой: выбрать модель под имеющуюся видеокарту. В итоге выбрал модель и начал присматривать ей вторую.
О таких экспериментах, разработке на WordPress и жизни между задачами пишу в канале «Вла'д Лебедкин | Stack & Life». Заглядывайте, если интересно, как локальные сетки уживаются с разработчиком и 16 ГБ видеопамяти.
Комментарии (9)

evgeniy_kudinov
17.09.2026 14:15А вариант переключение между моделями, которая заточена под задачу не пробовали?Возможно первоначальный старт будет долгим.

Antra
17.09.2026 14:15Если еще будете продолжать эксперименты, обратите внимание на jinja шаблон и "от кого" берете квант.
К примеру, мне нравился unsloth для моделей "поговорить". Но как только нужна агентская работа (вызов тулзов) - сплошь и рядом он подкладывает какой-то стандратный шаблон, который именно что "пихает JSON в тело ответа вместо чтобы вызвать функцию".
И тут можно либо скачать оригинальный шаблон, либо слегка подправить существующий. Либо брать версию от кого-то еще.
Т.е. проблема может быть не в модели и не в кванте (хотя на мелких квантах типа Q3 действительно работа с инструментами страдает), а в обвязке.

Politura
17.09.2026 14:15Все модели в статье устарели один-два года назад, современные модели и умнее, и быстрее, и гораздо лучше натренированы в кодинге в современных кодинг инструментах.
Никогда не спрашивайте у закрытых моделей что-то про открытые: во-первых у них устаревшие данные, во вторых складывается впечатление, что они специально вредят в ответах на такие вопросы. Наверное самый нормальный вариант, это мониторить субреддит /r/localllama там больше всего обсуждаются кодинг модели влезающие в 16Гб видеопамяти.
Упд: пытался подобрать запрос, чтоб они возвращали актуальные данные. Но даже когда включаешь веб-поиск и спрашиваешь так:
What models are mostly discussed on the subreddit /r/locallama in the last several months that can fit 16- 60 GB of memory and are good at coding?
все равно возвращают устаревшую херню, а не то, что действительно обсуждалось. Точно специально вредят.

NeoCode2
17.09.2026 14:15Я типа ретроград, агентам на своем компе как-то не доверяю) (наверное зря, но у меня пока не возникла мотивация). Но вот скажите, какое качество кода выдают модели на карточке 16Гб? Реально лучше чем то что в бесплатных чатботах? (для всяких мелких задач мне тот же дипсик с ходу пишет утилиты без ошибок, я только код копирую и вставляю, а крупных задач у меня просто нет).
И еще неожиданно возник вопрос: насколько современные видеокарты шумные? Я как-то очень давно купил комп в сборке, а дома оказалось что блок питания громко гудит, и я понял что вообще не могу работать на таком компе - хорошо что по гарантии поменяли на практически бесшумный.

Antra
17.09.2026 14:15Я предпочитаю, разумеется, по API серьезные модели гонять, даже бесплатные. 16GB и "сверхконфиденциально, нельзя в облако" слабо вяжется.
Но для интереса пробовал и на 4060Ti 16GB. И прелесть по сравнению с чатботами именно в получении готового результата, без кучи копипейста ошибок и кода в браузер и обратно.
Пример задачи, которую за несколько итераций именно локальная модель порешала. (nemotron, кажется, был - трудно настроить, чтобы инструменты качественно вызывались, зато mamba архитектура позволяет хороший контекст держать)
Напиши функцию на Python (numpy), которая рассчитывает уникальные углы дифракции
для кубического кристалла по формуле
, где
.
Там именно что подводные камни есть, которые надо учесть. Но тут чатбот может и справится.
А это еще сложнее. Предметные области знать надо. И вряд ли с одного раза из чатика вы получите работающий код. Хотя сейчас не только локальные модели "выросли", может и получится уже.
Напиши на Python класс для работы с индексами Миллера в кубической кристаллической решетке.
Требования:
Метод для вычисления межплоскостного расстояния $d_{hkl}$ при заданном параметре решетки $a$.
Метод для проверки условия дифракции (правила погасания) для ГЦК (гранецентрированной кубической) решетки.
Функция должна принимать на вход индексы (h, k, l) и возвращать
True/Falseдля возможности дифракции.Усложнение: Добавь расчет угла Брэгга (theta) для заданной длины волны (lambda) и порядка дифракции n=1.
Используй только стандартную библиотеку
math, безnumpy(проверим чистую алгоритмику).
Но при малейшей возможности, конечно, лучше API. А если не "функцию написать", а реально с проектом работать, то и подавно. Я бы даже при возможности выделить модели 96GB (а-ля Ryzen или Mac) не стал бы с локальными программировать. Только доверять им по Инету полазить и что-то найти, подобрать (тоже нужно хорошее понимание JSON и вообще структур для работы с инстурментами, MCP).
И еще пример, когда локальная модель необходима: что-то нафиговертил с роутером, нет интернета. Просишь локальную модель зайти по ssh и поправить. Какой-нибудь Mikrotik или даже OpenWRT задолбаюсь чинить из командной строки - конкретные команды не помню. А тут "под моим чутким руководством" - хорошая помощь.

Percollus
17.09.2026 14:15Из последнего очень порадовала qwen3.8 - 27b. У меня проблема была в связке SQLite - qt/c++ - qml. Все вертелось в одном потоке и были приличные тормоза. Я в чате закидывал файлы с классами, которые с бд работают, и мне моделька практически без ошибок разбила их на пары worker и GUI, прописала все взаимодействия. Причем архитектурно все вышло корректно, как я и сам планировал. Хочу попробовать ее в агентом режиме, ибо первая локальная модель с такими перспективами под мое железо.
И да, по железу: rtx 5060 ti 16gb, 32 RAM. Полностью в VRAM не помещается, но через ollama работала стабильно, около 15-25 токенов/сек

Yuri_BY
17.09.2026 14:15У меня в этой категории моделей:
Qwen3.5-9B-ultra-uncensored-heretic-v2-Q6_K.gguf, 6.85 GB
Ornith-1.5-9B-Q6_K.gguf, 7.04 GB
Ministral-3-14B-Instruct-2512-BF16-abliterated.Q6_K.gguf, 10.33 GB
Qwen3.8-27B-GSQ-RCO-IQ3_S-mtp.gguf, 11.29 GB
gemma4-v2-Q8_0.gguf, 11.80 GB
Fedyaration
Хороший пример того, почему модель стоит оценивать не на абстрактных задачах, а на реальном агентском сценарии. Отдельно впечатлила разница между 32K и 48K по скорости и запасу VRAM.