
vLLM и PagedAttention: виртуальная память для инференса
Как идея из операционных систем 1960-х дала 2-4× пропускной способности
Содержание слайдов
1. vLLM и PagedAttention: виртуальная память для инференса
Как идея из операционных систем 1960-х дала 2-4× пропускной способности
2. Одна старая идея, одно узкое место
Проблема → идея → система → результат
3. Генерация ждёт память, а не вычисления
Prefill параллелен, декодирование идёт по одному токену за шаг
4. Куда уходят 40 гигабайт
65 % — веса модели, больше 30 % — KV-кеш, остальное — активации
5. Один токен стоит 800 килобайт
2 × 5 120 × 40 × 2 байта; запрос на 2 048 токенов — 1,6 GB
6. Три вида потерь непрерывного кеша
Резерв, внутренняя фрагментация, внешняя фрагментация
7. Полезной памяти — от 20 до 38 %
vLLM доводит долю настоящих состояний токенов до 96,3 %
8. Страницы, байты, процессы — блоки, токены, запросы
Словарь ОС, перенесённый на KV-кеш один к одному
9. PagedAttention: внимание по блокам
Ядро достаёт ключи и значения из несмежных блоков по их адресам
10. Таблица блоков: логический → физический
Запрос видит блоки 0-3 подряд; в памяти это 7, 1, 3 и ничего
11. Новый блок — когда предыдущий заполнен
Prefill, первый шаг в свободный слот, второй шаг — новый физический блок
12. Один пул вместо личных резервов
Свободный блок достаётся тому, кому он нужен следующим
13. Параллельные семплы: копирование при записи
Один промпт в памяти на несколько ответов; копируется только последний блок
14. Beam search: дерево блоков вместо копий
Кандидаты делят префикс как процессы после fork; системный промпт — как разделяемая библиотека
15. Планировщик: вытеснение всё-или-ничего
FCFS, вытесняется самый новый запрос, восстановление — swap или пересчёт
16. Один планировщик, много воркеров
Таблицы блоков живут в планировщике; GPU-воркеры получают их с каждым шагом
17. 2-4× пропускной способности без потери задержки
В батче 30 запросов вместо 7-14; выигрыш растёт с длиной и размером модели
18. Разделение памяти: от 6 до 66 %
Параллельный семплинг, beam search и общий префикс в цифрах
19. Цена абстракции: ядро медленнее на 20-26 %
Косвенность стоит четверть одного оператора; размер блока 16 — компромисс
20. Что унести из статьи
Найти узкое место, заимствовать при совпадении свойств, платить за косвенность осознанно