
Полез в исходники vLLM, чтобы понять, почему один символ убивает prompt caching
xonika9 только что Полез в исходники vLLM, чтобы понять, почему один символ убивает prompt caching Средний 11 мин 12 Искусственный интеллект Машинное обучение * Open source * Программирование * Высоконагруженные системы...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: xonika9 только что Полез в исходники vLLM, чтобы понять, почему один символ убивает prompt caching Средний 11 мин 12 Искусственный интеллект Машинное обучение * Open source * Программирование * Высоконагруженные системы * Обзор В первой части я вывел одно правило и предложил жить по нему: стабильное в начало, изменчивое в хвост, один символ в системном промпте обнуляет весь кэш. Правило рабочее, я сам собираю агента вокруг него. Но жить по закону, которого не понимаешь, неуютно.
vLLM и paged attention я руками не писал, зато исходники открыты, и я полез в них за байтовой причиной. Что физически лежит на GPU в момент попадания в кэш, как движок управляет этой памятью и почему хватает одного символа, чтобы всё посыпалось. Дальше веду репортаж из кроличьей норы.
Технические детали
Все имена и числа ниже сверены по исходникам vLLM 0. 0, так что код в статье настоящий. Что вообще кэшируетсяПрежде чем выдать первое слово ответа, модель читает весь промпт целиком.
У этого чтения есть имя, prefill, и это самая дорогая часть. Все входные токены прогоняются через слои разом, одним большим матричным проходом. Такой проход упирается в вычисления (compute-bound): он насыщает GPU перемножением матриц, и чем длиннее промпт, тем дольше длится.
Дальше начинается вторая фаза, decode. Модель генерирует ответ по одному токену за шаг, авторегрессивно, и тут узкое место другое. Каждый новый токен заставляет заново тащить из памяти весь накопленный кэш прошлых токенов, так что decode упирается в пропускную способность памяти (memory-bandwidth-bound), а не в арифметику.
Отраслевые последствия
Аналогия, которая мне помогла. Prefill это когда читаешь книгу и на каждой странице оставляешь пометки на полях. Decode это когда после прочтения пишешь конспект, и вместо перечитывания книги заново на каждом слове заглядываешь в свои пометки.
Кэшируются именно пометки. Если кто-то до тебя уже читал книгу и сделал пометки, перечитывать эти страницы не нужно — берёшь готовые и пишешь свой конспект. Теперь что это за пометки физически.
В причинном внимании каждый токен через слои считает три тензора: Query, Key и Value. Грубо говоря: Query это "о чём спрашивает текущий токен", Key и Value это "что могут предложить остальным прошлые токены". Чтобы обработать новый токен, модели нужны Key и Value всех токенов слева от него.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





