フラッシュ・アテンションは、NLPやCVのためのGPU トレーニングとリアルタイム推論を高速化するTransformerアテンションのための高速でメモリ効率の良い方法です。
フラッシュ・アテンションは、Transformerモデルのパフォーマンスを高速化するために設計された高度なアルゴリズムです。 Transformerモデルのパフォーマンスを高速化するために設計された高度なアルゴリズムです。 アテンション機構がグラフィックハードウェア上のメモリにアクセスする方法を最適化することで ハードウェア上のメモリにアクセスする方法を最適化することによって、Transformerモデルのパフォーマンスを加速するように設計された高度なアルゴリズムです。の計算ボトルネックに対処するために開発されました。 ディープラーニングにおける計算上のボトルネックに対処するために開発されたこの手法は 学習と 精度を犠牲にすることなく 精度を犠牲にすることなくデータの動きをより効率的に管理することで フラッシュ・アテンションは、AIモデルがより長いデータシーケンスを処理することを可能にします。 自然言語処理(NLP) と高性能コンピュータビジョン(CV)の最新のアプリケーションに不可欠です。
フラッシュ・アテンションの革新性の核心は「IOアウェアネス」にある。 つまり、GPU(グラフィック・プロセッシング・ユニット)上の異なるレベルのメモリ間でデータを移動するコストを明示的に考慮することだ。 つまり、GPU (グラフィック・プロセッシング・ユニット)上の異なるメモリ・レベル間でデータを移動するコストを明示的に考慮することだ。標準的なアテンション実装では 標準的なアテンション実装では、大きな中間行列はGPUHBM(High Bandwidth Memory)から頻繁に読み出され、GPUHBMに書き込まれます。 メモリ(HBM)からの読み書きが頻繁に行われます。
フラッシュ・アテンションは、タイリングと呼ばれる技術を使ってこのプロセスを再構築する。これは、大きなアテンション・マトリックスを GPU高速オンチップSRAM(スタティック・ランダム・アクセス・メモリー)に完全に収まる小さなブロックに分割します。より多くの計算を SRAM内でより多くの計算を実行し、HBMへの読み書き操作を最小限に抑えることで、メモリ帯域幅のボトルネックを軽減します。 ボトルネックを軽減します。このコンセプトは スタンフォード大学の研究者たちによって導入され、その詳細は FlashAttention.
フラッシュ・アテンションを一般的なアテンションの概念と区別することは重要である。
フラッシュ・アテンションは、言語処理分野で大規模言語モデル(LLM)のために開発されました。 ラージ・ランゲージ・モデル(LLM)の領域で生まれたものであるが ビジョン・タスクにますます不可欠になってきている。例えば ヴィジョン・トランスフォーマー(ViT)のような最新のアーキテクチャは、アテンション・レイヤーに大きく依存している。 アテンション・レイヤーに大きく依存している。
YOLO12のようなコミュニティ主導のモデルには、フラッシュ・アテンションを利用したアテンション・メカニズムが統合されている。 フラッシュ・アテンションを利用したアテンション・メカニズムが統合されている。 アーキテクチャを採用している。しかし、このようなモデルは、依然として高いメモリ消費とトレーニングの不安定性に悩まされることがある。ほとんどの 実用的なユースケースでは Ultralytics YOLO11が スピードと効率の優れたバランスを提供します。今後 YOLO26は、エンド・ツー・エンドのタスクをネイティブにサポートするよう設計されている。 タスクをネイティブにサポートするよう設計されている。
フラッシュ・アテンションによって、AIシステムはこれまで計算不可能だったタスクを処理できるようになる。
最新のフレームワーク PyTorch(バージョン2.0以降)のような最新のフレームワークは、Flash アテンションを機能APIに直接統合しています。高レベルライブラリを使用する場合、ハードウェアがそれをサポートしていれば、システムは自動的に最も効率的なカーネル(フラッシュアテンションのような)を選択します。 NVIDIA AmpereやHopper 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カーネルを手作業で記述することなく、最先端のアクセラレーション技術 複雑なCUDA カーネルを手作業で記述する必要がありません。

