Механизм внимания долгое время оставался узким местом современных языковых моделей. Чем длиннее контекст, тем тяжелее становится вычисление матриц внимания: расход памяти растёт квадратично, а скорость обработки падает. Именно поэтому появление Flash Attention стало одним из самых обсуждаемых событий в области оптимизации трансформеров за последние годы. Flash Attention — это алгоритм точного вычисления механизма внимания, разработанный исследователями из Стэнфорда под руководством Три Дао. Его идея заключается не в аппроксимации, а в более грамотной работе с иерархией памяти графического процессора. Классическая реализация внимания постоянно перегоняет огромные промежуточные матрицы между быстрой памятью SRAM и медленной HBM, что и создаёт основной тормоз. Flash Attention объединяет операции в один CUDA-ядро, обрабатывает данные блоками и минимизирует количество обращений к глобальной памяти. Результаты оказались впечатляющими. На задачах с длинным контекстом ускорение достигает двух-четырёх раз по сравнению со стандартной реализацией, а потребление памяти снижается линейно относительно длины последовательности. При этом результат остаётся математически идентичным обычному вниманию, что отличает подход от методов вроде Linformer или Performer, где точность приносится в жертву производительности. Развитие технологии не остановилось на первой версии. Flash Attention 2, представленный в 2023 году, заметно улучшил параллелизацию по головам внимания и распределение работы между потоками графического процессора, что позволило приблизиться к теоретическому пределу пропускной способности видеокарт NVIDIA. Третья версия, ориентированная на архитектуру Hopper и тензорные ядра H100, использует асинхронные операции и поддержку формата FP8, что открывает дорогу к ещё более крупным моделям. Сегодня Flash Attention интегрирован практически во все ключевые фреймворки. Его поддерживают PyTorch через функцию scaled_dot_product_attention, библиотеки Hugging Face Transformers, vLLM, а также крупные проекты для обучения и инференса языковых моделей. Многие современные модели, включая Llama, Mistral и ряд закрытых решений, полагаются именно на этот механизм для обработки длинных контекстов окнами в десятки и сотни тысяч токенов. Вместе с тем алгоритм имеет ограничения. Он требует определённых архитектур графических процессоров, а на устаревшем железе вроде Volta или ранних потребительских картах работает либо неоптимально, либо вовсе недоступен. Реализация под AMD и другие альтернативные ускорители развивается, но пока отстаёт от версии для NVIDIA. Кроме того, специфические маски внимания и нестандартные модификации требуют отдельной поддержки в коде.