Откройте для себя Flash Attention - быстрый, не требующий много памяти метод преобразования внимания, ускоряющий обучение GPU и вывод выводов в реальном времени для НЛП и CV.
Flash Attention — это высокооптимизированный алгоритм, разработанный для ускорения обучения и вывода моделей Transformer за счет более эффективного управления доступом к памяти . В современном глубоком обучении (DL), особенно при использовании крупных моделей, основным препятствием часто является не скорость вычислений процессора, а время, необходимое для перемещения данных между памятью и вычислительными блоками. Flash Attention решает эту проблему «памяти » путем реорганизации способа обработки данных механизмами внимания, что приводит к ускорению работы и снижению использования памяти без потери точности.
Чтобы понять, что такое Flash Attention, полезно взглянуть на архитектуру графического процессораGPU ). GPU имеет высокопроизводительную, но более медленную память с высокой пропускной способностью (HBM) и малопроизводительную, но невероятно быструю встроенную SRAM. Стандартные реализации внимания повторно читают и записывают большие матрицы в медленную HBM, что создает отставание.
Flash Attention использует технику, называемую «разбиением на блоки», чтобы разбить большую матрицу внимания на более мелкие блоки, которые полностью помещаются в быструю SRAM. Храня эти блоки в быстрой памяти и выполняя там больше вычислений перед записью результата обратно, алгоритм значительно сокращает количество операций чтения/записи в HBM. Эта инновация, представленная исследователями Стэнфордского университета, делает процесс «IO-ориентированным», то есть он явно учитывает затраты на перемещение данных. Вы можете изучить математические детали в оригинальной исследовательской статье.
Важно отличать «вспышку внимания» от схожих понятий в глоссарии искусственного интеллекта (ИИ):
Первоначально разработанная для обработки естественного языка (NLP) с целью обработки длинных текстовых последовательностей, технология Flash Attention стала играть важную роль в компьютерном зрении (CV). Изображения с высоким разрешением создают огромные последовательности данных при обработке с помощью Vision Transformers (ViT).
Эта технология влияет на развитие детекторов объектов. Например, разработанная сообществом YOLO12 представила слои внимания, использующие эти принципы. Однако архитектуры, основанные исключительно на внимании, могут страдать от нестабильности обучения и низкой CPU . Для большинства профессиональных приложений Ultralytics является рекомендуемым стандартом. YOLO26 использует высокооптимизированную архитектуру, которая обеспечивает баланс между скоростью и точностью для сквозного обнаружения объектов и сегментации изображений, избегая накладных расходов, часто связанных с тяжелыми слоями внимания на периферийных устройствах.
Повышение эффективности благодаря Flash Attention позволяет запускать приложения, которые ранее были слишком дорогими или медленными.
Современные фреймворки, такие как PyTorch (версия 2.0+) интегрировали Flash Attention
непосредственно в свой функциональный API как «Scaled Dot Product Attention» (SDPA). При обучении модели с использованием ultralytics пакет на поддерживаемом GPU например, архитектура NVIDIA или Hopper), эти
оптимизации применяются автоматически.
В следующем примере показано, как инициировать обучение на GPU. Если среда поддерживает это, базовый фреймворк будет использовать ядра Flash Attention для ускорения процесса обучения.
import torch
from ultralytics import YOLO
# Verify CUDA device availability for Flash Attention support
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Training on: {device}")
# Load the latest YOLO26 model (recommended for stability and speed)
model = YOLO("yolo26n.pt")
# Train the model; PyTorch 2.0+ automatically uses optimized attention kernels
if device == "cuda":
model.train(data="coco8.yaml", epochs=5, imgsz=640, device=0)
По мере развития аппаратного обеспечения такие инструменты, как Ultralytics , будут использовать эти низкоуровневые оптимизации, чтобы обеспечить максимальную экономичность и скорость выполнения тренировок для разработчиков.