Как запустить DeepSeek-V4 локально: руководство по настройке Pro и Flash
Как запустить DeepSeek-V4 локально: руководство по настройке Pro и Flash
DeepSeek-V4 — один из самых амбициозных релизов моделей с открытыми весами от DeepSeek на сегодняшний день. Семейство включает DeepSeek-V4-Pro, модель Mixture-of-Experts с 1.6 триллиона параметров и 49 миллиардов активированных параметров, и DeepSeek-V4-Flash, меньшую MoE-модель с 284 миллиардами параметров и 13 миллиардами активированных параметров. Обе модели поддерживают длину контекста до одного миллиона токенов.
Это звучит впечатляюще, но также возникает практический вопрос: можно ли действительно запустить DeepSeek-V4 локально?
Ответ — да, но с важным уточнением. DeepSeek-V4 — это не модель для ноутбука. Даже версия Flash требует серьёзного развертывания на нескольких GPU. В этом руководстве описан путь локальной настройки с использованием официальных репозиториев DeepSeek на Hugging Face, объясняется, какое оборудование нужно планировать, и показано, как правильно использовать официальные файлы инференса и кодирования.
Страницы моделей для справки:
DeepSeek-V4-Pro против DeepSeek-V4-Flash
Перед загрузкой выберите подходящий вариант модели.
| Модель | Всего параметров | Активированных параметров | Длина контекста | Точность | Лучшее применение |
|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 284B | 13B | 1M | Смешанная FP4 + FP8 | Быстрые локальные эксперименты, недорогой сервис, помощники по программированию, тестирование длинного контекста |
| DeepSeek-V4-Pro | 1.6T | 49B | 1M | Смешанная FP4 + FP8 | Максимальное качество, исследовательские лаборатории, крупные GPU-кластеры, серьёзные задачи рассуждения и агентности |
Самое важное — DeepSeek-V4 использует архитектуру Mixture-of-Experts (MoE). Для каждого токена активируется только часть модели, что снижает вычислительные затраты. Однако вам всё равно нужно хранить и загружать веса модели. Это означает, что требования к памяти GPU и хранилищу остаются очень высокими.
Для большинства разработчиков DeepSeek-V4-Flash — реалистичная отправная точка. DeepSeek-V4-Pro лучше рассматривать как развертывание на уровне кластера.
Чем DeepSeek-V4 отличается?
Согласно карточке модели DeepSeek, серия V4 вводит несколько крупных улучшений:
- Гибридная архитектура внимания: DeepSeek сочетает Compressed Sparse Attention (CSA) и Heavily Compressed Attention (HCA) для повышения эффективности при длинном контексте. В настройке с миллионом токенов DeepSeek-V4-Pro, по сообщениям, использует значительно меньше кеша KV, чем DeepSeek-V3.2.
- Гиперсвязи с ограничением многообразия (mHC): улучшают стабильность очень глубоких сетей при сохранении ёмкости модели.
- Оптимизатор Muon: DeepSeek использует Muon во время обучения для лучшей сходимости и стабильности.
- Длинный контекст: и Pro, и Flash поддерживают до 1M токенов, при этом DeepSeek рекомендует минимум 384K контекста для режима Think Max.
- Несколько режимов рассуждения: DeepSeek-V4 поддерживает режимы Non-think, Think High и Think Max.
Для локального развертывания два самых важных практических изменения — это смешанная точность FP4/FP8 и специальный формат кодирования чата.
Требования к оборудованию
DeepSeek-V4 не предназначен для потребительских GPU, таких как RTX 4090, если только вы не планируете экспериментировать с сильно модифицированными квантованиями сообщества в будущем. Для официальных весов планируйте серверные GPU.
Практическое планирование оборудования
| Сценарий использования | Рекомендуемое оборудование | Примечания |
|---|---|---|
| Тестовое развертывание DeepSeek-V4-Flash | 4-8 GPU с большой памятью NVIDIA | Практическая цель — GPU класса H100/H200/A100 |
| Продакшн-сервис DeepSeek-V4-Flash | 8+ GPU с большой памятью | Больше GPU — выше пропускная способность и поддержка длинного контекста |
| Исследовательское развертывание DeepSeek-V4-Pro | Большой многонодовый GPU-кластер | Рассматривайте как инфраструктуру кластера, а не модель для одной рабочей станции |
| Think Max с длинным контекстом | Дополнительная память GPU и бюджет кеша KV | DeepSeek рекомендует минимум 384K контекста для Think Max |
Требования к хранилищу
Перед загрузкой подготовьте большой локальный диск:
- Используйте NVMe SSD по возможности.
- Оставьте дополнительное место для конвертированных весов.
- Не загружайте напрямую на маленький системный диск.
- Ожидайте, что модель Pro потребует значительно больше места, чем Flash.
Рекомендуемая структура каталогов:
/data/models/deepseek-v4-flash-hf # оригинальные файлы Hugging Face
/data/models/deepseek-v4-flash-infer # конвертированные веса для инференса
/data/cache/huggingface # кеш HFЕсли вы арендуете облачный сервер с GPU, выбирайте инстанс с локальным NVMe или подключайте большой высокоскоростной том. Для VPS-подобного развертывания можно сравнить GPU или серверы с большой памятью у провайдеров, например, LightNode, но убедитесь, что у инстанса действительно достаточно памяти GPU для этой модели.
Требования к программному обеспечению
Вам нужна Linux-среда с актуальными драйверами NVIDIA и CUDA.
Рекомендуемый базовый набор:
| Компонент | Рекомендация |
|---|---|
| ОС | Ubuntu 22.04 или новее |
| Python | 3.10+ |
| Драйвер GPU | Актуальный драйвер NVIDIA для дата-центров |
| CUDA | Предпочтительно CUDA 12.x |
| PyTorch | Сборка с поддержкой CUDA |
| Git LFS | Требуется для файлов модели |
| Hugging Face CLI | Требуется для надёжной загрузки |
Установите базовые инструменты:
sudo apt update
sudo apt install -y git git-lfs python3 python3-venv python3-pip
git lfs install
pip install -U huggingface_hubЕсли используете виртуальное окружение Python:
python3 -m venv dsv4-env
source dsv4-env/bin/activate
pip install -U pip wheel setuptools
pip install -U huggingface_hub torch transformers safetensorsШаг 1: Загрузка DeepSeek-V4-Flash
Для большинства пользователей начните с Flash:
mkdir -p /data/models
cd /data/models
huggingface-cli download deepseek-ai/DeepSeek-V4-Flash \
--local-dir DeepSeek-V4-Flash \
--local-dir-use-symlinks FalseЕсли хотите модель Pro:
huggingface-cli download deepseek-ai/DeepSeek-V4-Pro \
--local-dir DeepSeek-V4-Pro \
--local-dir-use-symlinks FalseЕсли загрузка прервалась, просто запустите ту же команду снова. Hugging Face продолжит загрузку.
Шаг 2: Ознакомьтесь со структурой официального репозитория
После загрузки проверьте папку модели:
cd /data/models/DeepSeek-V4-Flash
lsКарточка модели указывает на две важные папки:
inference/— официальный локальный код инференса, включая скрипты конвертации весов и генерацииencoding/— утилиты для кодирования подсказок и парсинга вывода DeepSeek-V4
Это важно, потому что DeepSeek-V4 не поставляется с обычным шаблоном чата в формате Jinja. Не стоит предполагать, что любой универсальный OpenAI-совместимый чат-обёртка корректно отформатирует подсказки из коробки.
Шаг 3: Конвертация весов для официального инференса
В официальном README инференса есть шаг конвертации перед запуском генерации.
Из репозитория модели:
cd /data/models/DeepSeek-V4-Flash/inference
export HF_CKPT_PATH=/data/models/DeepSeek-V4-Flash
export SAVE_PATH=/data/models/DeepSeek-V4-Flash-infer
export EXPERTS=256
export MP=4
export CONFIG=config.json
python convert.py \
--hf-ckpt-path ${HF_CKPT_PATH} \
--save-path ${SAVE_PATH} \
--n-experts ${EXPERTS} \
--model-parallel ${MP}Пояснения к параметрам:
| Переменная | Значение |
|---|---|
HF_CKPT_PATH | Путь к оригинальным файлам модели Hugging Face |
SAVE_PATH | Путь для сохранения конвертированных весов инференса |
EXPERTS=256 | Количество экспертов, используемых при конвертации DeepSeek-V4 |
MP=4 | Размер модельного параллелизма; обычно совпадает с числом GPU для запуска |
CONFIG | Конфигурационный файл модели, используемый скриптом генерации |
Если у вас больше GPU, скорректируйте MP соответственно. Например, для 8-GPU узла:
export MP=8Опция FP8 для экспертов
В официальном README инференса указано, что если хотите использовать экспертов FP8 вместо FP4, удалите из config.json строку:
"expert_dtype": "fp4"Затем при конвертации добавьте --expert-dtype fp8:
python convert.py \
--hf-ckpt-path ${HF_CKPT_PATH} \
--save-path ${SAVE_PATH} \
--n-experts ${EXPERTS} \
--model-parallel ${MP} \
--expert-dtype fp8Для большинства пользователей начните с дефолтной смешанной настройки FP4/FP8. Меняйте точность только после того, как получите рабочую базу.
Шаг 4: Запуск интерактивного чата
После завершения конвертации запустите официальный скрипт генерации:
cd /data/models/DeepSeek-V4-Flash/inference
export MP=4
export SAVE_PATH=/data/models/DeepSeek-V4-Flash-infer
export CONFIG=config.json
torchrun --nproc-per-node ${MP} generate.py \
--ckpt-path ${SAVE_PATH} \
--config ${CONFIG} \
--interactiveДля пакетного ввода из файла:
torchrun --nproc-per-node ${MP} generate.py \
--ckpt-path ${SAVE_PATH} \
--config ${CONFIG} \
--input-file prompts.txtДля запуска на нескольких узлах:
torchrun \
--nnodes ${NODES} \
--nproc-per-node $((MP / NODES)) \
--node-rank $RANK \
--master-addr $ADDR \
generate.py \
--ckpt-path ${SAVE_PATH} \
--config ${CONFIG} \
--input-file prompts.txtУбедитесь, что каждый узел имеет доступ к пути с конвертированными чекпоинтами, или скопируйте файлы в одинаковые пути на всех машинах.
Шаг 5: Используйте правильные параметры сэмплинга
DeepSeek рекомендует следующие параметры сэмплинга для локального развертывания:
temperature = 1.0
top_p = 1.0Если ваш скрипт генерации принимает эти параметры через CLI, используйте их напрямую. Если нет, задайте их в скрипте или конфиге, где определяются параметры сэмплинга.
Для режима Think Max DeepSeek рекомендует использовать окно контекста не менее:
384K токеновНе начинайте с огромного окна контекста при первом тесте. Начните с малого, убедитесь, что модель загружается и генерирует корректно, затем постепенно увеличивайте длину контекста, контролируя использование памяти GPU.
Шаг 6: Понимание кодирования чата DeepSeek-V4
DeepSeek-V4 не включает стандартный шаблон чата Jinja. Вместо этого в репозитории есть папка encoding/ с Python-утилитами.
Базовое использование выглядит так:
from encoding_dsv4 import encode_messages, parse_message_from_completion_text
messages = [
{"role": "system", "content": "Вы — полезный помощник."},
{"role": "user", "content": "Сколько будет 2+2?"},
]
prompt = encode_messages(messages, thinking_mode="thinking")
print(prompt)Для неразмышляющего чата используйте режим chat:
prompt = encode_messages(messages, thinking_mode="chat")Для режима размышления модель использует явные разделители рассуждений:
<think> ... </think>Парсер может преобразовать сгенерированный текст обратно в структурированные сообщения ассистента:
completion = "Простая арифметика.</think>2 + 2 = 4.<|end▁of▁sentence|>"
parsed = parse_message_from_completion_text(completion, thinking_mode="thinking")
print(parsed)Это особенно важно, если вы хотите построить собственный локальный API-обёртку вокруг DeepSeek-V4.
Объяснение режимов рассуждения
DeepSeek-V4 поддерживает три практических стиля рассуждения:
| Режим | Поведение | Сценарий использования |
|---|---|---|
| Non-think | Быстрые прямые ответы | Простые вопросы-ответы, суммирование, рутинная помощь с кодом |
| Think High | Обоснованные ответы с продуманным анализом | Отладка, планирование, математика, архитектурные решения |
| Think Max | Максимальные усилия по рассуждению | Сложные задачи программирования, агентные рабочие процессы, исследовательские задачи |
Для локального сервера вы можете сделать эти режимы отдельными именами моделей, например:
deepseek-v4-flash-chat
deepseek-v4-flash-thinking
deepseek-v4-flash-maxВнутри каждый маршрут может использовать разное кодирование подсказок, лимиты контекста и параметры генерации.
Можно ли запускать DeepSeek-V4 с vLLM или SGLang?
На момент запуска самым надёжным путём является официальный код инференса DeepSeek из репозитория модели. Универсальные фреймворки для сервинга могут потребовать обновлений, чтобы полностью поддержать архитектуру DeepSeek-V4, смешанную точность, поведение с длинным контекстом и кастомное кодирование.
Практический подход:
- Сначала успешно запустите официальный путь
inference/generate.py. - Подтвердите качество вывода и форматирование подсказок с помощью официальных утилит
encoding/. - Затем проверьте, добавлена ли в ваш любимый фреймворк явная поддержка DeepSeek-V4.
- Мигрируйте на vLLM, SGLang, TensorRT-LLM или другой фреймворк сервинга только после подтверждения поддержки.
Это поможет избежать распространённой ошибки: модель загружается, но качество чата плохое из-за неправильного шаблона подсказок.
Создание простой локальной API-обёртки
Если хотите локальный эндпоинт в стиле OpenAI, можно обернуть официальный путь генерации через FastAPI. Точная реализация зависит от интеграции generate.py, но общий поток такой:
- Получить OpenAI-совместимые
messages. - Преобразовать их с помощью
encoding_dsv4.encode_messages(). - Отправить закодированную подсказку в движок инференса DeepSeek-V4.
- Распарсить вывод с помощью
parse_message_from_completion_text(). - Вернуть JSON-ответ, совместимый с OpenAI.
Псевдокод:
from encoding_dsv4 import encode_messages, parse_message_from_completion_text
messages = [
{"role": "system", "content": "Вы — полезный помощник."},
{"role": "user", "content": "Объясни кеш KV простыми словами."},
]
prompt = encode_messages(messages, thinking_mode="thinking")
# Отправить prompt локальному инференс-воркеру DeepSeek-V4
raw_completion = run_deepseek_v4(prompt)
assistant_message = parse_message_from_completion_text(
raw_completion,
thinking_mode="thinking",
)
print(assistant_message["content"])Для продакшена добавьте:
- очередь запросов
- потоковую отдачу вывода
- обработку таймаутов
- проверки состояния GPU
- ограничение максимального контекста
- структурированные логи
- аутентификацию
Устранение неполадок
1. Ошибка CUDA Out of Memory
Снизьте нагрузку на память, уменьшив:
- длину контекста
- размер батча
- размер тензорного/модельного параллелизма
- используйте больше GPU
- начните с DeepSeek-V4-Flash вместо Pro
Длинный контекст обычно первое, что уменьшают при отладке.
2. Загрузка прерывается или зависает
Используйте huggingface-cli download вместо загрузки через браузер. Запускайте ту же команду для возобновления.
Можно также задать отдельный каталог кеша:
export HF_HOME=/data/cache/huggingface
export HUGGINGFACE_HUB_CACHE=/data/cache/huggingface/hub3. Модель генерирует странный чат
Проверьте форматирование подсказок. DeepSeek-V4 не использует стандартный шаблон Jinja. Используйте официальную реализацию из encoding/.
4. Ошибка при запуске на нескольких GPU
Проверьте, видит ли PyTorch все GPU:
python - <<'PY'
import torch
print(torch.cuda.device_count())
for i in range(torch.cuda.device_count()):
print(i, torch.cuda.get_device_name(i))
PYТакже проверьте сетевые настройки NCCL для многонодовых запусков:
export NCCL_DEBUG=INFO5. Think Max слишком медленный
Think Max рассчитан на большие вычислительные затраты для сложных рассуждений. Используйте его только для задач, где это оправдано. Для обычного ассистента обычно достаточно Non-think или Think High.
Рекомендуемая стратегия развертывания
Если вы запускаете DeepSeek-V4 локально впервые, следуйте такой последовательности:
- Начните с DeepSeek-V4-Flash.
- Используйте официальный код инференса.
- Сначала тестируйте с небольшим контекстом.
- Подтвердите работу официального кодирования.
- Постепенно увеличивайте длину контекста.
- Добавляйте API-обёртку только после стабильной локальной генерации.
- Рассматривайте Pro только при наличии кластерных GPU-ресурсов.
Итоговые мысли
DeepSeek-V4 мощен, но это не модель для случайного локального запуска. Версия Flash — практическая отправная точка, а Pro предназначен для серьёзных многогпу или многонодовых сред. Ключ к успешной настройке — следовать официальному рабочему процессу: загрузить репозиторий Hugging Face, конвертировать веса с помощью предоставленных инструментов инференса, запускать генерацию через torchrun и использовать специализированные утилиты кодирования DeepSeek-V4 вместо предположения о универсальном шаблоне чата.
Если вам нужно только экспериментировать с подсказками, проще использовать хостинговый чат-сервис DeepSeek или API. Но если нужна приватность данных, полный контроль, отсутствие оплаты за токен или кастомная инфраструктура, запуск DeepSeek-V4 локально даст прочную основу для создания приватных AI-систем с длинным контекстом.