Как правильно подобрать RAM и vCPU для локальной LLM: стартовая конфигурация VM
В статье разбираются расчёты памяти и процессорных ядер для self‑hosted моделей: от размеров весов до формулы KV‑кэша и реальных тестов нагрузки.
Самостоятельный хостинг больших языковых моделей (LLM) требует точного расчёта ресурсов, иначе система будет «тормозить» или даже падать. В статье на Habr AI автор предлагает практический метод определения стартовой конфигурации виртуальной машины (VM) на основе трех параметров: размера весов модели, профиля запросов (длина входа и ответа, количество одновременных запросов) и выбранной схемы offload.
1. Базовый расчёт памяти
- Размер весов – прямой показатель RAM. Например, модель 7 B имеет около 14 ГБ в FP16.
- KV‑кеш хранит скрытые состояния токенов. Формула:
KV = seq_len × hidden_dim × 2 bytes. При контексте 16 k токенов и hidden_dim = 4096 получаем ~128 МБ на запрос. - Конкурентность умножает KV‑кеш на количество одновременных запросов. Для 2 запросов: 256 МБ.
- Итого: 14 ГБ (весы) + 0.256 ГБ ≈ 14.3 ГБ → рекомендуется минимум 16 ГБ RAM.
2. Вычислительные ресурсы (vCPU)
- Производительность генерации токенов зависит от числа ядер и эффективности кода. Тесты показывают, что 8 vCPU дают ~0.5 мс на токен, а добавление ядер выше 12 даёт лишь 5‑10 % прироста.
- При высокой конкуренции (≥4 запросов) CPU становится узким местом, а RAM уже насыщается (~18 ГБ).
3. Практический тест Автор провёл прогревочный тест на 7 B модели с 16 GB RAM и 8 vCPU. При 2 одновременных запросах система стабильно генерировала 12 токенов/сек. При увеличении до 4 запросов RAM достиг 18 GB, а CPU уже не успевал, что привело к падению TPS до 7.
4. Рекомендации
- Для умеренной нагрузки (2‑3 параллельных запросов) – 16‑24 GB RAM, 8‑12 vCPU.
- Для более интенсивных сценариев – 32 GB RAM, 12‑16 vCPU, с возможным offload части KV‑кеша на GPU.
Ссылка на оригинальную статью: https://habr.com/ru/articles/1080970/
Для разработчиков и студентов, планирующих запускать LLM локально, расчёт RAM и vCPU по формуле KV‑кеша позволяет избежать «потери в пустую» ресурсов. Выбирая конфигурацию, ориентируйтесь на реальную нагрузку: слишком много ядер не ускорит генерацию, а недостаток памяти быстро приведёт к сбоям.


