深圳Yolo 视觉
深圳
立即加入
词汇表

闪光灯注意

探索 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 注意:是完全相同的数学逻辑的实现。它产生 与标准注意力的数字输出完全相同,但速度更快。
  • 近似方法:与稀疏注意力或低秩近似不同,稀疏注意力或低秩近似以精度换取速度。 闪存注意力是一种精确算法,能保持模型的全部精度。

计算机视觉模型的相关性

虽然 Flash Attention 起源于 NLP 领域的 大语言模型 (LLM) 领域,但它在视觉任务中的重要性与日俱增。 在视觉任务中变得越来越重要。现代架构,如 视觉Transformer (ViT)等现代架构在很大程度上依赖于 注意层。

一些社区驱动的模型,如YOLO12,已经整合了注意力机制。 利用闪存注意力来减轻其架构的高计算成本。 架构。然而,这些模型仍可能存在内存消耗大和训练不稳定的问题。对于大多数 实际用例、 Ultralytics YOLO11仍然是 推荐之选,因为它在速度和效率之间实现了出色的平衡。展望未来,即将推出的 YOLO26的设计将支持端到端任务。 任务,其优化架构可能会利用类似的效率原则。

实际应用

闪存注意力使人工智能系统能够处理以前在计算上难以完成的任务。

  1. 长语境文档分析:在 NLP 中,像 GPT-4等模型利用 "闪存关注 "来维护一个庞大的 上下文窗口。这样,人工智能就能一次性处理整本书或冗长的法律合同,而不会 "遗忘 "之前的信息。 整本书或冗长的法律合同,而不会 "遗忘 "之前的信息,从而大大提高了文本总结能力。 提高文本摘要能力。
  2. 高分辨率医学成像:在医疗保健领域、 医学图像分析通常涉及 处理千兆像素的病理切片。Flash Attention 可使视觉模型以高分辨率分析这些大型图像,而无需进行过多的降维处理。 图像,保留诊断脑肿瘤等疾病的关键细节。 脑肿瘤

用PyTorch 和Ultralytics实现

现代框架,如 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 内核。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入