Недавно я обновил свою видеокарту до RTX-5060-TI 16GB. Получив новую карту я решил исследовать, что можно на ней запустить из нейросетей. Традиционно пишут, что нормальные ИИ модели начинаются с rtx3090 и выше, что ниже 24GB VRAM жизни нет. В этой статье я постараюсь развеять этот миф.

нарисовано моделью из статьи
нарисовано моделью из статьи

Модели на ограниченном железе всегда имеют компромисс между скоростью, качеством и контекстом. Сформирую требования, пригодные для агентик кодинга:

  1. Контекстное окно > 80к (системный промпт + пара скиллов уже 15к токенов, при низком контексте модель постоянно будет забывать детали и сжимать историю сообщений)

  2. Скорость >= 50 тпс (чем выше скорость, тем быстрее проходят циклы разработки, тем быстрее новые фичи идут в релиз. До этого пробовал с 30 тпс работать, агент кажется заторможенным)

  3. Интеллект должен быть достаточным для того, чтобы допускать мало ошибок в коде и чтобы его дебагинг больше чинил, чем ломал

Выбор модели

Бесспорным флагманом локальных нейросетей на низкой врам сейчас является 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-IQ4_XS
Общение в чате с Qwen3.8-IQ4_XS

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 ГБ врам видеокарту со счетов не стоит, она вполне может запускать мощные модели с хорошим контекстом и скоростью работы.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы используете локальные модели в разработке?
40.45%Да127
41.72%Нет131
17.83%Использую для других целей56
Проголосовали 314 пользователей. Воздержались 47 пользователей.