Свежая выжимка ml и AI статей - каждый день
Современные крупные языковые модели (LLM) способны обрабатывать контексты до миллионов токенов, открывая возможности для анализа кода на уровне репозитория, суммаризации нескольких документов и поиска по большим корпусам данных. Однако обработка таких длинных последовательностей требует значительных вычислительных и памяти ресурсов из-за квадратичной сложности механизма само-внимания. В этой статье мы рассмотрим новый подход к решению этой проблемы, названный Star Attention (Звёздное внимание), который предлагает значительные улучшения в эффективности вывода LLM при обработке длинных последовательностей.
LLM, такие как Gemini, Anthropic и Meta AI, могут поддерживать контексты длиной до миллионов токенов, что позволяет решать задачи, требующие анализа больших объемов текста. Однако, основное препятствие в этом процессе — это квадратичная сложность само-внимания, которая делает обработку таких контекстов дорогой и медленной. Различные методы были предложены для снижения потребления памяти и ускорения вывода, такие как FlashAttention и RingAttention, но они имеют свои ограничения.
Star Attention — это новый алгоритм, который использует двухфазный подход для эффективного вывода LLM на длинных последовательностях. Этот метод основан на наблюдении, что при выводе LLM обычно имеются две стадии: кодирование подсказки и генерация токенов. В контексте длинных задач, входные данные часто включают длинный контекст, за которым следует короткий запрос и короткий ответ. Информация, необходимая для ответа на запрос, часто локализована в небольших частях контекста, что позволяет использовать локальное внимание для контекста и глобальное внимание для запроса.
В первой фазе контекст делится на континуальные блоки и распределяется по "контекстным" хостам. Каждый хост также получает копию первого блока, называемого "якорным блоком". Хосты вычисляют само-внимание только для своих назначенных блоков, без обмена данными друг с другом, что снижает сложность внимания с квадратичной до линейной относительно длины контекста.
**Контекст:** [c1, c2, ..., cn]
**Якорный блок:** c1
**Распределение:** [c1, (c1, c2), (c1, c3), ..., (c1, cn)]
Во второй фазе запрос реплицируется на все хосты, где он сначала обрабатывается с использованием локального кэша ключ-значение (KV) каждого хоста. Затем глобальное внимание вычисляется путем агрегации результатов на обозначенном "запросном" хосте, который эффективно обменивается одним вектором и скаляром на каждый токен от каждого контекстного хоста. Только запросный хост обновляет свой KV-кэш на этом этапе.
**Запрос:** q
**Агрегация:** Query host aggregates results from all hosts.
Star Attention был оценен на нескольких моделях Llama, с длинами последовательностей от 16K до 1M токенов, на бенчмарках RULER и BABILong. Сравнение с Ring Attention показало, что Star Attention достигает значительного ускорения вывода (до 11 раз) при сохранении 95-100% точности.
Для более крупных моделей, таких как Llama-3.1-70B-Instruct, ускорение было еще более выраженным:
Star Attention представляет собой значительный шаг вперед в области эффективного вывода LLM на длинных последовательностях. Этот метод позволяет масштабировать длину контекста линейно с увеличением числа хостов, сохраняя при этом высокую точность и значительно снижая затраты на память и время вывода. Он совместим с большинством трансформеров, обученных с глобальным вниманием, и может быть дополнительно оптимизирован с другими методами, такими как FlashAttention или сжатие KV-кэша.
Будущие исследования могут быть направлены на дальнейшее улучшение механизма якорных блоков и повышение производительности на более сложных задачах с длинным контекстом, чтобы сделать Star Attention еще более масштабируемым и устойчивым.