Предыстория
Год назад к нам пришёл заказ: собрать локальный сервер под задачи аналитики звонков для крупной компании в России. Поток — 10 000+ звонков в месяц. По требованию службы безопасности — всё в их контуре, on-premise. Никаких облачных API.
Основной наш бизнес — речевая аналитика. Звонки забираем откуда угодно: CRM, IP-телефония, операторы (МТС, Билайн, Мегафон, Alltel и прочие), API Яндекс.Диска, любые внешние источники, до которых доехал клиент. Дальше всё транскрибируется, прогоняется через LLM, на выходе — оценка разговора, корневые причины, тесты для сотрудников. Привыкли работать в облаке. А тут — другой формат.
Обсуждение и проектирование тянулись около полугода — спорили о компонентах, искали в наличии, пересобирали конфигурацию на бумаге. А потом, как водится, всё собрали за пару недель в ускоренном режиме в самом конце. Честно: на тот момент мы не были экспертами в железе. Был запал, был запрос — этого хватило, чтобы взяться и сделать качественно.
В этой статье — что собрали, почему именно так, и какие ловушки прошли. Полную комплектацию (модели, ссылки, артикулы) приложу в конце — пишите в личку или в ТГ-канал.

Откуда взялась конфигурация
Первый источник — Reddit. Когда мы плотно залезли в тему «локальный ИИ сервер под ключ», то наткнулись на чужой пост: сборка на пользовательских видеокартах, не серверных. Конкретно — вот этот пост в r/LocalLLaMA: Got myself a 4-way RTX 4090 rig for local LLM. Тогда (год назад) материалов на эту тему почти не было — ни роликов, ни статей о том, как грамотно подобрать железо под ИИ-кейс.

Я написал автору исходного поста с вопросом: что бы он переделал, если бы собирал заново, и какие конкретно модели и бенчмарки гонял. Спрашивал на ломаном английском, без всяких прелюдий — просто «hello, my name is Dmitrii».

Ответил моментально, подсказал пару моментов по тензорному параллелизму и более оптимальной конфигурации. А когда я в какой-то момент рассказал, под какой именно кейс мы это собираем, он выдал лучший ответ за всю переписку:

Я заскринил и поржал. Дальше мы продолжили вполне по делу. Чувак оказался топ-1 в комментариях по сборкам в r/LocalLLaMA — на Reddit очень активные ребята сидят, не стоит недооценивать.
Параллельно общались с тогдашним коллективным ChatGPT (версия двухлетней давности). С высоты уже не одной собранной конфигурации могу сказать честно: тогда модель писала много бреда. Откуда брала референции — непонятно. То, что выдавал чат, и то, что реально работает на железе, не сходилось.
Сейчас уже легче: появились энтузиасты, которые ведут Google-таблицы с замерами токенов в секунду по моделям и видеокартам. Год назад такого практически не было.
Конфигурация: почему 4× RTX 4090 + водянка
Главный фокус при проектировании — чтобы видеокарты не нагревались и проработали максимально долго. Сервер «на годы», а не майнерская сборка ради цифр в моменте.
Почему именно 4090
Архитектура сильная, много CUDA-ядер
Хорошо оптимизирована под популярные ИИ-фреймворки
Запускать модели проще, чем на 3090: 3090 тоже мощная, но греется заметно сильнее. Еще чипы лопаются, но это с любой видюхой может произойти :)
4090 ещё долго будет актуальной картой
Почему не 5090 (тогда)
5090 на момент заказа только-только выходила. Боялись брать: новая архитектура, есть риск что под неё ещё не дописаны драйверы и часть библиотек в нашем стеке. Под прод-кейс с дедлайном такой риск брать не хотелось — взяли проверенную 4090.
Как оказалось — зря осторожничали. Под 5090 всё дописали довольно быстро, а в наличии её сейчас сильно больше: цена примерно та же, а 4090 новой не купить ни в России, ни за границей — отдельный геморрой. Если планируете похожую сборку сейчас — берите 5090.
А вообще — присмотритесь к серверным картам
Это совет тем, кто хочет собрать систему в долгосрок. Серверные видеокарты (H100, L40S, RTX 6000 Ada, A100, V100 — в зависимости от бюджета и кейса) дороже потребительских. Но они рассчитаны на режим 24/7 из коробки: пассивное охлаждение под серверный поток воздуха, ECC-память, нормальный ресурс под постоянной нагрузкой.
Но это не говорит о том, что данная сборка чем-то уступает серверным видеокартам. Она на долгие годы может обслуживать интересы целой компании, и готова запускать огромные модели на своих мощностях, но об этом в конце.
Но говоря все таки о северных видюхах - с ними не пришлось бы городить трёхслойное охлаждение с двумя радиаторами, двумя помпами и водоблоками с AliExpress — всё, чем мы занимались в этой статье. Поставили в стойку, подключили — поехали.
Если бюджет позволяет и сервер берётся надолго — серверные карты экономят нервы. Мы пошли по пути 4× 4090 потому, что под этот конкретный кейс цифры по цене/производительности так сходились лучше. Но это не универсальный ответ.
Почему водянка
На другом нашем проекте 4090 стоит без водяного охлаждения, на штатном радиаторе с вентиляторами. Температура крутится ~75°. Жить можно, но при работе 24/7 ресурс карты деградирует быстрее.
В этой сборке требование было — режим 24/7 с минимальной деградацией. Поэтому водоблоки на каждую карту, два радиатора, две помпы.

Полная спецификация
Компонент | Модель / Параметры |
|---|---|
Материнская плата | ASUS Pro WS WRX80E-SAGE SE WIFI |
CPU | AMD Ryzen Threadripper PRO 5975WX (32 ядра / 64 потока, TDP 280W) |
RAM | 256 GB DDR4-3200 ECC (8×32 GB Samsung, все 8 каналов забиты, multi-bit ECC) |
GPU | 4× NVIDIA GeForce RTX 4090 (AD102, Ada Lovelace), 24 GB GDDR6X каждая → 96 GB VRAM суммарно |
PCIe | 4.0 x16 на каждую из 4 GPU |
Power Limit GPU | 450W на карту → 1800W пиковый GPU-бюджет |
Storage | Samsung 990 PRO 2 TB NVMe (PCIe 4.0) |
БП | 2× XPG Fusion 1600W Platinum (оба запитаны параллельно) |
Корпус | PHANTEKS Enthoo Pro 2 TG RGB |
OS | Ubuntu 24.04.1 LTS, kernel 6.8 |
Полностью забитые каналы памяти и PCIe 4.0 x16 на каждую карту — это не «было бы неплохо», это обязательное условие для тензорного параллелизма на 4× 4090. Если задушить любую из карт до x8 или оставить часть каналов RAM пустыми — упадёт всё.
Что меняли по ходу проекта и почему
Сборка не сразу собралась в той конфигурации, которая сейчас в таблице. По ходу пришлось ряд позиций пересматривать:
Было | Стало | Почему |
|---|---|---|
ASRock WRX80 Creator R2.0 | ASUS Pro WS WRX80E-SAGE SE WIFI | ASRock сняли с производства — пришлось переезжать на актуальную и более доступную плату того же класса |
Samsung 980 PRO (PCIe 3.0) | Samsung 990 PRO (PCIe 4.0) 2 TB | 980 PRO ограничен ~3500/3400 MB/s (R/W). 990 PRO выдаёт до 7450/6900 MB/s — на загрузке моделей и буферизации звонков заметно |
Стандартный mid-tower | PHANTEKS Enthoo Pro 2 TG RGB | Под 4 видеокарты с водоблоками + два радиатора + два БП обычный корпус не подходит. Phanteks Enthoo Pro 2 — один из немногих, в который физически встаёт такая компоновка |
Дорогой топовый БП × 2 | XPG Fusion 1600W Platinum × 2 | Нашли пару таких же топовых БП без потери качества (Platinum-сертификация, нужная мощность под 71% запас) |
Сборка: компоненты и сложности
Что искалось легко
Корпус — нашли быстро, в наличии
Материнская плата — тоже без проблем

Что искалось тяжело
Все остальное :)
Блоки питания — 2 шт.
Сервер запускается с двух БП. Решение приняли ещё на этапе проектирования: разнести нагрузку, не вешать всё на один блок. Заказчик отдельно попросил сделать так же.
Найти два качественных БП в наличии — отдельный квест. Помню, тогда это было реально больно.
Водоблоки на 4090
Карты разбираются — родные радиаторы снимаются, ставятся водоблоки.
Интересный момент: водоблоки именно под GPU 4090 в России и в Европе в наличии не нашли. Реально продаются они только на AliExpress. Пробовали Яндекс.Маркет — заказ отменили через полторы недели. С Ali пришли быстро, качество отличное.
Конкретно — брали Bykski N-AS4090TUFOG-X под наши карты ASUS TUF GAMING / ROG STRIX LC RTX 4090. Медный, с прозрачной верхней крышкой и подсветкой A-RGB. На момент закупки выходил около 10 700 ₽ за штуку.

Сам контур (помпы, радиаторы, фитинги, шланг, водоблок CPU) — наоборот, собран на проверенных европейских брендах: Alphacool, Bykski, Barrow. Конкретно:
Компонент | Модель |
|---|---|
Водоблок CPU | Alphacool Eisblock XPX Pro Aurora — Full Brass Black Digital RGB |
Помпа + резервуар | Alphacool Eisbecher Aurora D5 Acetal/Glas 150mm + VPP Apex D5 (две штуки — один контур на CPU/часть GPU, второй на остальные GPU) |
Радиатор внутренний | Alphacool NexXxoS ST30 Full Copper 480mm V.2 |
Радиатор внешний | Alphacool NexXxoS UT60 Full Copper 1080mm Nova |
Шланг | Alphacool AlphaTube TPV 16/10 Black Matte (3.3 м) |
Фитинги | Alphacool Eiszapfen 16/10 G1/4 Chrome + Bykski B-WPJ-X (проходные) + Barrow TSSXK-A01 22-31mm / TSSXK-S01 16-22mm |

Внутренний водяной контур
До установки видеокарт в корпус собирается внутренний контур: водоблок CPU, две помпы с резервуарами, разводка трубок, оба БП на местах.

Охлаждение и теплоотвод
Компонент | Количество |
|---|---|
Радиаторы | 2 (один внешний, один внутри корпуса) |
Вентиляторы на внешнем радиаторе | 9 |
Помпы | 2 (одна на CPU, одна на видеокарты) |




Внешний радиатор стоит снаружи корпуса — поставить второй внутрь красиво не вышло. Не самое эстетичное решение, но это и плюс к ощущению ручной сборки. Не Alienware с конвейера — а кастом, собранный под конкретный кейс.
Что показывают замеры
Параметр | Значение под нагрузкой |
|---|---|
Температура GPU | 29–38°C |
Утилизация GPU | ~87% |
Throttling | 0 событий |
Для сравнения: 4090 на штатном радиаторе с вентиляторами (как у нас на другом проекте) под аналогичной нагрузкой держит ~75°C. Разница в 40 градусов — это и есть ответ на вопрос «зачем так упарываться с водянкой».
Прежде чем начали собирать в железе, мы отдельно нарисовали схему теплоотвода — куда какие компоненты, как идут трубки, где какой радиатор, как циркулирует жидкость. Это спасло от пары неочевидных решений.

Энергопотребление
Сразу понятно, почему два БП, а не один: нагрузка серьёзная.
Пиковый бюджет (теоретический максимум)
Компонент | Мощность |
|---|---|
4× RTX 4090 | 1800 W (450W × 4) |
Threadripper PRO 5975WX | 280 W TDP |
256 GB DDR4 ECC (8 модулей) | ~80 W |
NVMe + плата + вентиляторы + сеть | ~80 W |
Потери БП (КПД ~90%) | ~250 W |
ИТОГО из розетки | ~2200–2500 W |
Реальный замер под рабочей нагрузкой
Метрика | Значение |
|---|---|
GPU суммарно | 1161 W из 1800 W (64% от лимита, при 87% утилизации) |
Система (CPU + RAM + плата) | ~363 W (Threadripper отдаёт всего ~117W при 7% CPU — основная работа на GPU) |
Из розетки | ~1693 W (расчётно с учётом КПД БП 90%) |
Распределение по картам в момент замера
GPU 0 | GPU 1 | GPU 2 | GPU 3 |
|---|---|---|---|
326 W | 282 W | 259 W | 294 W |
Примечание: данные взяли в рандомный момент, когда система работала и выполняла задачи.
Нагрузка между картами реально балансируется, перекосов нет — это в том числе результат правильной конфигурации PCIe и корректного шардирования модели.
Как считали и развели нагрузку по двум БП
На этапе проектирования, чтобы выбрать мощность блоков и понять, что один не вытянет, всё считалось по компонентам в pc-builds.com / power-supply-calculator. По 4090 ориентировались на techpowerup.com — RTX 4090 specs с учётом, что Power Limit ограничен на 450W.
Финальная разводка получилась такая:
БП №1 — XPG Fusion 1600W:
Линия | Мощность |
|---|---|
Видеокарта 1 | 450 W |
Видеокарта 2 | 450 W |
Материнская плата | 95 W |
DDR4 (8 модулей) | 48 W |
SSD | 3 W |
Threadripper PRO 5975WX | 280 W |
Итого | 1326 W (≈ 83% от 1600 W) |
БП №2 — XPG Fusion 1600W:
Линия | Мощность |
|---|---|
Видеокарта 3 | 450 W |
Видеокарта 4 | 450 W |
Охлаждение, вентиляторы, помпы и пр. | 50 W |
Итого | 950 W (≈ 59% от 1600 W) |
Суммарно расчётно — 2276 W (≈ 71%) от двух БП. Один 1600W-блок не вытянул бы это даже с натяжкой: 2276 W при пике / один БП = 142% — стопроцентный шатдаун по защите. С двумя — обоим есть запас под пики и просадки от сети.
Финальный вид
Когда смотрю на эти фотографии — до сих пор поражаюсь, как это всё собрали. Громко звучит, но это близко к произведению искусства: как минимум красиво и сделано на совесть. На основную сборку у нас ушло около двух недель.




Сервер в работе:

Тесты производительности
Цифры из продакшена показывать не буду — там слишком много специфичной обвязки, ретраев и клиентского контекста, результаты будут нерепрезентативны. Вместо этого прогнали синтетику на популярных моделях: кто будет собирать похожий сетап под свой кейс — сможет ориентироваться на эти числа.
Как мерили
Стенд — RunPod с 4× RTX 4090, тот же класс карт, что стоит в продакшене: драйвер 550, CUDA 12.4, vLLM (версия под каждую модель — в таблице). Сценарий: фиксированный короткий промпт, 256 токенов на выходе, sweep по concurrency от 1 до 128 параллельных запросов.
Основная метрика — aggregate output tokens/sec: суммарная пропускная способность сервера по всем параллельным соединениям одновременно. TTFT (time to first token) снимали на одиночном запросе — это то, что чувствует пользователь в начале ответа.
TP=4 — для моделей, которые не влезают в одну карту:
NCCL_P2P_DISABLE=1 NCCL_IB_DISABLE=1 \ vllm serve <model_id> \ --tensor-parallel-size 4 \ --gpu-memory-utilization 0.90 \ --max-model-len 8192 \ --enforce-eager \ --disable-custom-all-reduce \ --trust-remote-code \ --port 8000
--enforce-eager и --disable-custom-all-reduce — без них vLLM падает при сборке CUDA-графов: наш pod оказался dual-socket, и NUMA-топология этому не рада. NCCL_P2P_DISABLE=1 NCCL_IB_DISABLE=1 — отключаем P2P и InfiniBand, которых на RTX 4090 нет физически.
replicated×4 — для моделей, которые целиком влезают в одну карту:
for i in 0 1 2 3; do CUDA_VISIBLE_DEVICES=$i vllm serve <model_id> \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.90 \ --max-model-len 8192 \ --port $((8000 + i)) & done
Никаких NCCL-флагов, никакого межкарточного общения — каждый инстанс работает сам по себе.
Параметры бенчмарка — одинаковые для всех моделей:
python3 bench_common.py \ --model <served_model_name> \ --concurrency <C> \ # sweep: 1 → 4 → 16 → 64 → 128 --requests <C×16 или 512> \ # при C≥64 фиксируем 512 запросов --max-tokens 256 \ --prompt-kind short # ~15 входных токенов, 256 выходных
Промпт: "Explain in detail how a transformer attention layer works, step by step." — достаточно объёмный ответ, чтобы прогреть KV-кэш и честно померить throughput. Температура 0, стриминг включён для корректного замера TTFT. Каждый прогон пишет итоговый JSON с агрегатами, CSV с TTFT на каждый запрос и снэпшоты GPU-метрик каждую секунду.
Два режима, между которыми всё решается
Прежде чем смотреть на числа — нужно понять структуру. На 4× GPU модели запускаются двумя принципиально разными способами, и выбор между ними определяет всё.
replicated×4 — модель целиком помещается в одну карту, поднимаем 4 независимых инстанса, по одному на GPU. Между картами — никакой коммуникации вообще. Каждый инстанс работает изолированно, запросы распределяются между ними как обычная очередь.
TP=4 (tensor parallelism) — модель не влезает в одну карту, приходится шардировать веса по всем четырём GPU. На каждом слое трансформера нужен all-reduce: промежуточные активации собираются со всех карт и суммируются. Это дорогая операция, и она повторяется на каждом слое.
Главная особенность нашего железа: у RTX 4090 нет NVLink (ну официально) — только PCIe 4.0. All-reduce через PCIe на 4 карты заметно медленнее, чем через NVLink. К этому добавился сюрприз с конфигурацией RunPod-пода: оказался dual-socket, GPU 0+1 на одной NUMA-ноде, GPU 2+3 на другой, межсокетная связь через QPI — ещё один барьер для all-reduce.
Итог, который мы честно не ожидали увидеть настолько резко: если модель влезает в одну карту — replicated×4 выигрывает в разы, а не на проценты. Если нет — TP=4 единственный вариант, и там уже считаем латентность и throughput на уровне одного запроса.
Результаты
Модель | Режим | Параметров | Квант | Peak t/s | TTFT (c=1) |
|---|---|---|---|---|---|
Llama 3.1 8B | replicated×4 | 8B dense | FP8 | 18 564 | — |
gpt-oss-20b | replicated×4 | 21B / 3.6B act. | MXFP4 | 11 337 | — |
gpt-oss-20b | TP=4 | 21B / 3.6B act. | MXFP4 | 1 184 | — |
gpt-oss-120b | TP=4 | 117B / 5.1B act. | MXFP4 | 1 180 | 46 ms |
Qwen3.6 35B-A3B | TP=4 | 35B / 3B act. | FP8 | 966 | 117 ms |
Llama 3.3 70B | TP=4 | 70B dense | FP8 | 749 | 86 ms |
Qwen3.5 122B-A10B | TP=4 | 122B / 10B act. | AWQ | 440 | 110 ms |
Gemma 4 31B | TP=4 | 31B dense | FP8 | 1 595 | 57 ms |
Gemma 4 E4B | replicated×4 | 4.5B / edge | BF16 | 21 429 | 32 ms |
Peak — максимальный aggregate output t/s при оптимальном concurrency (c=128 per replica).

Таблицу с полными результатами можете скачать у меня в ТГ. канале - по-другому тут статья превратится в полотно :)
Что за числа
18 564 t/s на Llama 3.1 8B — 4 параллельных инстанса, каждый сам по себе выдаёт 4 600+ t/s. Для 8B-модели это, по нашим ощущениям, близко к практическому потолку 4× GPU без NVLink.
11 337 t/s на gpt-oss-20b replicated×4 против 1 184 t/s на TP=4 — разница 9.6×. Одна и та же модель, один сервер, разная архитектура запуска. Вот он, эффект PCIe-трапа в цифрах. С NVLink этого разрыва попросту не было бы — all-reduce через PCIe на dual-socket-поде обходится очень дорого.

1 180 t/s на gpt-oss-120b — 117-миллиардная модель на 4 потребительских видеокартах, больше тысячи токенов в секунду. Помогает MoE-архитектура: при 117B суммарных параметров активных при инференсе всего 5.1B. Занимает ~80 ГБ VRAM (4× ~20 ГБ), влезает впритык при 90% утилизации. TTFT 46 мс на одиночном запросе — честно говоря, это удивило: ожидали вдвое хуже.
440 t/s на Qwen3.5 122B-A10B — тоже MoE, 122B суммарно / 10B активных, AWQ-квантизация, съедает всю доступную память (4× 22 ГБ). Комфортный рабочий диапазон — c=16 (216 t/s, TTFT 274 мс). При c=64+ throughput растёт, но TTFT улетает в секунды — для latency-sensitive потоков не вариант.
21 429 t/s на Gemma 4 E4B — абсолютный рекорд нашего сетапа. E4B — edge-версия Gemma 4: всего 4.5B активных параметров, на одну карту помещается целиком, значит 4 реплики. TTFT 32 мс — самый быстрый отклик из всего протестированного. Для однопользовательских сценариев — идеал. Для высоконагруженного продакшена качество 4.5B будет компромиссом — это нужно принять до деплоя.
Для нашего кейса (поток звонков, транскрипция + аналитика + оценка) рабочие лошадки — модели в диапазоне 20–35B в replicated-режиме. Конкретную продакшен-конфигурацию не раскрываю — она специфична под клиента и его инфраструктуру.
Что не влезло и почему
Протестировали не всё, что хотелось. Два случая стоит разобрать подробнее — не ради жалоб, а чтобы понимать границы сетапа.
Nemotron-Super-120B NVFP4 — NVIDIA выпустила эти модели в формате NVFP4: специальный 4-битный формат с аппаратным ускорением через Tensor Core FP4. Проблема: FP4 Tensor Core появились только в архитектуре Blackwell (RTX 50xx). У RTX 4090 compute capability 8.9 — FP4 нативно не поддерживается.
vLLM 0.19.0 честно попытался: обнаружил отсутствие нативного FP4, откатился на Marlin-ядро как фолбек. Но споткнулся на том, что NemotronH использует матрицы с size_n = 672, не кратным tile-размеру Marlin (64). Итог — RuntimeError: size_n = 672 is not divisible by tile_n_size = 64.
Nemotron-Omni-30B NVFP4 — не дошла даже до загрузки весов. Вариант архитектуры NemotronH_Nano_Omni_Reasoning_V3 просто не зарегистрирован в vLLM 0.19.0. Нет записи в реестре поддерживаемых архитектур — сразу ValidationError.
Обе модели требуют либо Blackwell-GPU, либо обновлённого vLLM с поддержкой этих архитектур. На момент тестирования (май 2026) — не запускается без "ковыряний" и подборов версий библиотек , а мне было лень :) .
DeepSeek-V4-Flash (284B MoE) — модель с 13B активных параметров, но 284B суммарно. Всё нужно держать в VRAM для маршрутизации. Даже в W4A16 от Intel — 153 GB. Наш сетап — 96 GB. Не влезает ни в каком адекватном квантовании.
Что я бы изменил, если бы собирал сейчас
№1. Сначала — runpod, потом железо
Главный совет тем, кто только планирует похожую сборку: протестируйте видеокарты на runpod (или аналоге) до заказа железа. Снимите токены/сек на ваших моделях, оцените реальную нагрузку, посмотрите на потребление памяти.
Если бы я делал заново — возможно, остановился бы на других видеокартах: дешевле, доступнее, с другим балансом цена/мощность. Но без замеров это всё догадки. Аренда GPU на пару часов даёт уверенность, которой у нас тогда не было.
№2. Power Limit
На прод-серверах ограничивайте мощность карт на 10–20%. Меньше потребление, меньше нагрев, дольше ресурс. В производительности теряется буквально 5–10% — на проде почти не заметно.
№3. Водянка стоит своих денег
Без водянки 4090 крутится в районе 75°. С водянкой — заметно ниже. Если сервер уходит в режим 24/7 — водянка окупается ресурсом карт.
Резюме
Сборка на 4× RTX 4090 с водяным охлаждением, двумя БП, двумя радиаторами и двумя помпами
Спроектирована под 24/7 в продакшене с минимальной деградацией карт
Под текущие реалии — заменил бы 4090 на 5090 (тот же ценник, лучше наличие)
Главный совет до сборки — арендовать GPU на runpod и снять реальные токены/сек
Если нужна помощь со сборкой локального AI-сервера или подбором железа под ваш кейс — пишите. Можем взять на себя подбор оборудования, сборку и развёртывание под локальный ИИ — под ключ.
📧 info@bvmax.ru — по проектам и консультациям ТГ-канал: @notes_from_cto
Буду рад за лайк и подписку на канал :) https://t.me/notes_from_cto
Сайт компании BVM: https://bvmax.ru
Полную комплектацию (модели карт, БП, водоблоков, артикулы) пришлю в личку — спрашивайте.
