Откройте для себя Flash Attention - быстрый, не требующий много памяти метод преобразования внимания, ускоряющий обучение GPU и вывод выводов в реальном времени для НЛП и CV.
Flash Attention - это усовершенствованный алгоритм, разработанный для ускорения работы моделей трансформеров за счет оптимизации того, как механизмов внимания к памяти на графическом аппаратном обеспечении. Разработанный для устранения узких мест в вычислительных системах глубокого обучения, этот метод значительно повышает скорость обучения и вычислений в реальном времени без ущерба для точности. Благодаря более эффективному управлению движением данных, Flash Attention позволяет моделям ИИ обрабатывать более длинные последовательности данных, что очень важно для современных приложений в области Обработка естественного языка (NLP) и высокопроизводительного компьютерного зрения (CV).
Основная инновация Flash Attention заключается в ее "IO-awareness", то есть она явно учитывает стоимость перемещения данных между различными уровнями памяти на GPU (графический процессор). В стандартных реализациях внимания большие промежуточные матрицы часто считываются из и записываются в память GPU High Bandwidth Memory (HBM), которая является вместительной, но относительно медленной.
Flash Attention реструктурирует этот процесс с помощью техники, называемой тайлингом. Она разбивает большую матрицу внимания на меньшие блоки, которые полностью помещаются в быструю SRAM (статическую память с произвольным доступом) на кристалле GPU. Выполняя больше вычислений в SRAM и минимизируя операции чтения/записи в HBM, она уменьшает пропускную способность памяти. узкое место. Эта концепция была представлена исследователями из Стэнфордского университета и подробно описана в их статье FlashAttention.
Важно отличать флеш-внимание от общего понятия "внимание".
Хотя Flash Attention зародилась в области NLP для больших языковых моделей (LLM), оно становится все более важным для задач технического зрения. Современные архитектуры, такие как Vision Transformer (ViT), в значительной степени опираются на слои внимания.
Некоторые модели, созданные сообществом, такие как YOLO12, имеют встроенные механизмы внимания, использующие Flash Attention для снижения высоких вычислительных затрат своей архитектуры архитектуры. Однако эти модели по-прежнему страдают от большого потребления памяти и нестабильности обучения. Для большинства практических случаев использования, Ultralytics YOLO11 остается рекомендуемым выбором, предлагая превосходный баланс скорости и эффективности. Забегая вперед, отметим, что грядущая версия YOLO26 разрабатывается с учетом встроенной поддержки сквозных задач с оптимизированными архитектурами, которые могут использовать аналогичные принципы эффективности.
Flash Attention позволяет системам искусственного интеллекта решать задачи, которые раньше были непосильны для вычислений.
Современные фреймворки, такие как PyTorch (версия 2.0 и более поздние) интегрировали Flash Attention непосредственно в свои функциональные API. При использовании высокоуровневых библиотек система автоматически выбирает наиболее эффективное ядро (например, Flash Attention), если аппаратное обеспечение поддерживает его, как, например, на графических процессорах NVIDIA Ampere или Hopper.
Следующий пример демонстрирует, как пользователь может использовать эту экосистему. Загрузив модель и переместив ее на CUDA , базовый фреймворк применяет эти оптимизации во время обучения модели.
import torch
from ultralytics import YOLO
# Ensure PyTorch is using a CUDA device for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")
# Load the YOLO11 model, which is optimized for efficiency
model = YOLO("yolo11n.pt")
# When training on a compatible GPU with PyTorch 2.0+,
# Flash Attention (SDPA) is utilized automatically for attention layers where applicable.
if device == "cuda":
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)
Эта бесшовная интеграция означает, что разработчики, использующие Ultralytics Platform могут воспользоваться преимуществами современных технологий ускорения без необходимости писать сложные ядра CUDA вручную.