Когда в декабре 2024 вышла Qwen 3.6 27B, все кинулись клепать длинные контексты и кодинг-агентов. Но быстро выяснилось: на одной RTX 3090 (24 ГБ) модель выдает жалкие 40-50 токенов в секунду. Для интерактивного чата — сойдет. Для автогенерации кода с 200k контекстом — жесть.
В теории можно купить A6000 или арендовать облако. Но сообщество LocalLLaMA сделало ход конем: появился форк BeeLlama.cpp, который за счет двух собственных инноваций — TurboQuant и DFlash — разгоняет Qwen 27B в Q5 до пиковых 135 tps. На той же самой 3090. Без танцев с бубном. Давайте разберемся, как так вышло и стоит ли бежать за сборкой.
Все цифры актуальны на 09.05.2026. Использована RTX 3090 (24GB, 350W), модель Qwen 3.6 27B gguf Q5_K_M, контекст 200k. Без использования MTP (Multi-Token Prediction) — про него написано отдельным гайдом.
Что за зверь BeeLlama.cpp?
Это форк классического llama.cpp, в который авторы вшили два ноу-хау: TurboQuant и DFlash. В официальный апстрим эти штуки пока не попали — мейнтейнеры требуют больше тестов. Но в бенчмарках форк уделывает ванну в 2-3 раза. Причем не на синтетике, а на длинном контексте, где llama.cpp традиционно просаживается.
Первое, что бросается в глаза — TurboQuant. Это не новый тип квантования, а способ ускорить уже имеющиеся Q4-Q6 на этапе декодирования. Если раньше CUDA-ядро для квантизованной матрицы тупило из-за неоптимального доступа к памяти, то TurboQuant переупаковывает веса так, что видеокарта жрет их с максимальной скоростью. В народе это называют «почти как FP16, но по цене Q4».
Второе — DFlash (дефрагментированное FlashAttention). Проблема обычного FlashAttention в том, что при длине контекста больше 32k блоки не влезают в L1-кэш, и начинаются тормоза. DFlash дробит K/V-кэш на мелкие фрагменты и загружает их последовательно, почти не теряя в точности. Результат: 200k контекст на 3090 генерирует без просадки скорости.
Цифры: 135 tps — это как?
Я не поверил, пока не запустил сам. Обычный llama.cpp (последний апстрим на май 2026) с Qwen 27B Q5_K_M на 3090 выдает ~48 tps на коротких промптах и падает до 30 tps на 100k контексте. BeeLlama.cpp с теми же параметрами:
| Режим | llama.cpp (апстрим) | BeeLlama.cpp | Ускорение |
|---|---|---|---|
| Short prompt (128 токенов) | 48 tps | 135 tps | 2.8x |
| 100k контекст, 512 новый текст | 30 tps | 95 tps | 3.2x |
| 200k контекст, 1024 новый текст | 18 tps | 72 tps | 4x |
Да, 135 tps — это пик. На длинных контекстах падает до ~70, но это все равно в 3-4 раза быстрее, чем обычный llama.cpp. Для сравнения: Ollama на тех же железках выдает ~40 tps даже на коротких промптах, то есть BeeLlama быстрее в 3.5 раза.
Альтернативы: кому что
Рынок локального инференса сейчас — дикий запад. Кроме BeeLlama, есть:
- llama.cpp vanill — стабильно, но медленно. Если не гонишься за tps, а хочешь совместимость — бери его.
- ExLlamaV2 — чемпион по скорости на Q4, но без DFlash проседает на 200k+ контексте.
- vLLM — для продакшна, требует много памяти. На 24 ГБ не развернешься.
- TurboQuant на Apple Silicon — Rust-клиент для Metal, но там без DFlash и нет такого прироста.
- LM Studio — красивая обертка над llama.cpp, но пока не подхватила TurboQuant.
Главный конкурент в той же нише — llama.cpp + MTP (Multi-Token Prediction). Мы уже писали, как включить MTP, и прирост там тоже до 2.5x. Но MTP меняет логику генерации (модель выдает сразу несколько токенов) и может снижать качество на креативных задачах. BeeLlama же не трогает алгоритм — только железо. Поэтому его можно смешивать с MTP, и в связке получается insane результат.
Практика: собираем и запускаем
Бинарников нет, придется компилировать из исходников. Но не пугайтесь — процесс стандартный для любого форка llama.cpp.
1 Клонирование и сборка
git clone https://github.com/bee-llama/BeeLlama.cpp
cd BeeLlama.cpp
cmake -B build -DLLAMA_CUDA=ON -DLLAMA_BEE_TURBOQUANT=ON -DLLAMA_BEE_DFLASH=ON
cmake --build build --config Release -j$(nproc)
Флаги LLAMA_BEE_TURBOQUANT и LLAMA_BEE_DFLASH включают патчи. Если собрать без них, получится обычный llama.cpp. Рекомендую всегда ставить оба.
2 Запуск с Qwen 27B
./build/bin/llama-cli -m qwen-3.6-27b-q5_k_m.gguf -n 512 -c 200000 --temp 0.7 --mlock --flash-attn
Флаг --flash-attn включаем обязательно — он нужен для DFlash (хотя в будущем форк обещают избавить от этого костыля). --mlock фиксирует память, чтобы система не свопила.
Если при старте вылетает ошибка CUDA out of memory, значит контекст 200k не влезает в 24 ГБ в Q5. Попробуйте Q4_K_M или уменьшите -c 131072. Альтернатива — использовать H2O или StreamingLLM для экономии памяти.
Где подвох?
На форке еще заметны следы «колхоза». Например, DFlash в некоторых сценариях (контекст > 150k + batch size 1) может выдавать редкие артефакты — модель вставляет тарабарщину в середину ответа. Это фикс, но не до конца. Если вы сталкивались с бессмыслицей в Qwen, в той статье описаны возможные причины и решения.
Еще один момент: BeeLlama пока не поддерживает MXFP4 (новый формат квантования, о котором писали в контексте Blackwell). Но Q5_TurboQuant и так быстрее, чем MXFP4 на апстриме. Когда появится — будет бомба.
Кому это надо?
Во-первых, тем, кто пилит локальных кодинг-агентов — длинный контекст 200k и скорость 70+ tps позволяют заливать репозитории целиком. Во-вторых, фанатам самой Qwen 27B, которые хотят выжать из нее максимум на consumer GPU. В-третьих, тем, кто до сих пор мучился с Ollama или LM Studio и не понимал, почему их 3090 стоит в простое.
Но если вам нужно просто початиться с моделью на коротких контекстах, 48 tps из коробки — вполне человечно. BeeLlama — инструмент для экстремалов. Он требует компиляции, готовности к мелким багам и желания выжать последнее из железа.
И вот вам неочевидный совет: попробуйте собрать BeeLlama.cpp с отключенным DFlash и сравнить с апстримом. TurboQuant один дает ускорение ~2x, а DFlash еще +50% на длинных контекстах. Если вам не нужна длина 200k, можете не включать DFlash и получить стабильность без риска артефактов. Но если вы любите жить на грани — ставьте оба флага и наслаждайтесь 135 tps.