Кэширование промптов
Кэширование промптов (Prompt Caching) — популярная сейчас опция в LLM, которая позволяет значительно снизить затраты на исполнение запроса, если часть токенов уже ранее проходила через систему и таким образом была закэширована. Происходит автоматически и снижает стоимость на высоких нагрузках.
Описание[править]
Уже в 2023 году стало понятно, что если вгонять в модель длинные запросы, то происходит очень потужное и долгое вычисление, модель натурально сильно жужжит и не может выдать ответ. Первым крупным провайдером, внедрившим публичную поддержку prompt caching в API, стала печально известная компания Anthropic, которая несмотря на сомнительные практики сама по себе была довольно инновационной. OpenAI не отставала и вскоре анонсировала автоматическое кэширование для моделей GPT-4o и более новых.
Кэшированные токены в вводе стоят в 10 раз дешевле обычных, задержка на ответ сокращается до 80 %. Особенно это оказалось эффективным для агентов, которые последовательно производят запросы с весьма большими и толстыми контекстами.
Традиционно KV-кэш пересчитывается заново для каждого запроса, даже если префикс промпта полностью совпадает. Когда же подрублено кэширование, то KV-тензоры для префикса сохраняются в памяти и переиспользуются при совпадении. Производится поиск совпадения наиболее длинного префикса, и по нему выводится информация с кэша.
За счёт кэширование падает и показатель Time-to-First-Token, то есть генерация ответа стартует значительно быстрее.
При этом любое изменение в начале промпта, даже такое мелкое как добавление пробела, приводит к потере кэша. По этой причине в начале должен размещаться статический контент. Обычно хранится кэш на протяжении от нескольких минут до 24 часов, так как на хранение тоже тратится место.