YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

PagedAttention

PagedAttention が LLM のメモリ管理と KV キャッシュ効率をどのように最適化するかを学びましょう。スループットへの影響と、それが Ultralytics YOLO26 のパフォーマンスとどのように比較されるかを探求してください。

PagedAttentionは、大規模言語モデル(LLM)の推論速度とスループットを最適化するために設計された、非常に効率的なメモリ管理アルゴリズムです。従来のオペレーティングシステムにおける仮想メモリとページングの概念に触発されたこの技術は、テキスト生成中にキーバリューキャッシュ(しばしばKVキャッシュと呼ばれる)に関連する大量のメモリ消費に対処します。キャッシュに必要な連続したメモリブロックを、より小さく非連続な「ページ」に分割することで、PagedAttentionは内部および外部のメモリ断片化の両方を効果的に排除します。これにより、AIサーバーはより多くのリクエストを同時にバッチ処理できるようになり、GPUの利用率を最大化します。

PagedAttention 対 Flash Attention

両方の手法はニューラルネットワークのパフォーマンスを最適化しますが、異なるボトルネックを対象とします。Flash Attentionは、GPU階層全体での遅いメモリ読み書きを最小限に抑えることで、アテンションメカニズム自体の速度を向上させる計算レベルの最適化です。対照的に、PagedAttentionはメモリ割り当て戦略です。コンテキストウィンドウのメモリがどのように構造化され、保存されるかに純粋に焦点を当て、大規模で無駄なメモリブロックを事前に割り当てることなく、動的なスケーリングを可能にします。

実際のアプリケーション

PagedAttentionによって実現されたメモリ効率は、大規模な生成モデルが本番環境で展開される方法を変革しました。

  1. 高スループットAPIサービング: GPT-4に似たモデルを提供する本番システムは、vLLMのようなフレームワークを介してPagedAttentionを利用します。異なるユーザーリクエスト間でメモリブロックを共有することで、プロバイダーは同じハードウェアで最大4倍のユーザーにサービスを提供でき、クラウドベースのAIサービス運用コストを大幅に削減します。
  2. Complex Decoding Strategies: AIモデルが複数の潜在的な応答を一度に生成する場合(ビームサーチや並列サンプリングなど)、PagedAttentionはこれらの並列シーケンスが同じ基盤となるメモリページを安全に共有できるようにします。これにより、システムが冗長なメモリを重複させるのを防ぎ、複雑な推論タスクを大幅に高速化します。

コンピュータービジョンにおけるメモリ効率

PagedAttentionは主に自然言語処理で利用されますが、厳格なメモリ最適化という根底にある原理は、コンピュータービジョン (CV)においても同様に重要です。ハードウェア制約のあるエッジデバイスにモデルをデプロイする場合、メモリ肥大化を避けることが不可欠です。Ultralytics YOLO26は、エンドツーエンドのNMSフリーアーキテクチャを利用することで、重いキャッシュ管理の必要性を回避し、ネイティブにリアルタイム推論効率を実現します。

object detectionパイプラインのメモリとエクスポート要件をシームレスに処理しようとしている開発者にとって、Ultralytics Platformは、最適なハードウェア実行のためにモデルをパッケージ化する自動デプロイツールを提供します。

コード例

PagedAttentionはサービングフレームワークの内部で動作し、標準的なアテンション機能を最適化されたCUDAカーネルに置き換えます。以下は、PyTorchで標準的なアテンションをどのように定義するかを示す概念的な例です。vLLMのようなシステムは、モデルデプロイ中にページングを使用してこれを自動的にインターセプトし最適化します。

import torch
import torch.nn.functional as F

# Simulated Key, Query, and Value tensors for a standard attention block
batch_size, num_heads, sequence_length, head_dim = 1, 8, 1024, 64
query = torch.randn(batch_size, num_heads, sequence_length, head_dim)
key = torch.randn(batch_size, num_heads, sequence_length, head_dim)
value = torch.randn(batch_size, num_heads, sequence_length, head_dim)

# Standard attention computation (often replaced by PagedAttention kernels in production LLM servers)
attention_output = F.scaled_dot_product_attention(query, key, value)

print(f"Computed attention shape: {attention_output.shape}")

高度なメモリ割り当て戦略を活用することで、AI業界は可能性の限界を押し広げ続け、大規模な基盤モデルが世界中で効率的にスケーリングされ、アクセスできるよう保証しています。

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

未来の機械学習で、新たな一歩を踏み出しましょう。