Как работает кэш токенов?
В процессе написания статьи про HeadroomProxy чуть глубже погрузился в то как работает кэш в LLM.
Посмотрел вот такое неплохое короткое видео.
Но если коротко разбирать, то суть в том, что каждый раз когда LLM обсчитывает новый ответ, ей нужно понять, как каждое слово в вашем предложении связано с другими словами. Этот механизм называется Self Attention.
К примеру “Мама мыла раму”
1) Когда нейронка генерит слово Мама, то она создает карту как мама связана с остальными словами. На первом этапе связывать не с чем
2) Когда нейронка добавляет слово “мыла” то она снова стороит таблицу того, как слово мыла связана со словом Мама и заносит эту таблицу связей в кэш.
3) Тут важный момент: таблица связей односторонняя. ТО есть слово Мама не будет при этом выстраивать связь со словом мыла. То есть этот механизм рабоатет только для прошлых токенов.
4) Такой тип механизма self-attention называется masked attention. И как раз удобен тем, что его результаты удобно кэшировать.
5) Так вот когда вы начинаете генерировать слово раму, то вам уже не нужно вычислять таблицы связей для слов “Мама мыла” так как вы уже все это вычислили, вам нужно вычислить только одну таблицу.
Интересный факт: Есть и другие типы self-attention к примеру Full, который строит связи между всеми словами, но его к примеру невозможно кэшировать и приходится пересчитывать каждый раз с нуля.
Так что существующий механизм кэширования в LLM и снижение стоимости возможно благодаря Masked Self-Attention.
Post #26
103