Ultralytics YOLO27:
Ultralytics用語集に戻る

Grouped Query Attention (GQA)

Grouped Query Attention(GQA)がKV-cacheのメモリ使用量を削減し、推論効率を高め、Transformerモデルの性能バランスを取る仕組みを学びます。

グループ化クエリアテンション (GQA) は、複数のクエリヘッドで、より少数のキーおよびバリューヘッドを共有するアテンション設計です。マルチヘッドクエリの多様な視点を維持しながら、キーとバリューに必要なメモリおよびデータ移動を削減します。GQAは、モデルが一度に1トークンずつ生成し、保存されたアテンション状態を繰り返し読み取る自己回帰推論で特に有効です。

GQAの仕組み#

アテンションメカニズム内で、各トークンは3つの表現に射影されます。

  • クエリ: 現在のトークンが求めている情報を表します。
  • キー: 利用可能な各トークンが表す内容を示します。
  • バリュー: クエリがキーと一致したときに取得される情報を含みます。

従来のセルフアテンションでは、モデルが異なる関係を並列に学習できるよう、これらの射影をヘッドに分割します。GQAでは多数のクエリヘッドを維持しつつ、それらをグループ化して共有のキーおよびバリューヘッドに割り当てます。たとえば、アテンションレイヤーで8個のクエリヘッドと2個のキーバリューヘッドを使用する場合があります。この場合、各キーバリューヘッドが4個のクエリヘッドを担当します。

アテンションの計算自体は、引き続きスケールドドット積アテンションです。変わるのはヘッドの構成と、生成、保存、読み取りを行うキーバリューデータの量です。そのため、GQAを有効にしたPyTorchのスケールドドット積アテンションなどのフレームワークでは、クエリヘッド数をキーバリューヘッド数で割り切れるようにする必要があります。(docs.pytorch.org)

GQAとマルチヘッドアテンションおよびマルチクエリアテンションの比較#

GQAは、マルチヘッドアテンションとマルチクエリアテンションの中間に位置します。

  • マルチヘッドアテンション: 各クエリヘッドが独自のキーヘッドとバリューヘッドを持ちます。ヘッドの独立性は最大になりますが、キーバリューメモリの要件も最大になります。
  • グループ化クエリアテンション: 複数のクエリヘッドが各キーバリューヘッドを共有します。表現能力とメモリ効率のバランスが取れています。
  • マルチクエリアテンション: すべてのクエリヘッドが1つのキーヘッドと1つのバリューヘッドを共有します。キーバリューのストレージを最小限に抑えられますが、キーバリューの多様性は低くなります。

あるレイヤーに32個のクエリヘッドがある場合、マルチヘッドアテンションでも32個のキーバリューヘッドを使用する一方、GQAでは8個、マルチクエリアテンションでは1個を使用することがあります。GQAは、より広範なTransformerアーキテクチャの置き換えではなく、Transformerのアテンションレイヤー内で選択できる構成の1つです。NVIDIAのマルチヘッド、マルチクエリー、グループ化クエリアテンションに関するドキュメントでは、これらのバリエーションは、クエリヘッドを担当するキーバリューヘッドの数が主な違いであると説明されています。(nvidia.github.io)

GQAが重要な理由#

自己回帰生成では、モデルは以前のキーとバリューをKVキャッシュに保存します。標準的なマルチヘッドアテンションでは、すべてのアテンションヘッドが個別のキーとバリューをキャッシュに追加します。そのため、長いシーケンス、大きなバッチ、多数のモデルレイヤーによって、GPUメモリを大量に消費する可能性があります。

GQAではキーバリューヘッドの数が少ないため、キャッシュもヘッド数の削減率に比例して小さくなります。これにより、次の点を改善できる可能性があります。

  • メモリ容量: より長いプロンプトや、より多くの同時リクエストを利用可能なメモリに収められます。
  • 生成スループット: 生成される各トークンで読み取るキーバリューデータが少なくなります。
  • 推論レイテンシ: メモリトラフィックの削減により、トークン間の処理時間を短縮できます。
  • コンテキストウィンドウのスケーラビリティ: 長いシーケンスをより実用的に提供できるようになります。

これらの効果は、ハードウェア、シーケンス長、バッチサイズ、カーネルのサポート状況によって異なります。プロダクションランタイムでは、効率的なキャッシュ割り当ても必要です。たとえばNVIDIAのTensorRT-LLM KVキャッシュシステムは、GQAのサポートに加えて、ブロックベースのキャッシュ、再利用、オフロードを組み合わせています。(nvidia.github.io)

実世界での利用例#

長いコンテキストを扱うアシスタント: コーディングアシスタントは、回答を生成する前に数千個のソースコードトークンを処理する場合があります。GQAは、その履歴に関連付けられたキャッシュ済みのキーバリュー状態を削減するため、GPUメモリを比例して増やすことなく、サーバーでより長いファイルやより多くの同時ユーザーを処理できるようにします。

マルチモーダル画像・動画アシスタント: ビジョン言語モデルは、画像パッチや動画フレームを長いトークンシーケンスとして表現できます。GQAは、これらのビジュアルトークンが言語デコーダーに入力された後のアテンションキャッシュへの負荷を軽減し、追加の画像、フレーム、またはリクエストに使用できるメモリを増やせる可能性があります。これは、標準的なVision Transformerとは異なります。標準的なVision Transformerでは、自己回帰KVキャッシュを使用せず、すべての画像パッチを並列に処理する場合があります。

実装とトレードオフ#

PyTorchでは、enable_gqa=Trueを通じてGQAを利用できます。このドキュメントに記載されたCUDAの例では、8個のクエリヘッドと2個の共有キーバリューヘッドを使用します。

import torch
import torch.nn.functional as F
from torch.nn.attention import SDPBackend, sdpa_kernel

assert torch.cuda.is_available(), "A CUDA device is required."

query = torch.randn(1, 8, 16, 32, device="cuda")
key = torch.randn(1, 2, 16, 32, device="cuda")
value = torch.randn(1, 2, 16, 32, device="cuda")

# Four query heads share each key-value head.
with sdpa_kernel(SDPBackend.MATH):
    output = F.scaled_dot_product_attention(
        query,
        key,
        value,
        enable_gqa=True,
    )

print(output.shape)

出力では8個のクエリヘッドが維持されますが、キーとバリューには2個のヘッドのみが使用されます。PyTorchアテンションバックエンドセレクターでは、処理を実行するサポート対象カーネルを制御できます。また、PyTorch Transformerビルディングブロックガイドでは、より幅広い実装コンテキストが提供されています。(docs.pytorch.org)

GQAは、モデルの設計時または適応時に選択する必要があり、既存のチェックポイントに対して推論時に一般的に切り替えられるオプションではありません。開発者は、フレームワークのサポート、ヘッド数の割り切れ方、数値的な挙動、メモリ使用量、タスク品質を検証する必要があります。コンピュータビジョンのデプロイでは、Ultralytics TensorRT統合Ultralyticsベンチマークモードなどの補完的なワークフローにより、アーキテクチャおよびランタイムの最適化が対象ハードウェア上で有意な改善をもたらすかどうかを測定できます。

Explore solutions

航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る

AIの未来を一緒に築きましょう!

機械学習の未来への歩みを始めましょう