Qwen 3.6 27b на 8-12gb vram в llama.cpp до 256к контекста

от автора

Вышло 2 модели prism-ml/Ternary-Bonsai-27B-gguf и prism-ml/Bonsai-27B-gguf

Модели представлены в 2-битном и 1-битном вариантах и занимают всего 7,2 и 3,8 ГБ соответственно. Но самое интересное здесь не размер, а качество после столь агрессивного сжатия. По заявленным результатам, 2-битная версия сохраняет около 95% качества FP16, а 1-битная — примерно 90%.

Благодаря столь компактному размеру 1-битную модель можно запускать даже на смартфонах. Например, на iPhone 17 Pro Max скорость генерации достигает примерно 11 токенов в секунду.

Для запуска потребовался форк PrismML-Eng/llama.cpp. На RTX 3090 мне удалось получить около 60 токенов в секунду. Скорость вполне достойная, однако потребление видеопамяти меня не устроило: при контексте в 256 тысяч токенов 2-битная версия заняла около 18 ГБ VRAM. В это значение входят примерно 3 ГБ, используемые Windows 11.

Я привык работать с TurboQuant версиями llama.cpp, которые заметно эффективнее расходуют память, при использовании параметров: -ctk tbqp3 -ctv tbq3 объём памяти занимаемый контекстом, сокращается в 4.71 раза. При этом качество такого сжатия контекста, согласно результатам тестов, оказывается примерно на 8% выше, чем у F16.

Скрытый текст

Для этого я добавил поддержку 2-битного квантования Q2 из форка PrismML-Eng/llama.cpp в AmesianX/TurboQuant, которым пользовался ранее, Q1 кстати заработал сразу в форке TurboQuant.

Впрочем, переносил код не вручную, основную работу поручил нейросети, в данном случае GPT-5.6 Sol. На внесение изменений ушло около 15 минут, ещё примерно полчаса заняла компиляция CUDA-сборки. И что самое приятное — это сработало!

С 2-битной моделью и контекстом в 256 тысяч токенов потребление VRAM составляет около 12 ГБ. Правда, здесь есть небольшой нюанс: к этому значению нужно прибавить ещё 1-3 ГБ видеопамяти, которые использует Windows 11. Снизить потребление можно, перейдя на Linux или уменьшив размер контекста.

В случае с 1-битной моделью потребление составляет около 8 ГБ VRAM при том же контексте в 256 тысяч токенов.

Свой вариант форка я опубликовал на GitHub: jarkevithwlad/turboquant-prismml-cuda. В репозитории также доступна готовая сборка для видеокарт RTX 30-й серии и новее. Владельцам более старых GPU потребуется собрать проект самостоятельно на целевой системе.

С включённым TurboQuant скорость генерации снизилась до 45–50 токенов в секунду. При этом модель точнее работает с контекстом и потребляет меньше памяти. Поддержка DSpark — спекулятивного декодирования, для этой модели в моём форке отсутствует.

Форк не подходит для запуска на CPU, Vulkan и других бэкендах: TurboQuant в текущей реализации работает только с CUDA.

Сервер llama.cpp запускается следующей командой:

llama-server.exe -c 256000 -m "путь до Ternary-Bonsai-27B-Q2_0.gguf" --mmproj "путь до mmproj.gguf" --port 8080 --no-context-shift -ctk tbqp3 -ctv tbq3

ссылка на оригинал статьи https://habr.com/ru/articles/1059792/