Глоссарий
FlashAttention: внимание без квадратной матрицы в памяти
Коротко: FlashAttention это алгоритм вычисления attention, который не записывает матрицу сходств n на n в память. Последовательности разбиваются на блоки, softmax считается инкрементально с бегущим максимумом и суммой (online softmax), и результат пересчитывается с коррекцией при поступлении новых блоков. Ответ точно такой же, как у обычного attention, но пик памяти O(n) вместо O(n^2) и меньше чтений из HBM. На GPU это даёт кратные ускорения на длинных контекстах.
FlashAttention это перестановка порядка вычислений, которая убирает главный источник трафика в attention: запись и чтение промежуточной матрицы n на n.
Механика online softmax: для нового блока строк берётся максимум и сумма экспонент, предыдущий результат масштабируется отношением старого максимума к новому. Каждый блок обрабатывается один раз, память линейна по длине. FlashAttention-2 дополнительно перераспределил работу между потоками и убрал не-matmul операции, ещё почти удвоив скорость. В сервинге paged-вариант читает K и V сразу по страницам block table, минуя контiguous кэш.