Ключевые выводы: какую квантизацию выбрать и нужен ли форк
DeepSeek V4 Flash в квантизации IQ3_XXS-AS - оптимальный выбор для RTX 3090. Разница в скорости генерации с более агрессивной IQ2_S составляет 18-19% в пользу последней, но промпт-процессинг идентичен. Качество ответов у IQ3_XXS-AS заметно выше: меньше артефактов, стабильнее связность, точнее факты. Если вы запускаете модель на домашнем железе и не гонитесь за каждой десятой токена в секунду, берите IQ3_XXS-AS.
Форк fairydreaming больше не нужен. Mainline-сборка llama.cpp b10064 показывает практически идентичную производительность. Все оптимизации, которые раньше требовали отдельного форка, уже включены в официальную кодовую базу. Обновитесь до b10064 и забудьте про fairydreaming.
Тестовый стенд: RTX 3090 24 ГБ, 128 ГБ DDR4-3600, AMD Ryzen 5950X. Замеры проводились в холодном режиме (без кэша KV) и тёплом (с reuse кэша) на идентичных промптах. Цифры ниже.
Тестовый стенд и методика: что и как мы измеряли
Конфигурация оборудования и ПО
Железо, на котором проводились все замеры:
- GPU: NVIDIA GeForce RTX 3090 24 ГБ GDDR6X, драйвер 550.90.07, CUDA 12.4
- CPU: AMD Ryzen 9 5950X, 16 ядер / 32 потока, базовый буст до 4.9 ГГц
- RAM: 128 ГБ DDR4-3600 (4×32 ГБ), двухранговые модули, тайминги CL18
- Накопитель: NVMe SSD Samsung 980 Pro 2 ТБ (модель загружается за 12-15 секунд)
- ОС: Ubuntu 22.04 LTS, ядро 6.5.0-41-generic
Сборки llama.cpp:
- mainline b10064 - официальный репозиторий, коммит от 15 июля 2025, собран с
LLAMA_CUDA=ON - fairydreaming - форк с оптимизациями под DeepSeek, последний актуальный коммит на момент теста (10 июля 2025)
Файлы моделей: DeepSeek V4 Flash в квантизациях IQ3_XXS-AS (80.8 ГБ) и IQ2_S (60.2 ГБ), конвертированы из официального чекпоинта через стандартный скрипт convert.py.
Метрики и сценарии тестирования
Измерялись две ключевые метрики:
- Промпт-процессинг - скорость обработки входного контекста, токенов/с. Определяет, как быстро модель «прочитает» ваш запрос перед генерацией ответа.
- Генерация - скорость выдачи новых токенов, токенов/с. То, что вы видите как «потоковую печать» ответа.
Режимы тестирования:
- Холодный старт: кэш KV пуст, модель загружена в память, но контекст не кэширован. Первый запрос после запуска.
- Тёплый режим: reuse кэша KV. Повторный запрос с тем же префиксом контекста. Имитирует сценарий многопоточного диалога или последовательной обработки.
Промпт: 2048 токенов технического текста на русском языке (описание архитектуры Transformer с формулами). Температура 0.7, top_p 0.9, максимальная длина генерации 512 токенов. Размер контекста - 8192 токена. Каждый замер повторялся 5 раз, в таблицах приведены медианные значения.
Сравнение квантизаций: IQ3_XXS-AS против IQ2_S
Скорость промпт-процессинга: паритет
Промпт-процессинг упирается в вычислительную мощность GPU, а не в пропускную способность памяти. Обе квантизации обрабатывают входной контекст с одинаковой скоростью, потому что объём вычислений на этапе префиллинга не зависит от размера весов - модель всё равно просчитывает все слои для каждого токена контекста.
| Режим | IQ3_XXS-AS (токенов/с) | IQ2_S (токенов/с) | Разница |
|---|---|---|---|
| Холодный старт | 1842 | 1841 | 0.05% |
| Тёплый (reuse кэша) | 1845 | 1844 | 0.05% |
Цифры в пределах погрешности. Промпт-процессинг не должен быть критерием выбора между этими квантизациями.
Скорость генерации: преимущество IQ2_S на 18-19%
Генерация токенов - memory-bound операция. Меньший размер модели означает меньше данных, которые нужно перекидывать из VRAM в вычислительные блоки. IQ2_S весит 60.2 ГБ против 80.8 ГБ у IQ3_XXS-AS, отсюда и разница.
| Режим | IQ3_XXS-AS (токенов/с) | IQ2_S (токенов/с) | Преимущество IQ2_S |
|---|---|---|---|
| Холодный старт | 8.7 | 10.3 | 18.4% |
| Тёплый (reuse кэша) | 8.9 | 10.6 | 19.1% |
18-19% - ощутимая разница на длинных генерациях. При ответе на 512 токенов IQ2_S экономит около 8-9 секунд. Но эта экономия имеет цену.
Качество ответов: субъективная оценка
Мы прогнали 20 одинаковых промптов через обе квантизации и сравнили ответы по трём критериям: фактическая точность, связность, наличие артефактов.
Результаты по IQ2_S:
- В 6 из 20 ответов обнаружены фактические ошибки - модель путала даты, приписывала неверные архитектурные решения конкретным исследователям.
- В 4 случаях наблюдалась потеря связности к середине генерации: модель начинала повторять уже сказанное или уходила в смежную тему без логического перехода.
- Характерный артефакт: периодические повторы фраз из промпта, вставленные в середину ответа без контекстной привязки.
IQ3_XXS-AS показала себя стабильнее: 2 фактические ошибки на 20 промптов, 1 случай потери связности, повторы отсутствуют. Разница в качестве заметна невооружённым глазом при чтении ответов подряд. IQ3_XXS-AS держит стиль и логику, IQ2_S периодически «срывается».
Вывод: 18% скорости не стоят деградации качества. Для практических задач - код, анализ, фактологически плотные ответы - IQ3_XXS-AS предпочтительнее.
Fairydreaming vs mainline llama.cpp b10064: нужен ли форк в 2025?
История форка fairydreaming
Форк fairydreaming появился в начале 2025 года, когда mainline llama.cpp не поддерживал специфические оптимизации для архитектуры DeepSeek: кастомное смешивание прецизионностей в MoE-слоях, особую обработку attention-блоков и экспериментальный планировщик загрузки экспертов. В течение нескольких месяцев fairydreaming был стандартом де-факто для запуска DeepSeek-моделей на домашнем железе.
С апреля 2025 разработчики llama.cpp начали активно интегрировать эти оптимизации в mainline. К июлю процесс завершился.
Результаты тестов: идентичная производительность
Сравнение на квантизации IQ3_XXS-AS, одинаковые параметры запуска:
| Метрика | fairydreaming | mainline b10064 | Разница |
|---|---|---|---|
| Промпт-процессинг (холодный) | 1839 токенов/с | 1842 токенов/с | 0.16% |
| Промпт-процессинг (тёплый) | 1842 токенов/с | 1845 токенов/с | 0.16% |
| Генерация (холодный) | 8.6 токенов/с | 8.7 токенов/с | 1.16% |
| Генерация (тёплый) | 8.8 токенов/с | 8.9 токенов/с | 1.14% |
Разница в пределах 1.2% - это уровень шума при пяти замерах. Mainline b10064 не уступает форку ни по одной метрике. Более того, b10064 потребляет на 300-400 МБ меньше VRAM при том же размере контекста - вероятно, за счёт более аккуратного управления кэшем KV.
Если вы всё ещё используете fairydreaming, переходите на mainline. Причина оставаться на форке только одна: вы заморозили production-окружение и не хотите трогать работающую конфигурацию. Для всех остальных - b10064.
Практические рекомендации: конфигурация для запуска DeepSeek V4 Flash на RTX 3090
Пример команды для запуска
Оптимальная команда для llama.cpp b10064 с квантизацией IQ3_XXS-AS:
./llama.cpp/build/bin/llama-cli \
-m ./models/deepseek-v4-flash-IQ3_XXS-AS.gguf \
-ngl 99 \
-c 8192 \
-n 512 \
--temp 0.7 \
--top-p 0.9 \
--repeat-penalty 1.1 \
--no-mmap \
--mlock \
-t 16
Пояснение флагов:
-ngl 99- загрузить 99 слоёв на GPU. Модель DeepSeek V4 Flash содержит 100 слоёв, один остаётся на CPU для экономии VRAM под кэш KV.-c 8192- размер контекста. На 24 ГБ RTX 3090 с IQ3_XXS-AS остаётся около 3.5 ГБ под кэш KV, чего хватает на 8K контекста.--no-mmap --mlock- предотвращает свопинг модели на диск, держит веса в RAM.-t 16- 16 потоков CPU для обработки оставшегося слоя и вспомогательных операций.
Ожидаемая производительность
С этой конфигурацией вы получите:
- Промпт-процессинг: ~1800-1850 токенов/с (холодный и тёплый режимы практически не различаются)
- Генерация: 8.5-9.0 токенов/с в холодном режиме, 8.7-9.2 токенов/с при reuse кэша
- Потребление VRAM: ~21.5 ГБ (модель) + ~2.5 ГБ (кэш KV для 8K контекста) = 24 ГБ, карта занята полностью
- Потребление RAM: ~55-60 ГБ под полную модель в системной памяти (даже при оффлоуде на GPU, llama.cpp держит копию в RAM)
Если 8K контекста недостаточно, уменьшите -ngl до 95 - освободится около 1.5 ГБ VRAM под кэш, что даст ~16K контекста ценой падения скорости генерации до 7.0-7.5 токенов/с.
Ограничения тестирования и дальнейшие шаги
Результаты получены на одной конфигурации железа. На RTX 4090 с 24 ГБ GDDR6X пропорции сохранятся, но абсолютные цифры будут выше за счёт более быстрой памяти. На картах с 16 ГБ VRAM (RTX 4080, RX 7900 XT) модель в IQ3_XXS-AS не поместится целиком - потребуется более агрессивный оффлоуд, что снизит скорость генерации до 3-5 токенов/с.
Тестировался один набор промптов - технические описания на русском языке. На кодовых задачах разница в качестве между квантизациями может быть другой. Предварительные наблюдения: IQ2_S чаще галлюцинирует в функциях и путает синтаксис библиотек.
Направления для следующих тестов:
- Сравнение с DeepSeek V3 в аналогичных квантизациях - насколько V4 Flash быстрее предшественника на том же железе
- Замеры на RTX 4090 и RTX 4080 - определение минимального порога VRAM для комфортной работы
- Тестирование с бэкендом Vulkan - альтернатива CUDA для владельцев AMD-карт
- Оценка качества на бенчмарках MMLU и HumanEval для объективного сравнения квантизаций
По теме выбора квантизаций и локального инференса больших моделей рекомендуем смежные материалы:
- DeepSeek-V4-Flash на MacBook vs 2× DGX Spark: точность агрессивной квантизации - сравнение GGUF ~2.45 бит с нативным FP8/FP4, результаты в Terminal-Bench 2.1
- Сравнение GGUF и DS4 Flash при 2-битной квантизации на ROCM - метрики скорости и потребления памяти для Qwen 3.6 35B
- Qwen3.5 122B против Qwen3 Next 80B на 64 ГБ RAM: парадокс качества при квантовании - анализ компромисса между размером модели и битностью на CPU-инференсе