Запуск 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 ГБ.