HeadlinesBriefing favicon HeadlinesBriefing.com

Почему серверы инференса LLM исчерпывают VRAM

Towards Data Science •
×

Веса модели среднего размера помещаются комфортно, но одновременный трафик вызвал ошибки CUDA out-of-memory при низкой загрузке GPU. Кэш ключ-значение, а не размер модели, потребил доступное пространство. Перед добавлением GPU автор включил постраничное выделение и кэширование префиксов, увеличив предел и выявив проблему с layout памяти.

Наивные стеки обслуживания резервируют один непрерывный блок на запрос для максимальной длины последовательности. Запрос, генерирующий 200 токенов при резерве 4096 токенов, оставляет большую часть неиспользованной. Анализ v LLM показал, что наивное управление кэшем KV тратит от 60 до 80 процентов зарезервированной памяти. Кэш растет вместе с одновременными запросами, поэтому скачки трафика — а не более длинные промпты — толкают серверы за пределы памяти.

Память GPU делится между фиксированными весами модели, транзиторными активациями и переменным кэшем KV. Каждый токен стоит примерно 320 КБ для Llama 3.1 70B в BF16 при 80 слоях, 8 головах ключ/значение и размере головы 128. Группированное внимание по запросу уменьшает количество голов ключ/значение и размер кэша.

При 128 одновременных запросах с контекстом 4K токенов кэш сам по себе требует около 160 ГБ. Веса модели 70B требуют 140 ГБ в BF16, поэтому кэш может превысить модель. v LLM резервирует кэш как максимальное число одновременных последовательностей, умноженное на максимальную длину последовательности; увеличение любого из них умножает резерв и может вызвать OOM при запуске.

Ключевые сущности: Компании: NVIDIA, Towards Data Science