探索 Flash Attention - 一种快速、内存效率高的Transformer 注意力方法,可加快GPU 训练和 NLP 与 CV 的实时推理。
Flash Attention 是一种先进的算法,旨在加快 Transformer模型的性能。 注意机制访问图形 硬件上访问内存的方式进行优化。该方法旨在解决深度学习中的计算瓶颈。 这种方法大大提高了 训练和 实时推理的速度,而不会牺牲 准确性。更高效地管理数据移动、 Flash Attention 允许人工智能模型处理更长的数据序列,这对以下领域的现代应用至关重要 自然语言处理 (NLP) 和高性能计算机视觉 (CV) 中的现代应用至关重要。
闪存注意力的核心创新在于它的 "IO 感知",即它明确地考虑到了 在 GPU(图形处理单元)不同级别内存之间移动数据的成本。 GPU (图形处理器)上不同级别内存之间移动数据的成本。在 在标准注意力实现中,大型中间矩阵经常从GPU 的高带宽内存(HBM)中读取并写入。 带宽内存(HBM),它空间大,但速度相对较慢。
Flash Attention 采用一种名为 "平铺 "的技术对这一过程进行了重组。它将庞大的注意力矩阵分解成 更小的区块,这些区块完全适合GPU 的快速片上 SRAM(静态随机存取存储器)。通过在 在 SRAM 中执行更多计算,并尽量减少对 HBM 的读/写操作,从而减少了内存带宽的 瓶颈。这一概念由 斯坦福大学的研究人员提出了这一概念,并在他们关于 FlashAttention.
重要的是要将 "闪存注意力 "与一般的 "注意力 "概念区分开来。
虽然 Flash Attention 起源于 NLP 领域的 大语言模型 (LLM) 领域,但它在视觉任务中的重要性与日俱增。 在视觉任务中变得越来越重要。现代架构,如 视觉Transformer (ViT)等现代架构在很大程度上依赖于 注意层。
一些社区驱动的模型,如YOLO12,已经整合了注意力机制。 利用闪存注意力来减轻其架构的高计算成本。 架构。然而,这些模型仍可能存在内存消耗大和训练不稳定的问题。对于大多数 实际用例、 Ultralytics YOLO11仍然是 推荐之选,因为它在速度和效率之间实现了出色的平衡。展望未来,即将推出的 YOLO26的设计将支持端到端任务。 任务,其优化架构可能会利用类似的效率原则。
闪存注意力使人工智能系统能够处理以前在计算上难以完成的任务。
现代框架,如 PyTorch(2.0 及更高版本)等现代框架已将 Flash 注意事项直接集成到其功能性应用程序接口中。在使用高级库时,如果硬件支持,系统会自动选择最高效的内核(如 Flash Attention)。 在使用高级库时,如果硬件(如NVIDIA 安培或霍普 GPU)支持,系统会自动选择最高效的内核(如 Flash Attention)。
下面的示例演示了用户如何利用这一生态系统。通过加载模型并将其移动到 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 平台的开发人员可以受益于最先进的加速 技术,而无需手动编写复杂的CUDA 内核。