ИИ-сервер — это не только GPU. Если недооценить процессор и оперативную память, видеокарты простаивают, а задержки растут.
Зачем считать не только GPU?
- 🧠 CPU: токенизация, препроцессинг/постпроцессинг, сетевые запросы, планирование задач.
- 🧮 RAM: кэши данных и токенов, очереди батчей, буферы фреймворков, системный запас.
Быстрые правила (запомнить легко)
Инференс LLM
- 🔢 CPU: на каждый активный GPU — 8–12 ядер. Если высокий RPS и тяжёлый постпроцессинг, берите ближе к 12.
- 🧾 RAM: минимум в два раза больше суммарной видеопамяти всех GPU. Нижняя планка — 128 ГБ.
Обучение / дообучение
- 🔢 CPU: на каждый GPU — 12–24 ядра (много data-loader’ов).
- 🧾 RAM: от трёх до четырёх раз больше суммарной видеопамяти.
Всегда держите запас: плюс 20–30% к расчётам на пики и служебные буферы.
Как быстро прикинуть без формул
- Сложите видеопамять всех GPU в сервере.
- Для инференса умножьте эту сумму на два и при необходимости округлите вверх до ближайших 64 ГБ.
- Для обучения умножьте на три (а при активных аугментациях — на четыре).
- Добавьте ещё 20–30% запаса.
- По CPU ориентируйтесь: 8–12 ядер на GPU для инференса, 12–24 — для обучения. Если RPS высокий (200–600 на сервер), умножьте результат примерно на коэффициент 1,2–1,5.
Быстрые примеры
A. 2×GPU по 48 ГБ, чат-бот, окно 8k, до 300 RPS
- CPU: около 26 ядер → берём 32 ядра с запасом.
- RAM: 2×(48+48)=192 ГБ → берём 256 ГБ.
B. 4×GPU по 48 ГБ, длинные контексты 16–32k, ~400 RPS
- CPU: около 56 ядер → берём 64 ядра.
- RAM: 2×(48×4)=384 ГБ → берём 512 ГБ.
C. 8×GPU по 80–192 ГБ, LoRA/SFT + периодический инференс
- CPU: около 96 ядер.
- RAM: три раза больше суммарной видеопамяти — получаем счёт уже на терабайты.
Что сильнее всего влияет
- 📏 Контекстное окно: больше окно → больше KV-кэш → выше требования к RAM и CPU.
- 🧩 Форматы весов (FP16, BF16, INT8, FP8): уменьшают VRAM, но RAM всё равно нужна под кэши и очереди.
- 🌐 RPS и батчирование: большой батч повышает нагрузку на CPU и латентность.
- 💽 Диски и сеть: медленный I/O душит пайплайн — заранее прогружайте и кэшируйте данные.
- 🔀 NUMA: в двухсокетных системах закрепляйте процессы за «своими» сокетами и GPU.
Частые ошибки
- Слабый однопоток → тормозит декодинг токенов. Берите современные CPU с высокой частотой и большим L3.
- Недобор RAM → своп и скачки задержек. Держите запас 20–30%.
- Игнор NUMA → межузловые задержки. Пиннинг потоков и привязка GPU к «своему» сокету.
- Один NVMe «на всё» → узкое место I/O. Разводите датасеты, логи и чекпоинты по разным пулам.
- Нет мониторинга → сложно найти «бутылочное горлышко». Нужны метрики CPU/GPU/RAM/I/O.
Готовые ориентиры (инференс)
- 1×GPU 24–48 ГБ, до 200 RPS, 4–8k → 8–16 ядер, 128–256 ГБ RAM
- 2–4×GPU 48 ГБ, 200–600 RPS, 8–16k → 24–48 ядер, 256–512 ГБ RAM
- 8×GPU 80–192 ГБ HBM → 64–96 ядер, 512 ГБ–1.5 ТБ RAM
Чем поможем
Подберём CPU и RAM под вашу модель, окна и целевые RPS; соберём сервер или кластер, настроим NUMA, проверим на ваших данных.
Нужен расчёт под вашу задачу? Напишите — подготовим 2–3 варианта конфигурации с бюджетом, ожидаемой производительностью и планом масштабирования.