Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Длинный контекст у готовых LLM удалось обрабатывать быстрее без дополнительного обучения и удаления частей KV-кэша. В нерецензированном препринте Amazon AGI, где все числа получили сами авторы, CommunityKV повысил скорость генерации до 71% относительно плотного внимания при сопоставимой точности. Метод подходит для инфраструктуры, где узким местом стала передача KV-кэша между памятью GPU и вычислительными блоками.
Граф токенов заменяет повторную кластеризацию
При обычном внимании каждый новый токен обращается ко всему предыдущему контексту. Чем длиннее запрос, тем больше ключей и значений приходится хранить и читать из KV-кэша — хранилища промежуточных состояний внимания. Разреженное внимание сокращает эту работу, если умеет заранее выбрать релевантную часть контекста.
CommunityKV строит граф во время первичного прохода по входному контексту. Узлами служат токены, а рёбрами — сильные связи из матрицы оценок внимания QKᵀ, которую модель и так вычисляет. Дополнительная модель для поиска и отдельные векторные представления не нужны.
Граф соединяет токены двумя способами. Первый отражает прямую связь: запрос уделил ключу много внимания. Второй связывает ключи, на которые часто смотрят вместе. Начальные токены, которые стабильно притягивают внимание независимо от смысла, в граф не включают и всегда добавляют к выбранному контексту отдельно.
Алгоритм Leiden делит граф на связные смысловые сообщества. Для каждого сообщества рассчитывается центр, а при генерации очередной запрос сначала сравнивают только с этими центрами. Затем модель загружает выбранные сообщества из KV-кэша и вычисляет точное внимание уже внутри сокращённого набора токенов.
KV-кэш при этом остаётся полным. Это отличает CommunityKV от методов, которые навсегда удаляют токены ради экономии памяти: если релевантность фрагмента изменится, его можно снова выбрать на следующем шаге.
Новые токены не запускают разделение всего графа заново. Метод проверяет соседние сообщества, присоединяет токен к подходящему и обновляет один центр. Стоимость такого обновления зависит от размерности модели, но не от длины уже накопленного контекста.
Ускорение зависит от того, сколько графов хранит модель
Самый быстрый вариант строит один граф для группы голов внимания, которые используют общие ключи и значения. Дополнительный пик памяти в этом режиме не превысил 8,5%, а точность осталась близка к варианту с отдельным графом для каждой головы. Последний ускорял генерацию максимум на 25%, но требовал больше служебной памяти.
На LongBench v2 с Qwen3-8B CommunityKV набрал 31,1% при небольшом активном бюджете токенов. GraphKV, который удаляет признанные ненужными состояния, набрал 22,5%, хотя получил в восемь раз больший бюджет. Этот разрыв показывает практический смысл динамического поиска: важный фрагмент лучше временно не загружать, чем исключать без возможности вернуть.
Преимущество не возникает бесплатно. Граф нужно построить, разделить и хранить рядом с KV-кэшем. Авторы скрывают большую часть подготовки за обычным первичным проходом и обрабатывают слои параллельно, но метод всё равно усложняет ядра внимания и управление памятью по сравнению с FlashAttention-2.
Когда CommunityKV стоит включить в план инфраструктуры
Работа меняет планы команд, которые обслуживают готовые модели с длинным контекстом и не могут включить разреженность в обучение. CommunityKV не требует менять веса, поэтому его можно рассматривать как оптимизацию слоя вывода наряду с разбиением KV-кэша и специализированными ядрами внимания.
Метод нацелен прежде всего на пропускную способность — число токенов, которые система генерирует за секунду. Он сохраняет полный KV-кэш и потому не решает задачу жёсткого сокращения памяти. Если GPU не вмещает контекст вообще, нужны удаление, сжатие или перенос состояний; CommunityKV помогает, когда память доступна, но чтение всего кэша тормозит каждый шаг.
Проверка охватывает семейства Qwen3 и Llama-3.1, а также LongBench v2, BABILong и RULER. Контекст доходил до 128 тысяч токенов, но модель генерировала не более 128 новых токенов за запуск. Эти условия хорошо отражают ответы по крупным документам и репозиториям, но слабее подтверждают устойчивость в многочасовых агентных процессах.
При длинной непрерывной генерации локальные назначения постепенно уводят граф от оптимального разбиения. Периодический повторный запуск Leiden исправляет структуру, но добавляет задержку. Для внедрения поэтому понадобятся не только замеры точности, но и профиль всей системы: первичный проход, построение графа, поиск сообществ, разреженное внимание и обновление во время генерации.
Наиболее практичная отправная точка — общий граф для группы голов. Он дал лучший баланс скорости и служебной памяти, тогда как объединение целого слоя в один граф заметно ухудшило точность. Если собственная нагрузка состоит из длинного входа и короткого ответа, прототип CommunityKV уже выглядит оправданным; для длинных автономных запусков сначала потребуется проверить дрейф сообществ и цену повторного разбиения.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



