Внимание в LLM · часть 7

Sparse attention

Чтобы уйти от квадрата, необязательно сжимать сами токены. Можно сохранить их, но разрешить лишь небольшую часть связей. Sparse attention (разрежённое внимание) превращает полную матрицу в маршрутную сеть: дешевле, но теперь важно, куда по ней способна добраться информация.

Не все прошлые токены нужны напрямую

В causal attention запрос на позиции i может видеть весь префикс 1,,i. Локальное окно оставляет только последние w позиций. Если w фиксировано, число связей растёт как nw, а не как n2.

Для одного и того же запроса найдите самые дальние доступные позиции в каждом паттерне. Затем сравните число связей. Одинаковый бюджет чтения обязательно даёт одинаковый доступ к контексту?

Кто с кем обменивается информацией

nw
Паттерн связей
Локальное окно. Запрос видит себя и ближайшие позиции слева.
запрос 1q11 ключей: 1
запрос 3q33 ключей: 1, 2, 3
запрос 5q54 ключей: 2, 3, 4, 5
запрос 7q74 ключей: 4, 5, 6, 7
запрос 9q94 ключей: 6, 7, 8, 9
запрос 11q114 ключей: 8, 9, 10, 11
запрос 13q134 ключей: 10, 11, 12, 13
запрос 16q164 ключей: 13, 14, 15, 16
58 из 136 causal-связейСохранено 43% связей; структура задаётся правилом, а не ручной раскладкой
Четыре топологии разрежённых связейЧисло связей описывает стоимость одного слоя, а их расположение — то, какие позиции могут обменяться информацией напрямую.

Экономия появляется не из-за прозрачных клеток на картинке, а потому, что запрещённые оценки действительно не вычисляются. Структура должна быть известна заранее и поддерживаться реализацией.

full: Θ(n2),local window: Θ(nw)

При постоянной ширине окна w рост по длине контекста становится линейным.

Пример из LLMMistral 7BSliding window на 4096 позиций уменьшает стоимость длинного контекста.

Окно одного слоя — не предел модели

В первом слое токен получает сведения от ближайших соседей. Во втором — уже от соседей этих соседей. Поэтому receptive field (поле восприятия) расширяется с глубиной: локальные связи складываются в более длинный путь.

Начните с одного слоя локального окна и найдите недоступную дальнюю позицию. Увеличивайте глубину по одному слою до появления пути к ней. Затем смените топологию, сохранив глубину, и объясните разницу.

Как слои расширяют поле зрения

1 слой
Паттерн связей
Глубина сети
Локальное окно. Последний токен напрямую видит 4 позиций; после 1 слоя информация приходит из 4.
позиция 1x1недостижима
позиция 3x3недостижима
позиция 5x5недостижима
позиция 7x7недостижима
позиция 9x9недостижима
позиция 11x11недостижима
позиция 13x13прямая связь
позиция 16x16прямая связь
Достижимо 4 из 16 позицийУвеличьте глубину или смените топологию связей
Поле восприятия растёт с глубинойНесколько слоёв открывают дальние пути; использует ли их модель, зависит от весов.
Глубина в работеMistral 7BПоследовательные слои позволяют информации выйти далеко за пределы одного окна.

Добавить несколько коротких путей

Чистое окно хорошо передаёт локальный контекст, но далёкие токены встречаются лишь через много слоёв. Поэтому к окну добавляют редкие дальние рёбра.

Три способа добавить дальние маршруты в sparse attention
  1. Dilated attentionСвязи идут на расстояния 1, 2, 4, 8 и быстро покрывают длинный префикс. Далеко, но не ко всем позициям.
  2. Глобальные слои и токеныРедкие глобальные узлы или слои создают общие точки доступа. В causal-режиме используются только уже доступные позиции.
  3. Гибридный паттернЛокальное окно сохраняет детали, редкие мосты сокращают дальние маршруты. Связей мало, но граф остаётся связным.
Исследовательская архитектураLongNetDilated attention связывает контекст на степенно растущих расстояниях. Пример из LLMGemma 2Архитектура чередует локальные и глобальные слои внимания. Гибридный паттернGPT-3Плотные и locally banded слои объединяют дальний обзор с локальной экономией.

Редкая матрица ещё не гарантирует скорость

GPU эффективнее выполняет крупные регулярные операции, чем множество отдельных умножений в случайных местах. Поэтому практический sparse attention часто работает не с одиночными связями, а с целыми блоками.

Переход от нерегулярной разреженности к регулярным вычислительным блокам
  1. Нерегулярные связиМало арифметических операций, но множество мелких несмежных обращений к памяти.
  2. Block-sparseТе же смысловые ограничения собраны в регулярные плитки, удобные для параллельного вычислителя.
Пример из LLMKimi · MoBAКонтекст делится на блоки, а каждый запрос выбирает лишь несколько наиболее релевантных.