Все статьи
Артемий Мазаев·· 15 мин чтения

DeepSeek-V4.1-Flash дома: как 748B запихивают в 12 ГБ видеопамяти 🧮🔥

За неделю на Reddit и GitHub вышел десяток запусков DeepSeek-V4.1-Flash-1017 на домашнем железе. Разбираю, что лежит в VRAM, что в RAM и на SSD, откуда берутся ток/с и где подвох.

DeepSeek-V4.1-Flash дома: как 748B запихивают в 12 ГБ видеопамяти 🧮🔥

Ну чё, малютки, неделя выдалась странная. 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 ГБ и есть ли тут подвох? Подвох есть, и не один. Но если разобрать, что именно читается на каждый токен, большая часть цифр перестаёт выглядеть магией.

🔥Суть за 10 секунд

Почти вся модель — это routed-эксперты MoE, а на токен из них нужно только 6 из 384 в каждом слое. Ещё 196B параметров — Engram, таблицы, из которых на токен читается 48 строк, около 12 КиБ, так что их можно вынести в RAM или на SSD. На GPU остаются плотная часть и горячие эксперты, остальные живут в RAM или на диске. Скорость упирается в то, сколько гигабайт надо прочитать за токен и откуда. Почти все цифры из постов — заявления авторов, их никто независимо не повторял.

552B + 196BПараметры

Основная модель плюс Engram. «748B» — сумма этих округлённых чисел, ISTA-DASLab насчитала 763,2B.

16BАктивных на токен

На генерации. На prefill DeepSeek указывает 8B на токен.

MITЛицензия

Веса открыты, чекпоинт 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 не советует. Дома выбора часто нет, но держи в голове, что это самый медленный путь.

💡А выкинуть Engram совсем нельзя?

Нельзя. Без него на CRUXEval (задачи на предсказание вывода Python-функций) у SemiAnalysis loss на ответе вырос с 0,2848 до 0,3093 бит на токен. В исходной статье DeepSeek про Engram отключение таблиц на инференсе оставляло на фактологических бенчмарках только 29–44% качества. Модель обучали вместе с этой памятью, и роутинг экспертов от неё тоже зависит.

Сколько весит в квантах

ВариантРазмерЧто важно
Оригинал 1017510 ГБFP8 + эксперты FP4
Unsloth UD-Q8_K_XL508 ГБэксперты остаются MXFP4, это не «8 бит на всё»
Unsloth UD-Q4_K_XL501 ГБто же самое
nazeshinjite Q2 (ds4)365,7 ГБIQ2_XXS + Q2_K, attention и shared в Q8_0, Engram без изменений
EXL3 3,5 bpw257,6 ГБплюс 203 ГБ Engram отдельно
Unsloth UD-Q2_K_XL335 ГБ
ISTA-DASLab GSQ-RCO IQ2_XS265,8 ГБиз них 110,6 ГБ — Engram в IQ4_NL
Unsloth UD-IQ1_S233 ГБсамый маленький из популярных

Цифры по Unsloth — округлённые размеры из интерфейса Hugging Face.


Арифметика одного токена

Скорость генерации на одном потоке почти всегда упирается не в вычисления, а в память: на каждый токен нужно прочитать все активные веса. Грубо:

байт на токен≈16⋅109×бит на вес8\text{байт на токен} \approx 16 \cdot 10^9 \times \frac{\text{бит на вес}}{8}

Для 1 бита это 2 ГБ на токен, для 2 бит — 4 ГБ, для 4 бит — 8 ГБ. Плюс масштабные коэффициенты квантов, плотная часть и KV-кэш.

Дальше всё решает, откуда эти гигабайты читаются:

ГдеПропускная способность
RTX 5090 (GDDR7)1792 ГБ/с
RTX 3090936 ГБ/с
RTX 3060 12 ГБ360 ГБ/с
DGX Spark273 ГБ/с
Ryzen AI Max (LPDDR5X, 256 бит)256 ГБ/с
DDR5-6000, два канала96 ГБ/с (теория)
PCIe 5.0 x16~56 ГБ/с (замер на конкретной системе)
DDR4-3200, два канала51,2 ГБ/с (теория)
NVMe Gen47,45 ГБ/с последовательно

Если часть весов лежит в одном месте, а часть в другом, время токена в лучшем случае равно самому медленному уровню (всё читается параллельно), а в худшем — сумме всех (по очереди). Отсюда и потолок ток/с.

Покрути сам. Калькулятор раскладывает экспертов по VRAM, RAM и SSD и считает, сколько читать с каждого уровня:

🧮 Куда лягут 384 эксперта и сколько будет ток/с
Собери домашний ПК. Калькулятор раскладывает routed-экспертов DeepSeek-V4.1-Flash по видеопамяти, RAM и SSD, считает, сколько гигабайт надо прочитать с каждого уровня на один токен, и выдаёт потолок скорости генерации.
где лежат эксперты (всего 136 ГБ)
VRAM
2,00 ГБ
RAM
56,0 ГБ
SSD
77,9 ГБ
время на один токен, мс
плотная часть
23,6 мс · 8,50 ГБ
VRAM
0,47 мс · 0,17 ГБ
RAM
21,6 мс · 1,11 ГБ
SSD
114 мс · 0,85 ГБ
На токен читается 2,12 ГБ экспертов плюс 8,50 ГБ плотной части. Потолок: 6,26–8,77 ток/с
Первое число — если уровни читаются по очереди, второе — если идеально параллельно.
Это оценка сверху по пропускной способности памяти, а не бенчмарк. Не учтены: вычисления на CPU, случайное чтение с SSD, Engram (лежит на диске отдельно), драфтер, который проверяет несколько токенов за один проход, и сдвиг роутинга, как у Delta. Доля попаданий считается как cᵅ от доли экспертов на уровне, а α — моё допущение: опубликованной статистики роутинга для этой модели нет.

Я подставил в калькулятор конфиги из постов. Справа — то, что заявляют авторы. Независимо эти цифры никто не проверял.

ЖелезоКвантДвижокКалькулятор, ток/сЗаявлено, ток/сPrefill, ток/с
3060 12 ГБ, 64 ГБ DDR4, 2 NVMe2 бита + поправки FP4Promethevs6,3–8,85,8 / 7,4—
3090, 192 ГБ RAMds4 Q2Delta (Windows)34–5141610
3090, 128 ГБ DDR4UD-IQ1_Sllama.cpp30–437,2—
5090 + 5060 Ti, 128 ГБ DDR5UD-IQ1_SBasalt62–9253,6 / 63,5610
Ryzen AI Max+ 395, 128 ГБGSQ-RCO 2 битаStrata14–3011,3–21,3177 (32K)
4× DGX SparkEXL3 3,5 bpwTensorFold—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.

⚠️Delta 41 ток/с — не чистая выгрузка

Если на каждый токен тянуть 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 нет, поэтому ниже синтетика. Сравни, что даёт кэш при равномерном роутинге и при перекосе:

🎯 Сколько экспертов держать на GPU
Один слой модели: 384 эксперта, на каждый токен роутер берёт 6. На видеокарте помещается только часть, остальное живёт в RAM или на SSD. Ниже 3000 синтетических токенов и кэш с вытеснением LRU или LFU. Посмотри, как доля попаданий зависит от того, насколько неравномерно роутер выбирает экспертов.
кэш на GPU72 из 384
LRULFUбез перекоса: попадания = доля кэша
0%25%50%75%100%096192288384
На GPU 19% экспертов слоя. Попадания: LRU 67%, LFU 76%. Значит, из каждых 6 экспертов на токен из медленной памяти придётся тянуть примерно 1.5.
Поток токенов выдуман: настоящих трейсов роутинга DeepSeek-V4.1-Flash никто не публиковал. Ципф с показателем 1,1 — моё допущение. При равномерном роутинге доля попаданий у любого кэша не выше доли экспертов, которые в нём лежат. В статье SpecMD (2026) на OLMoE с кэшем в 5% VRAM вышло больше 88% попаданий, но там другая модель и своя политика вытеснения, не LRU.

При равномерном роутинге кэш бесполезен: доля попаданий равна доле экспертов, которых ты держишь в памяти. Выигрыш даёт только перекос. Если горячие эксперты меняются вместе с темой, 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.

📊 Как эту же модель гоняют в дата-центре
Замеры SemiAnalysis InferenceX: DeepSeek-V4.1-Flash на серверных GPU NVIDIA и AMD, агентная нагрузка с длинным контекстом (в среднем около 170K токенов на входе).
дата-центр, InferenceX, один пользователь
GB300
980 ток/с
4 GPU
B300
847 ток/с
4 GPU
B200
690 ток/с
4 GPU
MI355X
685 ток/с
4 GPU
GB200
588 ток/с
4 GPU
H100
361 ток/с
8 GPU
H200
348 ток/с
8 GPU
MI325X
236 ток/с
8 GPU
MI300X
234 ток/с
8 GPU
дома, заявления авторов
5090 + 5060 Ti
63,5 ток/с
Basalt, IQ1_S
3090 + 192 ГБ
41,0 ток/с
Delta, Q2
Ryzen AI Max
21,3 ток/с
Strata, 2 бита
3060 + 64 ГБ
7,4 ток/с
Promethevs
3090, ПК за €2k
7,2 ток/с
llama.cpp, IQ1_S
Шкала логарифмическая. Дата-центр — медианная скорость генерации внутри ответа при одном запросе (conc=1), с MTP, на 4–8 GPU в FP4 на агентных трейсах AgentX. Дома у каждого своя методика и короткие промпты, так что это сравнение порядков, а не рейтинг.
Данные: SemiAnalysis InferenceX, открытый API, срез на 27.10.2026. Графики построены по этим данным.

На первой вкладке один запрос на 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, на котором гоняли первые тесты, закрыли без мержа. Нужные флаги:

1--cpu-moe — все веса экспертов в RAM, на GPU плотная часть.
2--n-cpu-moe N — эксперты первых N слоёв в RAM, остальные на GPU. Подбираешь N под свою VRAM.
3-ot / --override-tensor — руками указать, какие тензоры куда класть, по регулярке на имя.
4--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-кэш, про движки — большой гайд.


Источники