AI 10 мин чтения Автор KRAKOBIT

Запуск DeepSeek на RTX 3090: как MoE обходит лимит в 24 ГБ

Запуск DeepSeek на RTX 3090: что лежит в видеопамяти, что в оперативке, сколько весят файлы и от чего зависит скорость. Разбор на открытых цифрах V3 и R1.

Большие модели DeepSeek запускают на одной RTX 3090 за счёт архитектуры «смесь экспертов» (MoE). На каждый токен работает малая часть весов, поэтому видеокарта держит постоянную часть модели и кэш контекста, а основная масса экспертов лежит в обычной оперативке и считается процессором. Влезет ли модель, решает простая сумма: размер файла против 24 ГБ видеопамяти плюс свободная оперативка. Насколько быстро она будет отвечать, решает пропускная способность оперативной памяти. Всё это хорошо видно на DeepSeek V3 и R1: у них открыты веса, конфигурация и технический отчёт, поэтому каждую цифру можно пересчитать самому.

Конкретный случай с новой моделью и связкой RTX 3090 плюс 64 ГБ оперативки KRAKOBIT разбирал в новости о DeepSeek V4.1 Flash. Эта статья про механику, которая стоит за такими запусками.

Что такое смесь экспертов у DeepSeek

В обычной «плотной» модели каждый токен проходит через все веса. Модель на 70 млрд параметров читает все 70 млрд ради одного куска слова. В MoE-модели часть слоёв разбита на много небольших подсетей, экспертов. Маршрутизатор на каждом токене выбирает несколько из них, остальные простаивают.

DeepSeek идёт по этому пути с января 2024 года. Линейка выглядит так:

Модель Дата Параметров всего Активных на токен Доля активных
DeepSeekMoE 16B январь 2024 16,4 млрд 2,8 млрд 17%
DeepSeek V2 май 2024 236 млрд 21 млрд 9%
DeepSeek V2-Lite май 2024 15,7 млрд 2,4 млрд 15%
DeepSeek V3 декабрь 2024 671 млрд 37 млрд 5,5%
DeepSeek R1 январь 2025 671 млрд 37 млрд 5,5%

Тренд виден по последней колонке: модели растут, а доля работающих весов падает. Для домашнего запуска это главное свойство. Огромная модель за один шаг читает маленький кусок себя, а значит, большую часть можно положить в память, где места много, а скорость ниже.

Как устроен один слой DeepSeek V3

По техническому отчёту DeepSeek V3 и файлу конфигурации модели на Hugging Face у V3 61 слой. Первые три обычные, плотные. В остальных 58 вместо одного большого блока стоят 257 экспертов: один общий, через который проходит каждый токен, и 256 маршрутизируемых, из которых на каждый токен выбираются 8.

Размер одного эксперта считается из конфигурации: скрытая размерность 7168, внутренняя размерность эксперта 2048, три матрицы. Получается около 44 млн параметров на эксперта (оценка по config.json).

Дальше арифметика:

  • маршрутизируемые эксперты, которые работают на одном токене: 8 × 58 слоёв × 44 млн ≈ 20 млрд параметров (оценка);
  • всё остальное, что работает на каждом токене (внимание, общие эксперты, три плотных слоя, эмбеддинги): около 17 млрд (оценка, разница между 37 млрд и маршрутизируемой частью);
  • маршрутизируемые эксперты, которые лежат и ждут: около 650 млрд из 671.

Из этого следует разделение. Около 17 млрд параметров нужны на каждом шаге, их выгодно держать на видеокарте. Около 650 млрд нужны редко и по очереди, их можно держать в оперативке. С каждого токена из этой большой кучи читается примерно 20 млрд.

Что лежит в видеопамяти, а что в оперативке

На видеокарту при таком запуске уходит:

  • блоки внимания, которые связывают текущий токен с предыдущим текстом;
  • маршрутизатор;
  • общий эксперт каждого слоя;
  • три плотных слоя в начале модели;
  • кэш контекста, память модели о том, что уже было в разговоре.

В оперативку уходят маршрутизируемые эксперты. Процессор считает выбранных экспертов прямо там, где они лежат. По шине PCIe между видеокартой и процессором ходят небольшие промежуточные векторы, а не гигабайты весов.

В llama.cpp, открытом движке для запуска моделей на обычных компьютерах, такая раскладка задаётся параметром -ot exps=CPU: все тензоры, в названии которых есть exps, остаются на процессоре. Позже в движке появились короткие варианты --cpu-moe и --n-cpu-moe N, второй оставляет на процессоре экспертов только из N слоёв, а остальные отдаёт видеокарте, если на ней хватает места. Тот же принцип ещё в начале 2025 года показал проект KTransformers из Университета Цинхуа: полноразмерные V3 и R1 на одной видеокарте с 24 ГБ и сотнями гигабайт оперативки на сервере.

Почему сжатие кэша MLA решает вопрос с 24 ГБ

У видеокарты два потребителя памяти: веса и кэш контекста. Кэш растёт с каждым токеном разговора. У обычных моделей именно он съедает видеопамять при длинных документах.

В DeepSeek V2 компания ввела механизм Multi-head Latent Attention (MLA). Вместо полных ключей и значений для каждой головы внимания модель хранит один сжатый вектор на токен в каждом слое. По отчёту V2, это уменьшило кэш на 93,3% по сравнению с прежней моделью DeepSeek 67B.

Для V3 расчёт такой. В каждом слое на токен хранится 512 чисел сжатого вектора и 64 числа позиционной части, всего 576. На 61 слой это 35 136 чисел, при 16 битах на число около 70 КБ на токен. Контекст в 32 тысячи токенов занимает около 2,2 ГБ, в 128 тысяч около 9 ГБ (оценка по конфигурации, без служебных буферов программы). Без MLA при 128 головах внимания та же модель хранила бы в десятки раз больше.

В llama.cpp поддержка сжатого кэша MLA появилась весной 2025 года. До этого движок разворачивал кэш в полный размер, и длинный контекст у DeepSeek съедал видеопамять намного быстрее.

Сколько весят файлы и что влезает в 24 ГБ плюс 64 ГБ

Размер файла модели равен числу параметров, умноженному на число бит на параметр и делённому на восемь. Оригинальные веса V3 хранятся в 8-битном формате FP8 и вместе с дополнительным модулем предсказания токенов занимают около 690 ГБ.

Домашние версии сжимают сильнее. Самые известные сжатые сборки R1 выпустила команда Unsloth в январе 2025 года. Их хитрость в «динамическом» сжатии: внимание и общие части остаются в 4–6 битах, а маршрутизируемые эксперты сжимаются до 1,58 бита. По их же данным, равномерное сжатие всей модели до 1,58 бита давало бессвязный текст и бесконечные повторы.

Сборка DeepSeek R1 Размер файла
Оригинал FP8 около 690 ГБ
Unsloth 2,51 бит 212 ГБ
Unsloth 2,22 бит 183 ГБ
Unsloth 1,73 бит 158 ГБ
Unsloth 1,58 бит 131 ГБ

У связки RTX 3090 и 64 ГБ оперативки в сумме 88 ГБ. Операционная система, браузер и сама программа забирают из оперативки 6–10 ГБ (оценка), значит, модели остаётся около 78–82 ГБ. Полноразмерные V3 и R1 туда не влезают даже в самой сжатой сборке: им нужно хотя бы 24 ГБ видеопамяти и 128 ГБ оперативки, а комфортно 192 ГБ.

Если файл больше памяти, llama.cpp может читать недостающие веса прямо с SSD. Модель запустится, но каждый токен будет ждать накопитель, и скорость падает до долей токена или единиц токенов в секунду в зависимости от диска.

Отсюда практический потолок для 3090 с 64 ГБ: MoE-модели, файл которых укладывается примерно в 80 ГБ. В 4-битном сжатии это модели до 140 млрд параметров всего (оценка). На противоположном полюсе V2-Lite: около 10 ГБ в 4 битах, она целиком помещается в видеопамять и вообще не трогает оперативку.

От чего зависит скорость ответа

Генерация текста упирается не в вычисления, а в чтение памяти. На каждый токен нужно прочитать все активные веса. Ту часть, что лежит в видеопамяти RTX 3090, карта читает со скоростью 936 ГБ/с. Ту часть, что лежит в оперативке, процессор читает в 9–18 раз медленнее: двухканальная DDR4-3200 даёт теоретические 51,2 ГБ/с, DDR5-6400 даёт 102,4 ГБ/с. Медленная часть и задаёт темп.

Потолок скорости считается так: пропускная способность оперативки делится на объём экспертов, прочитанных из неё за один токен. В 4-битном сжатии с запасом на служебные данные один параметр занимает около 0,56 байта.

Маршрутизируемых параметров на токен из RAM Чтение на токен Потолок на DDR4-3200 Потолок на DDR5-6400
3 млрд 1,7 ГБ 30 ток/с 60 ток/с
10 млрд 5,6 ГБ 9 ток/с 18 ток/с
20 млрд (как у V3) 11,2 ГБ 4,6 ток/с 9 ток/с

Все цифры в таблице оценка теоретического потолка. На практике процессор выбирает из памяти 50–70% паспортной скорости (оценка), и реальные числа будут ниже. Таблица показывает пропорцию: скорость определяют активные параметры модели и тип оперативки, а не мощность видеокарты. Переход с DDR4 на DDR5 в такой схеме почти удваивает потолок. Замена RTX 3090 на карту с тем же объёмом памяти потолок почти не двигает.

У V3 в сжатии 1,58 бита эксперты на токен весят около 4 ГБ вместо 11 (оценка), поэтому серверы с многоканальной памятью и выдают на ней двузначные скорости. Восьмиканальная DDR5 на серверной платформе даёт под 300–400 ГБ/с, это другой класс машин.

Почему длинный документ модель читает долго

У локальной модели две скорости. Первая, генерация, разобрана выше. Вторая, чтение входящего текста: прежде чем ответить, модель обрабатывает весь загруженный документ.

Здесь работают большие пачки токенов сразу, и llama.cpp выгоднее не считать экспертов на процессоре, а переносить их веса на видеокарту по шине PCIe и считать там. У RTX 3090 шина PCIe 4.0 x16, около 32 ГБ/с в одну сторону. Чем больше экспертов и чем длиннее документ, тем дольше пауза перед первым словом. На старой плате с PCIe 3.0 скорость шины вдвое ниже.

Почему для этого берут RTX 3090

RTX 3090 вышла в сентябре 2020 года: 24 ГБ видеопамяти GDDR6X, 936 ГБ/с, паспортное потребление 350 Вт. Это самая старая потребительская карта NVIDIA с 24 ГБ и поэтому самая дешёвая на вторичном рынке среди карт такого объёма. В MoE-схеме объём видеопамяти важнее скорости ядра: в 24 ГБ помещаются постоянная часть модели и кэш длинного контекста, а эксперты всё равно читаются из оперативки.

Другой путь, две видеокарты разного класса в одной машине, KRAKOBIT разбирал на примере локального Qwen на RTX 5090 и 5060 Ti.

Чем локальный DeepSeek отличается от облачного

Веса те же, что крутятся у DeepSeek и у посредников вроде OpenRouter, где модели компании недавно заняли больше половины токенов за сутки, об этом новость KRAKOBIT про OpenRouter. Разница в трёх местах.

Первое, точность. Облако работает с оригинальными 8-битными весами, дома почти всегда сжатая сборка. Чем ниже бит, тем чаще ошибки в коде, арифметике и длинных рассуждениях.

Второе, скорость. Серверные ускорители держат всю модель в быстрой памяти и обслуживают сотни запросов одновременно. Домашняя карта обслуживает одного пользователя.

Третье, сеть. Файл модели после скачивания работает без единого обращения к серверам DeepSeek: без аккаунта, ключа, оплаты и проверки страны. Когда Иран в июне 2025 года отключал интернет по всей стране, облачные ИИ-сервисы были недоступны, а модель на диске работала бы как раньше. Интернет нужен только для скачивания программы и файла модели.

Что работает на RTX 3090, а что нет

Работает:

  • небольшие MoE-модели DeepSeek вроде V2-Lite целиком на видеокарте, быстро;
  • MoE-модели с файлом до 80 ГБ на связке 3090 плюс 64 ГБ, эксперты в оперативке;
  • длинный контекст у моделей с MLA при свежей версии llama.cpp;
  • запуск без сети после скачивания.

Не работает или работает плохо:

  • полноразмерные V3 и R1 на 64 ГБ оперативки: файл больше памяти, остаётся чтение с SSD;
  • плотные модели больше 24 ГБ: им нужны все веса на каждом токене, и оперативка тормозит каждый шаг;
  • равномерное сжатие ниже 2 бит без динамических сборок: качество падает до бессвязного текста;
  • одновременная работа нескольких человек на одной карте.

Для любой новой MoE-модели DeepSeek проверка сводится к трём числам из её карточки: общее число параметров даёт размер файла, активные параметры дают потолок скорости, наличие MLA говорит, сколько контекста влезет в 24 ГБ.