Локально поднял DeepSeek-R1 на сервере за 230 тысяч: 6.5 токенов/сек
Запускал локально DeepSeek-R1 и V3 по двум причинам. Первая — блокировки и приватность данных. Облачные ИИ всё чаще режут доступ из РФ, я не хочу зависеть от настроения провайдера. Плюс есть запросы, которые в принципе не хочется отдавать наружу — внутренние документы, переписки, рабочая информация. Локальная модель решает обе задачи сразу.
Вторая причина — экспериментальная. До этого тестировал только маленькие модели на CPU и хотелось пощупать, как ведёт себя сверхбольшая модель на 671 миллиард параметров на домашнем железе. По бенчмаркам R1 показывал интересные результаты, и я решил собрать конфигурацию, которая её потянет.
Конфигурация сервера. Процессор AMD EPYC 7K62 — 48 ядер, 96 потоков, 3.3 ГГц на буст, 192 МБ L3-кеша. Материнка Supermicro H11SSL-i Version 2.00 — серверная плата с поддержкой EPYC и восьмиканального DDR4. Память — 512 ГБ DDR4 RDIMM, восемь планок по 64 ГБ, чтобы максимально задействовать пропускную способность каналов.
Из остального — NVMe-диск WD Black SN770 на 2 ТБ для хранения весов модели и кеша. Видеокарта NVIDIA RTX 3090 Founders Edition; добавлял её отдельным шагом, чтобы сравнить чистый CPU-режим с гибридным. Блок питания Corsair RM850 на 850 Вт, корпус Zalman T6. Общая стоимость сборки — около 230 тысяч рублей.
Модель — DeepSeek-R1-0528-UD-Q4_K_XL: 671 миллиард параметров, на диске весит 384 ГБ в формате GGUF. Для сравнения скорости параллельно прогонял DeepSeek-V3-0324, она у меня стояла раньше. Обе разворачивал через docker-compose поверх Ollama — это даёт изолированное окружение и удобно поднимать-сворачивать конфигурации без ручной возни с зависимостями.
На обеих моделях гонял один и тот же тестовый запрос: «Меня интересуют подробности о Хабре. Расскажи как можно больше и подробнее. Обязательно добавь историю и тенденции». Запрос специально длинный и требующий развёрнутого ответа, чтобы было что замерять. Контрольные точки скорости снимал после 1000, 2000 и 3000 токенов, чтобы увидеть, как она проседает по мере накопления контекста: при росте контекста модель тратит всё больше ресурсов на каждый следующий токен.
Разница между R1 и V3 при сложных запросах с цепочкой рассуждений в моих замерах оказалась в пределах статистики погрешности — обе показали примерно одинаковую скорость на том же железе. Поэтому дальше я остановился на R1 как основной модели и весь анализ привожу для неё.
Сначала прогон только на CPU. Скорость стартует с 4.1 т/с, после 1000 токенов проседает до 3.7, после 2000 — до 3.5, после 3000 — до 3.3. Финальный замер: 3304 токена за 992 секунды, усреднённая 3.3 т/с. Процессор всё это время висит на 100%. Жить можно, но для интерактивного диалога медленно — это режим «оставил вопрос, пошёл за чаем».
Добавил RTX 3090 и пересобрал в режим CPU+GPU. Стартовая скорость 8 т/с, на 1000 токенов — 7, на 2000 — 6.8, на 3000 — 6.6. Финал — 3549 токенов за 546 секунд, в среднем 6.5 т/с. GPU вначале нагружен на 100%, по мере того как часть слоёв уходит на CPU, нагрузка на видеокарту падает до 30%. Прирост по итогу — практически двукратный относительно CPU-only.
Главный вывод по соотношению цена/производительность. GPU стоит примерно 30% от стоимости всего сервера, а даёт +100% скорости. Для локального LLM на больших моделях это самая выгодная инвестиция: без видеокарты сервер всё равно работает, но на грани комфорта; с ней — становится пригодным для регулярного использования.
Архитектурно тут важно понимать одну вещь. Инференс больших языковых моделей упирается в пропускную способность памяти, а не в вычислительную мощь процессора. Поэтому 8-канальный DDR4 на 512 ГБ важнее, чем количество ядер. И поэтому видеокарта с быстрой VRAM даёт такой прирост — даже если она держит не всю модель, а только часть слоёв.
Что я понял про сценарии. DeepSeek-R1-0528 имеет смысл разворачивать локально для сложных аналитических задач, где важно качество ответа и приватность, и где не критично, что модель «думает» минуту. Для бытовых запросов — переписать письмо, объяснить термин, помочь с кодом — 6.5 т/с медленно, я для них использую Llama 4 Maverick: при 400 миллиардах параметров на этом же железе она выдаёт около 30 т/с, и для повседневного диалога этого хватает.
Из ограничений. Локалка — это капитальные вложения и обслуживание, плюс регулярные обновления весов модели (новые версии выходят каждые два-три месяца, и каждая весит сотни гигабайт). Зато получаешь полную приватность, гибкость в настройке параметров, независимость от внешних сервисов. Для меня это важнее, чем подписка на чужой облачный API.
Для тех, кто думает в эту сторону, маленькая ремарка про путь. Я начинал не с такой конфигурации — сначала были эксперименты с маленькими моделями на обычном потребительском CPU, потом добавлялись планки памяти и переход на серверный EPYC, и только в финале — видеокарта. Этот путь шаг за шагом помог понять, какие компоненты в реальности дают прирост, а какие — это «купил по совету форума, не помогло». На сборку «всё сразу» я не рекомендую: ошибиться в каком-то компоненте легко, и переделывать дороже, чем дойти эмпирически.