Ну чё, малютки, неделя выдалась странная. 17 октября DeepSeek выкатила обновление V4.1-Flash-1017, модель на 748 миллиардов параметров, а через несколько дней r/LocalLLaMA завалило постами «запустил у себя». На RTX 3060 с 12 ГБ и 64 ГБ DDR4 — 5,8–7,4 ток/с. На одной 3090 с 192 ГБ RAM — 41 ток/с. На б/у компе дешевле €2000 — 7,2 ток/с.
Чекпоинт весит 510 ГБ. Как это работает на карте с 12 ГБ и есть ли тут подвох? Подвох есть, и не один. Но если разобрать, что именно читается на каждый токен, большая часть цифр перестаёт выглядеть магией.
Почти вся модель — это routed-эксперты MoE, а на токен из них нужно только 6 из 384 в каждом слое. Ещё 196B параметров — Engram, таблицы, из которых на токен читается 48 строк, около 12 КиБ, так что их можно вынести в RAM или на SSD. На GPU остаются плотная часть и горячие эксперты, остальные живут в RAM или на диске. Скорость упирается в то, сколько гигабайт надо прочитать за токен и откуда. Почти все цифры из постов — заявления авторов, их никто независимо не повторял.
Основная модель плюс Engram. «748B» — сумма этих округлённых чисел, ISTA-DASLab насчитала 763,2B.
На генерации. На prefill DeepSeek указывает 8B на токен.
Веса открыты, чекпоинт 510 ГБ в 48 файлах safetensors.
Что за модель
Всё ниже из официальной карточки и config.json версии 1017.
- Релизы: V4.1-Flash — 10 сентября 2026, 1017 — 17 октября. DeepSeek называет 1017 «minor update»: подтянули результаты на reasoning, коде, агентных и визуальных бенчмарках, а ответы стали короче.
- Слоёв 40, hidden size 5120. Внимание новое, CSA2 (Compressed Sparse Attention 2). KV-кэш, по карточке, около 890 байт на токен.
- Эксперты: 384 routed и 1 shared на слой, на токен роутер берёт 6.
- Точность: основные веса в FP8 блоками 32×32, эксперты в FP4.
- Драфтер DSpark для спекулятивного декодинга: блоки по 5 токенов, свои 128 экспертов, 3 на токен. Плюс 3 слоя MTP.
- Engram на слоях 1 и 14: две таблицы примерно по 384 миллиона строк.
Один эксперт — это три матрицы 5120 × 2304, то есть около 35,4M параметров, примерно 17,7 МБ в FP4. Таких 384 в слое, слоёв 40: выходит ≈ 543B параметров. Это почти весь backbone из 552B. Остальное — attention, shared-эксперты и эмбеддинги, около 8–9B.
Получается, что 98% основной модели — эксперты, и на каждый токен из них нужны только 6 из 384 в каждом слое, это примерно 8,5B параметров. Поэтому MoE так хорошо раскладывается по разным видам памяти. Базовый трюк с --n-cpu-moe я уже разбирал в статье про MoE, а здесь случай пожёстче: модель не влезает даже в RAM.
Engram: четверть модели, которую можно держать на диске
196B параметров Engram — это не матрицы, которые перемножают на каждом токене. Это условная память: таблицы, из которых по n-граммам (до 4 токенов) достают строки. По замеру SemiAnalysis, модель берёт 24 строки на каждом из двух слоёв Engram — около 12,4 КиБ на токен на всю модель. Адреса строк зависят только от id токенов, поэтому их можно подтягивать заранее, пока считаются предыдущие слои. Авторы квантов прямо пишут, что Engram «can stay memory-mapped on disk», то есть может лежать на SSD.
Но есть нюанс. При последовательном чтении хороший NVMe Gen4 выдаёт 7,45 ГБ/с, а мелкими случайными кусками всё иначе: у Samsung 990 PRO в паспорте 22 000 IOPS на глубине очереди 1, это около 0,09 ГБ/с при блоках по 4 КБ. Выручает page cache: часто нужные строки оседают в RAM. Так что «Engram на SSD» не значит, что RAM под него не нужна.
SemiAnalysis проверила это на серверах на своём бенчмарке InferenceX. В дата-центре Engram держат в RAM, а не в HBM: GPU читает строки из закреплённой памяти хоста напрямую (UVA). На B300 перенос таблицы обратно в HBM ничего не ускорил, а освободившаяся видеопамять позволила обойтись 2 GPU вместо 4 и выиграть до 1,6 раза. SSD на B200 проиграл: при скорости около 125 ток/с на пользователя выходит 121 млн токенов на доллар с Engram в RAM и 52 млн — на SSD. Даже файл, целиком осевший в page cache, медленнее закреплённой RAM: в их неоптимизированной версии строки ходят через CPU туда и обратно. Для прода SemiAnalysis выносить Engram на SSD не советует. Дома выбора часто нет, но держи в голове, что это самый медленный путь.
Нельзя. Без него на CRUXEval (задачи на предсказание вывода Python-функций) у SemiAnalysis loss на ответе вырос с 0,2848 до 0,3093 бит на токен. В исходной статье DeepSeek про Engram отключение таблиц на инференсе оставляло на фактологических бенчмарках только 29–44% качества. Модель обучали вместе с этой памятью, и роутинг экспертов от неё тоже зависит.
Сколько весит в квантах
| Вариант | Размер | Что важно |
|---|---|---|
| Оригинал 1017 | 510 ГБ | FP8 + эксперты FP4 |
| Unsloth UD-Q8_K_XL | 508 ГБ | эксперты остаются MXFP4, это не «8 бит на всё» |
| Unsloth UD-Q4_K_XL | 501 ГБ | то же самое |
| nazeshinjite Q2 (ds4) | 365,7 ГБ | IQ2_XXS + Q2_K, attention и shared в Q8_0, Engram без изменений |
| EXL3 3,5 bpw | 257,6 ГБ | плюс 203 ГБ Engram отдельно |
| Unsloth UD-Q2_K_XL | 335 ГБ | |
| ISTA-DASLab GSQ-RCO IQ2_XS | 265,8 ГБ | из них 110,6 ГБ — Engram в IQ4_NL |
| Unsloth UD-IQ1_S | 233 ГБ | самый маленький из популярных |
Цифры по Unsloth — округлённые размеры из интерфейса Hugging Face.
Арифметика одного токена
Скорость генерации на одном потоке почти всегда упирается не в вычисления, а в память: на каждый токен нужно прочитать все активные веса. Грубо:
Для 1 бита это 2 ГБ на токен, для 2 бит — 4 ГБ, для 4 бит — 8 ГБ. Плюс масштабные коэффициенты квантов, плотная часть и KV-кэш.
Дальше всё решает, откуда эти гигабайты читаются:
| Где | Пропускная способность |
|---|---|
| RTX 5090 (GDDR7) | 1792 ГБ/с |
| RTX 3090 | 936 ГБ/с |
| RTX 3060 12 ГБ | 360 ГБ/с |
| DGX Spark | 273 ГБ/с |
| Ryzen AI Max (LPDDR5X, 256 бит) | 256 ГБ/с |
| DDR5-6000, два канала | 96 ГБ/с (теория) |
| PCIe 5.0 x16 | ~56 ГБ/с (замер на конкретной системе) |
| DDR4-3200, два канала | 51,2 ГБ/с (теория) |
| NVMe Gen4 | 7,45 ГБ/с последовательно |
Если часть весов лежит в одном месте, а часть в другом, время токена в лучшем случае равно самому медленному уровню (всё читается параллельно), а в худшем — сумме всех (по очереди). Отсюда и потолок ток/с.
Покрути сам. Калькулятор раскладывает экспертов по VRAM, RAM и SSD и считает, сколько читать с каждого уровня:
Первое число — если уровни читаются по очереди, второе — если идеально параллельно.
Я подставил в калькулятор конфиги из постов. Справа — то, что заявляют авторы. Независимо эти цифры никто не проверял.
| Железо | Квант | Движок | Калькулятор, ток/с | Заявлено, ток/с | Prefill, ток/с |
|---|---|---|---|---|---|
| 3060 12 ГБ, 64 ГБ DDR4, 2 NVMe | 2 бита + поправки FP4 | Promethevs | 6,3–8,8 | 5,8 / 7,4 | — |
| 3090, 192 ГБ RAM | ds4 Q2 | Delta (Windows) | 34–51 | 41 | 610 |
| 3090, 128 ГБ DDR4 | UD-IQ1_S | llama.cpp | 30–43 | 7,2 | — |
| 5090 + 5060 Ti, 128 ГБ DDR5 | UD-IQ1_S | Basalt | 62–92 | 53,6 / 63,5 | 610 |
| Ryzen AI Max+ 395, 128 ГБ | GSQ-RCO 2 бита | Strata | 14–30 | 11,3–21,3 | 177 (32K) |
| 4× DGX Spark | EXL3 3,5 bpw | TensorFold | — | 93 (1 поток), 233 (12 потоков суммарно) | ~2000 |
У 3060 с 64 ГБ больше половины экспертов не влезает ни в VRAM, ни в RAM, и каждый промах идёт на NVMe — отсюда 5,8–7,4 ток/с. Для Delta калькулятор считал RAM как DDR5, а Basalt — как одну 5090, без второй карты. Остальное сходится неплохо.
А вот б/у ПК за €2000 промахивается в разы: калькулятор даёт около 30, у автора 7,2. Разницу съедает то, чего калькулятор не считает. В llama.cpp эксперты из RAM считаются на CPU, а i9-9900X 2019 года — не самый быстрый способ перемножать 1-битные веса. Плюс 110 ГБ Engram в этом запуске читаются с NVMe.
Если на каждый токен тянуть 2-битных экспертов из DDR5 на 96 ГБ/с, потолок выходит около 24 ток/с. До 41 Delta дотягивает за счёт экспертов, которые живут на GPU, и сдвига роутинга. По умолчанию там включён route bias 0,28: роутер подталкивают выбирать экспертов, которые уже лежат на видеокарте. По словам автора, это примерно на 20% быстрее, но это уже чуть-чуть другая модель. Автор честно меряет разницу: следующий токен совпадает с API DeepSeek в 90,2% случаев на общем тексте и в 92,4% на коде и математике, а без сдвига — в 91,4% и 92,1%.
- «На одной 5090» у Basalt на деле 5090 плюс 5060 Ti, лучшая цифра — с обеими.
- «Вся модель в памяти» у Maya-XS (120,6 ГБ на Ryzen AI Max) — без 161 ГБ Engram, которые лежат на SSD.
- 748B или 763B: официально 552B + 196B, у ISTA-DASLab 763,2B.
- Один и тот же UD-IQ1_S у одного автора 233 ГБ, у другого файл на 243 ГБ с vision и драфтером.
- Промпты, кванты и длины контекста везде разные, так что таблица выше — для ориентира, а не рейтинг.
Трюки, которыми выжимают скорость
1. Кэш горячих экспертов
Если роутер выбирает экспертов неравномерно, самых частых имеет смысл держать на GPU, а за остальными ходить в RAM. Идея старая. Eliseev и Mazur ещё в 2023 году держали экспертов Mixtral в LRU-кэше и подгружали следующих заранее, получив 2–4 ток/с на слабом железе. Дальше пошли варианты:
- MoE-Infinity (2024) следит, каких экспертов использует конкретная последовательность, и кэширует с учётом этого.
- Fiddler (2024) вместо перекачки эксперта на GPU считает его прямо на CPU: несжатый Mixtral-8x7B больше 90 ГБ на карте с 24 ГБ дал больше 3 ток/с.
- HOBBIT (2024) при промахе кэша берёт эксперта в низкой точности, если он не очень важен.
- ProMoE (2024) по промежуточным результатам предсказывает, какие эксперты понадобятся дальше.
- SpecMD (2026) показал, что LRU и LFU работают не всегда: доступ к экспертам часто не похож на то, что эти политики предполагают. На OLMoE с кэшем в 5% VRAM у них вышло больше 88% попаданий.
Опубликованной статистики роутинга именно для V4.1-Flash нет, поэтому ниже синтетика. Сравни, что даёт кэш при равномерном роутинге и при перекосе:
При равномерном роутинге кэш бесполезен: доля попаданий равна доле экспертов, которых ты держишь в памяти. Выигрыш даёт только перекос. Если горячие эксперты меняются вместе с темой, LFU застревает на старых фаворитах, а LRU быстрее перестраивается.
2. «Сжать и поправить» (Promethevs)
Самый хитрый запуск недели. Автор держит 2-битную копию экспертов: 11,5 МБ на эксперта вместо 18,8 МБ в FP4, отношение 0,61. Каждый токен сначала считается на дешёвой копии. Там, где модель не уверена (маленький отрыв лучшего токена от второго), позиция пересчитывается на исходных FP4-весах. Их восстанавливают из 2-битной копии и отдельной «плоскости поправок». Если поправка меняет токен, последующие черновики выкидываются.
Отсюда и заявленные «>97% exact quality». На аудите из 960 токенов совпадение дешёвого прохода с точным — 97,40%, после поправок — 98,33%. На длинном агентном промпте — 95,91%. Важная оговорка автора: сравнивали со своей точной реализацией, с эталоном DeepSeek ещё не сравнивали. И процент совпавших токенов — это не процент сохранённого ума модели.
3. Драфтер
DSpark и MTP — встроенный спекулятивный декодинг (механика в статье про спекулятивный декодинг). Для выгрузки он особенно полезен: один проход по экспертам проверяет сразу несколько черновых токенов, и дорогое чтение из RAM делится на всех.
Сколько черновиков реально принимается, замерили в InferenceX (vLLM, 4 GPU, температура 1,0, задачи на код). При 5 черновых токенах за проход в среднем получается 4,07 токена без thinking и 3,51 с thinking, вместе с проверочным. При одном черновом — 1,88 и 1,81. Только учти: у разных токенов разные эксперты, поэтому проверка 5 токенов читает больше экспертов, чем генерация одного. Ускорение для выгрузки будет меньше, чем эти 4×.
У Maya на Ryzen AI Max драфтинг дал ускорение примерно в 1,85 раза, правда, у версии Maya-S, а не у самой маленькой Maya-XS.
4. Prefill — отдельная история
Длинный промпт обрабатывается батчем, и каждый прочитанный эксперт переиспользуется на многих токенах сразу. Поэтому prefill на тех же машинах в десятки раз быстрее генерации: у Delta на 3090 — 610 ток/с на промптах 25–64K, у Basalt — те же 610 на 6,2K, а на четырёх DGX Spark — 2,1–2,3 тысячи. Смотри обе цифры: агенту с промптом в 60K токенов важна не только скорость генерации.
А как с качеством
Метрики в постах разные, и сравнивать их напрямую нельзя:
- Совпадение следующего токена (top-1 agreement) — какая доля argmax совпала при одинаковой истории. Так меряют Delta (90,2–92,4% к API) и Promethevs (к своей точной версии). Это не точность на задачах.
- KL-дивергенция — насколько распределения вероятностей расходятся. В llama.cpp её меряют через
--kl-divergence-baseи--kl-divergence. Ноль — распределения совпадают. - Perplexity — у EXL3 3,5 bpw выросла с 1,8749 до 1,8895 на коде и с 6,4277 до 6,4341 на прозе. Почти без потерь, но это 257 ГБ, а не 233.
- Агентные тесты: у TensorFold на четырёх DGX Spark в EXL3 3,5 bpw — 97,1 из 100 на 69 сценариях с инструментами (66 пройдено, 2 частично, 1 провал).
А вот «запустилось» и «можно работать» — разные вещи. Автор поста про ПК за €2000 сам показал, что 1-битная модель ошиблась в физике, и написал, что модели Qwen у него «работают довольно хорошо». Замеров там нет, так что это впечатление одного человека, а не вывод. Качество 1-битных квантов этой модели пока толком никто не мерил. По-моему, такие кванты — больше для домашнего кодинга, чем для продакшн-систем или продажи по API.
А как её гоняют в дата-центре
SemiAnalysis InferenceX с первого дня гоняет V4.1-Flash на серверных GPU NVIDIA и AMD. Нагрузка у них агентная, AgentX: реальные трейсы кодинг-агентов, в среднем около 170K токенов на входе и 1,2K на выходе. Данные открытые, графики ниже я построил по их API.
4 GPU
4 GPU
4 GPU
4 GPU
4 GPU
8 GPU
8 GPU
8 GPU
8 GPU
Basalt, IQ1_S
Delta, Q2
Strata, 2 бита
Promethevs
llama.cpp, IQ1_S
На первой вкладке один запрос на 4 GPU B200 генерирует около 690 ток/с, на GB300 — около 980, на старых H100 и H200 (по 8 штук) — 350–360. Это с MTP, в родном FP4 и на промптах около 170K токенов. Лучший домашний результат — 63,5 ток/с, разница в 10–100 раз. Мы сами гоняли эту модель на B200, и у нас две тачки B200 вышли мощнее восьми тачек H200.
Вторая вкладка показывает, что скорость для одного пользователя и выработка GPU тянут в разные стороны. На B200 при одном запросе GPU выдаёт около 47 выходных токенов в секунду, при 256 одновременных — около 2500, хотя каждому пользователю достаётся уже 115 ток/с. Дома ты всегда сидишь на правом краю графика: пользователь один, вычислительные блоки почти простаивают, всё упирается в память. На третьей — тот же драфтер DSpark: на больших машинах он тоже работает, но пятый черновой токен добавляет всего 0,25–0,34 принятого токена.
Если хочешь повторить
Поддержку модели в llama.cpp влили 25 октября (PR #31086, model: DSV4.1 flash). PR #30817, на котором гоняли первые тесты, закрыли без мержа. Нужные флаги:
--cpu-moe — все веса экспертов в RAM, на GPU плотная часть.--n-cpu-moe N — эксперты первых N слоёв в RAM, остальные на GPU. Подбираешь N под свою VRAM.-ot / --override-tensor — руками указать, какие тензоры куда класть, по регулярке на имя.--fit — llama.cpp сам подбирает раскладку и контекст под память. Если задал размещение руками, приоритет у него.Квант выбирай так, чтобы все эксперты влезли в VRAM и RAM вместе. Иначе каждый промах пойдёт на диск, и скорость рухнет, как у 3060 с 64 ГБ. Engram можно оставить на SSD, но чем больше свободной RAM под page cache, тем лучше. И проверь prefill на своих настоящих промптах, а не только генерацию.
TL;DR
- DeepSeek-V4.1-Flash-1017: 552B основная модель + 196B Engram, 40 слоёв, 384 эксперта на слой, 6 на токен, эксперты в FP4. MIT.
- 98% основной модели — эксперты, а на токен нужно около 8,5B из 543B. Engram — около 12 КиБ на токен, его выносят в RAM даже в дата-центре. На SSD можно, но это самый медленный вариант.
- Скорость генерации ≈ пропускная способность памяти / гигабайты на токен. Куда легли эксперты (VRAM, RAM, SSD), то и решает.
- Трюки: кэш горячих экспертов, расчёт части экспертов на CPU, «сжать и поправить», встроенный драфтер, сдвиг роутинга (меняет модель!).
- Цифры недели — 5,8–7,4 ток/с на 3060, 41 на 3090, 53,6–63,5 на 5090 + 5060 Ti — заявления авторов.
- 1-битный квант запускается, но его качество пока толком никто не мерил.
За неделю сообщество переизобрело кучу трюков из научных статей про выгрузку MoE и проверило их на живом железе. А мы ждём V4.2. Если хочешь глубже про то, как устроены сами кванты, — статья про квантизацию, про память под контекст — статья про KV-кэш, про движки — большой гайд.
Источники
- DeepSeek: анонс V4.1-Flash-1017
- DeepSeek-V4.1-Flash — карточка модели
- DeepSeek-V4.1-Flash-1017 — config.json
- Unsloth: DeepSeek-V4.1-Flash-1017 GGUF
- ISTA-DASLab: GSQ-RCO GGUF
- nazeshinjite: ds4 GGUF
- LibertAIDAI: EXL3 3.5bpw
- Promethevs: технический отчёт
- Delta inference engine
- Basalt на RTX 5090 (Reddit)
- Maya v1.1.22
- 748B на ПК за €2k (Reddit)
- TensorFold на 4× DGX Spark (Reddit)
- Strata на Strix Halo
- llama.cpp PR #31086 и README llama-server
- SemiAnalysis: Engrams Embedding Entendre — выгрузка Engram в DRAM и на SSD
- InferenceX: DeepSeek V4.1 Flash и длины принятия DSpark
- Eliseev & Mazur 2023: Fast Inference of MoE with Offloading
- MoE-Infinity, Fiddler, HOBBIT, ProMoE, SpecMD
- Samsung 990 PRO: характеристики
- NVIDIA RTX 5090: характеристики


