Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Собираем GPU-сервер для инференса: RTX 4090 vs A4000

Я занимаюсь инференсом языковых моделей и Stable Diffusion. Долго гнала всё в облаке — RunPod, Lambda Labs, иногда AWS. В определённый момент посчитала цифры и поняла: собственный сервер окупается примерно за восемь месяцев при моей нагрузке. Собрала сборку, делюсь опытом.

Облако vs железо: когда выгодно своё

Облако выгодно когда нагрузка непостоянная. Если GPU нужен несколько часов в день — платите только за эти часы. Но если машина работает 10−12 часов в сутки, аренда A100 на RunPod (~$2/час) за месяц выходит в $600−900. За год — больше $7000. На эти деньги можно купить очень приличное железо.

Плюс своего железа — нет сетевых задержек при загрузке моделей, полный контроль над окружением, можно держать несколько моделей в памяти одновременно.

RTX 4090 vs A4000: разбираемся

Оба варианта я рассматривала серьёзно. Вот ключевые параметры:

Параметр RTX 4090 A4000
VRAM 24 GB GDDR6X 16 GB GDDR6
TDP 450W 140W
Интерфейс PCIe 4.0×16 PCIe 4.0×16
NVLink Нет Есть
ECC память Нет Есть
Цена (новая) ~120k руб ~90k руб

VRAM — главный bottleneck. Для инференса размер модели в памяти важнее скорости вычислений. Llama 3 70B в 4-bit квантизации занимает около 40 GB. Это вообще не влезет ни в одну карту — нужен multi-GPU.

Для моделей до 13B (в 4-bit — около 7−8 GB) A4000 справляется. Для 30B+ — уже нужна 4090 или несколько A4000 через NVLink.

Я выбрала RTX 4090: больше VRAM, быстрее для Stable Diffusion (больше CUDA cores), и на практике ECC-память для инференса некритична — это важно для научных вычислений где нужна точность до последнего бита.

Комплектующие

CPU:  Intel Core i9-13900K (много PCIe lanes для нескольких GPU в будущем)
MB:   ASUS Pro WS W790E-SAGE SE (серверная, поддержка нескольких x16 слотов)
RAM:  128 GB DDR5 ECC (4×32 GB)
GPU:  NVIDIA RTX 4090 24 GB
PSU:  Seasonic PRIME TX-1600W (с запасом на вторую карту)
NVMe: 2× Samsung 990 Pro 2 TB (RAID 0 для быстрой загрузки моделей)
Case: Fractal Design Define 7 XL

Блок питания. RTX 4090 имеет TDP 450W, но в пике может потреблять больше. С CPU, памятью и дисками система в нагрузке тянет около 700−750W. 1600W — это задел на вторую карту в будущем. Не экономьте на БП для GPU-сборок.

Охлаждение. 4090 греется серьёзно. В корпусе без нормального потока воздуха температуры под нагрузкой могут достигать 85−90°C. Я поставила 6 корпусных вентиляторов 140mm (3 на вдув, 3 на выдув) и держу 75−78°C при полной нагрузке.

Установка окружения

# Ubuntu 22.04 LTS

# Драйверы NVIDIA
sudo apt install nvidia-driver-545

# CUDA Toolkit
wget https://developer.download.nvidia.com/compute/cuda/12.3.0/local_installers/cuda_12.3.0_545.23.08_linux.run
sudo sh cuda_12.3.0_545.23.08_linux.run

# Проверка
nvidia-smi

# nvidia-docker (Container Toolkit)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker

Проверяем что GPU доступен в контейнере:

docker run --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi

Бенчмарки

Тестировала на Llama 3 8B (4-bit, llama.cpp) и Stable Diffusion XL (ComfyUI).

Llama 3 8B inference (tokens/sec):

  • RTX 4090: ~110 tok/s
  • A4000 (для сравнения, данные с форума): ~65 tok/s

Stable Diffusion XL (1024×1024, 20 steps):

  • RTX 4090: ~8 секунд
  • A4000: ~18 секунд

Разница существенная. Для интерактивного использования 4090 ощутимо быстрее.

NVMe важен для загрузки моделей. Llama 3 70B в 4-bit весит ~40 GB. С обычного SATA SSD загрузка занимает около 3 минут. С NVMe — 40−50 секунд. Если часто переключаетесь между моделями — быстрый NVMe обязателен.

Финансовый расчёт

Сборка (без GPU):  ~80 000 руб
RTX 4090:          ~120 000 руб
Итого:             ~200 000 руб

RunPod A4000 ($0.76/час, 10 часов/день):
  В месяц:  ~7 000 руб
  В год:    ~84 000 руб

Окупаемость: ~2.4 года

RunPod RTX 4090 ($1.14/час):
  В месяц:  ~10 400 руб
  В год:    ~125 000 руб

Окупаемость при нагрузке 10ч/день: ~1.6 года

При реальной нагрузке 8−10 часов в сутки сервер окупился бы примерно за полтора года. Плюс я получаю латентность загрузки и полный контроль над моделями.

4 Ответа

  1. Интересный расчёт, но если нужны большие модели типа 70B то A100 всё равно выигрывает, 80 гигабайт памяти это совсем другой разговор. Правда и цена другая, около 300к рублей б/у.

  1. По охлаждению — если ставить в стойку в датацентре то 4090 это реально головная боль, карта очень широкая и горячая. Серверные варианты типа A6000 в 2U корпус влезают куда лучше.

  1. Про NVMe хорошо написано. Мы добавили отдельный NVMe специально под хранение весов моделей и скорость загрузки между экспериментами сократилась в разы.

  1. Если планируешь несколько GPU — смотри в сторону Proxmox с passthrough. Можно разделить карты между виртуалками и запускать разные окружения изолированно, очень удобно для экспериментов.