- BrainTools - https://www.braintools.ru -

Мощный ИИ агент в 16гб VRAM

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

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

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

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

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

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

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

Выбор модели

Бесспорным флагманом локальных нейросетей на низкой врам сейчас является 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 [3]популярны методы Abliteration и Heretic. Abliteration находит в активациях модели направление, связанное с отказами, и модифицирует веса так, чтобы подавить его влияние без полноценного переобучения. Heretic развивает этот подход и автоматически подбирает параметры такой модификации, стараясь одновременно снизить число отказов и минимизировать отклонение поведения [4] модели от оригинала.

Мощный ИИ агент в 16гб VRAM - 2

Qwen3.8-27B-IQ4_XS

Помимо чисел у квантов ещё есть категории от XXS до XXL, от них зависит насколько агрессивное было сжатие. Стандартный Q4 квант весит чуть больше 16гб и имеет выгрузку в озу, поэтому для тестов использовался более малый IQ4_XS (вес 15.3 ГБ). Популярных децензоров с минимальными потерями в кодинге два – orcarouter [5] и JonathanColetti [6]. Я протестировал оба и разницы не заметил, orca по ощущением немного лучше рисует svg, поэтому остановился на ней.

Для запуска модели использовался llama‑server [7] последней версии. Конфиг к этой модели выглядел так:

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 – запрещает серверу менять параметры контекста и слоёв модели на гпу. По умолчанию может срезать контекст или выгрузить часть слоёв на процессор при нехватке гпу памяти [8]

c – доступный контекст, в данном случае 64000 токенов

np 1 – ограничивает параллельность запросов к серверу до одного, благодаря нему делает некоторые оптимизации ускоряя вычисления

flash-attn – быстрое внимание [9], делает вычисления блоками, снижает потребление врам и повышеат скорость

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к, что сделало этот вариант непригодным для агент кодинга. Я оставил этот квант в качестве модели для чата, как эксперта для одноразовых задач. Пример открытки, нарисованной этой моделью с помощью html+svg:

Qwen3.8-27B-UD-Q3_K_XL

Чтобы вместисть больше контекста пришлось искать модели в третьем кванте. Подходящей под эту задачу мне показалась UD‑Q3_K_XL (13.2 ГБ) от outsourc‑e [10]. Эта модель является форком популярной версии от 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 [11], который делает модели значительно эффективнее, засчёт создания детальных планов и разработки через TDD.

В качестве тестов модель написала несколько простых игр на html+js. С хорошим планом игры работали уже с первого промпта, в случае возникновения ошибок нейросеть самостоятельно вносила исправления до полной работоспособности.

Пример сделанных игр

Пример сделанных игр
Процесс разработки

Процесс разработки

На этапах thinking и составлении плана тпс проседает до ~38, на написании кода вырастает до 50. Это связано с тем, что мтп чаще угадывает код и значительно реже обычный текст. Эту нейросеть можно использовать в работе, но я решил найти варианты, которые можно разогнать ещё сильнее.

Qwen3.8-GSQ-RCO-IQ3_S

Эта версия кванта [12]размером всего 11.8 гб, что по задумке обеспечивает большую вместимость контекста. У неё имеется версия со встроенным мтп, но в ходе тестов выяснилось, что на этой модели мтп плохо угадывает контекст. В результате была взята модель без встроенного мтп, а также протестирована новая архитектура DFlash [13]. Это модифицированная версия мтп, которая позволяет прогнозировать следующие токены параллельно, давая прирост в скорости. Файл 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> .

Результаты:

Мощный ИИ агент в 16гб VRAM - 7

Кванты квенов не подписаны, попробуйте угадать кто что нарисовал. Мне кажется лучше всех получился рисунок справа вверху, нарисовал его самый маленький IQ3_S.

P. S. тест не очень надёжный и может выдавать сильно разное качество на нескольких запусках, однако при сильной деградации моделей разница становится ощутимой. В данном случае сильной разницы между квенами нету.

Выводы

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

Автор: Mashinow

Источник [14]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/35274

URLs in this post:

[1] забывать: http://www.braintools.ru/article/333

[2] Интеллект: http://www.braintools.ru/article/7605

[3] HF : https://huggingface.co/

[4] поведения: http://www.braintools.ru/article/9372

[5] orcarouter: https://huggingface.co/orcarouter/Qwen3.8-27B-Uncensored-GGUF

[6] JonathanColetti: https://huggingface.co/JonathanColetti/Qwen3.8-27B-Uncensored-GGUF

[7] llama‑server: https://github.com/ggml-org/llama.cpp

[8] памяти: http://www.braintools.ru/article/4140

[9] внимание: http://www.braintools.ru/article/7595

[10] outsourc‑e: https://huggingface.co/outsourc-e/Qwen3.8-27B-Unleashed-GGUF

[11] superpowers : https://github.com/obra/superpowers

[12] кванта : https://huggingface.co/huihui-ai/Huihui-Qwen3.8-27B-abliterated

[13] DFlash: https://huggingface.co/z-lab/Qwen3.8-27B-DFlash2-GGUF

[14] Источник: https://habr.com/ru/articles/1080212/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1080212

www.BrainTools.ru

Rambler's Top100