Предыстория

Год назад к нам пришёл заказ: собрать локальный сервер под задачи аналитики звонков для крупной компании в России. Поток — 10 000+ звонков в месяц. По требованию службы безопасности — всё в их контуре, on-premise. Никаких облачных API.

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

Обсуждение и проектирование тянулись около полугода — спорили о компонентах, искали в наличии, пересобирали конфигурацию на бумаге. А потом, как водится, всё собрали за пару недель в ускоренном режиме в самом конце. Честно: на тот момент мы не были экспертами в железе. Был запал, был запрос — этого хватило, чтобы взяться и сделать качественно.

В этой статье — что собрали, почему именно так, и какие ловушки прошли. Полную комплектацию (модели, ссылки, артикулы) приложу в конце — пишите в личку или в ТГ-канал.

Финальная сборка — то, что получилось в итоге
Финальная сборка — то, что получилось в итоге

Откуда взялась конфигурация

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

Тот самый референс с Reddit — сборка автора r/LocalLLaMA
Тот самый референс с Reddit — сборка автора r/LocalLLaMA

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

Переписка с автором референсной сборки на Reddit
Переписка с автором референсной сборки на Reddit

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

«Are u operating an indian call center man»
«Are u operating an indian call center man»

Я заскринил и поржал. Дальше мы продолжили вполне по делу. Чувак оказался топ-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 с минимальной деградацией. Поэтому водоблоки на каждую карту, два радиатора, две помпы.

Так выглядит RTX 4090 после снятия родного радиатора и установки прозрачного водоблока
Так выглядит RTX 4090 после снятия родного радиатора и установки прозрачного водоблока

Полная спецификация

Компонент

Модель / Параметры

Материнская плата

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% запас)


Сборка: компоненты и сложности

Что искалось легко

  • Корпус — нашли быстро, в наличии

  • Материнская плата — тоже без проблем

Корпус с материнкой ASUS Pro WS WRX80E-SAGE и фронтальными вентиляторами Arctic — стартовая стадия сборки
Корпус с материнкой ASUS Pro WS WRX80E-SAGE и фронтальными вентиляторами Arctic — стартовая стадия сборки

Что искалось тяжело

Все остальное :)

Блоки питания — 2 шт.

Сервер запускается с двух БП. Решение приняли ещё на этапе проектирования: разнести нагрузку, не вешать всё на один блок. Заказчик отдельно попросил сделать так же.

Найти два качественных БП в наличии — отдельный квест. Помню, тогда это было реально больно.

Водоблоки на 4090

Карты разбираются — родные радиаторы снимаются, ставятся водоблоки.

Интересный момент: водоблоки именно под GPU 4090 в России и в Европе в наличии не нашли. Реально продаются они только на AliExpress. Пробовали Яндекс.Маркет — заказ отменили через полторы недели. С Ali пришли быстро, качество отличное.

Конкретно — брали Bykski N-AS4090TUFOG-X под наши карты ASUS TUF GAMING / ROG STRIX LC RTX 4090. Медный, с прозрачной верхней крышкой и подсветкой A-RGB. На момент закупки выходил около 10 700 ₽ за штуку.

Карточка водоблока Bykski N-AS4090TUFOG-X на AliExpress — медь, A-RGB, под ASUS TUF / ROG Strix LC 4090
Карточка водоблока Bykski N-AS4090TUFOG-X на AliExpress — медь, A-RGB, под ASUS TUF / ROG Strix LC 4090

Сам контур (помпы, радиаторы, фитинги, шланг, водоблок 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

Видеокарта 4090 с прозрачным водоблоком из AliExpress — рядом крепёжные детали в пакетах
Видеокарта 4090 с прозрачным водоблоком из AliExpress — рядом крепёжные детали в пакетах

Внутренний водяной контур

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

Промежуточная стадия: материнка, водоблок CPU, помпы и резервуары установлены — карт ещё нет
Промежуточная стадия: материнка, водоблок CPU, помпы и резервуары установлены — карт ещё нет

Охлаждение и теплоотвод

Компонент

Количество

Радиаторы

2 (один внешний, один внутри корпуса)

Вентиляторы на внешнем радиаторе

9

Помпы

2 (одна на CPU, одна на видеокарты)

Внешний 9-вентиляторный радиатор отдельно — 3×3 матрица Arctic-вентиляторов
Внешний 9-вентиляторный радиатор отдельно — 3×3 матрица Arctic-вентиляторов
Радиатор установлен на корпус, помпа с резервуаром на верхней крышке — карты ещё не стоят
Радиатор установлен на корпус, помпа с резервуаром на верхней крышке — карты ещё не стоят
Зелёные стрелки — как трубки от внутреннего контура заводятся на внешний радиатор сверху
Зелёные стрелки — как трубки от внутреннего контура заводятся на внешний радиатор сверху
Вблизи: точки крепления и вывод трубок между корпусом и внешним радиатором
Вблизи: точки крепления и вывод трубок между корпусом и внешним радиатором

Внешний радиатор стоит снаружи корпуса — поставить второй внутрь красиво не вышло. Не самое эстетичное решение, но это и плюс к ощущению ручной сборки. Не 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% — стопроцентный шатдаун по защите. С двумя — обоим есть запас под пики и просадки от сети.


Финальный вид

Когда смотрю на эти фотографии — до сих пор поражаюсь, как это всё собрали. Громко звучит, но это близко к произведению искусства: как минимум красиво и сделано на совесть. На основную сборку у нас ушло около двух недель.

Готовый сервер: верхний радиатор, синяя подсветка карт через стекло, рядом коробка GeForce RTX 4090
Готовый сервер: верхний радиатор, синяя подсветка карт через стекло, рядом коробка GeForce RTX 4090
Видеокарты с водоблоками крупным планом — три карты подряд, фитинги, надпись FUSION на БП
Видеокарты с водоблоками крупным планом — три карты подряд, фитинги, надпись FUSION на БП
Задняя сторона работающего сервера: подсветка резервуаров, кабельный менеджмент, БП XPG, корпус Phanteks
Задняя сторона работающего сервера: подсветка резервуаров, кабельный менеджмент, БП XPG, корпус Phanteks
Атмосферный кадр в темноте — синяя подсветка пробивается через стекло корпуса
Атмосферный кадр в темноте — синяя подсветка пробивается через стекло корпуса

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

Сервер в работе — синяя подсветка карт, помпы крутятся
Сервер в работе — синяя подсветка карт, помпы крутятся

Тесты производительности

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

Как мерили

Стенд — 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).

Peak Aggregate Throughput — все протестированные модели, sorted by peak t/s
Peak Aggregate Throughput — все протестированные модели, sorted by peak t/s

Таблицу с полными результатами можете скачать у меня в ТГ. канале - по-другому тут статья превратится в полотно :)

Что за числа

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-поде обходится очень дорого.

Throughput scaling: replicated×4 vs TP=4 на gpt-oss-20b — одна и та же модель, разница 9.6×
Throughput scaling: replicated×4 vs TP=4 на gpt-oss-20b — одна и та же модель, разница 9.6×

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

Полную комплектацию (модели карт, БП, водоблоков, артикулы) пришлю в личку — спрашивайте.