AB
AiBoss
project

FlashMLA - DeepSeekが開発したオープンソースの高効率MLAデコードカーネルで、HopperアーキテクチャGPU向けに特別に設計されています。

FlashMLAは、DeepSeekが開発したオープンソースの高効率MLA(マルチヘッド線形アテンション)デコードカーネルで、NVIDIA HopperアーキテクチャGPU向けに最適化され、可変長シーケンスの処理に特化して設計されています。キーと値のペアを最適化し、...

FlashMLAとは何ですか?

FlashMLAは、DeepSeekが開発したオープンソースの高効率MLA(マルチヘッド線形アテンション)デコードカーネルで、NVIDIA HopperアーキテクチャGPU向けに最適化され、可変長シーケンスの処理に特化して設計されています。最適化されたキーバリューキャッシュとBF16データフォーマットの採用により、メモリ効率と計算効率が向上しています。H800 SXM5 GPU上では、FlashMLAは最大3000 GB/sのメモリ帯域幅と最大580 TFLOPSの計算性能を実現します。

FlashMLA の設計は FlashAttention 2 & 3 および Cutlass プロジェクトに触発されており、ページネーション キャッシュや低ランク圧縮などの技術をサポートし、メモリ管理と計算パフォーマンスをさらに最適化しています。大規模言語モデル (LLM) での推論タスクに適しており、効率的なデコードを必要とする自然言語処理 (NLP) シナリオで非常に優れたパフォーマンスを発揮します。開発者は簡単なコマンド (…) でインストールできます。python setup.py installベンチマークテストスクリプトを迅速に展開して実行します。python tests/test_flash_mla.pyパフォーマンスを検証する。

FlashMLAの主な機能

  • BF16精密支援BF16データ形式をサポートし、パフォーマンスと効率性のバランスを取っています。
  • ページングされたキーバリューキャッシュページベースのキーバリューキャッシュ機構を採用し、ブロックサイズは64バイトとすることで、よりきめ細かなメモリ管理を可能にしている。
  • 究極のパフォーマンスH800 SXM5 GPU上では、FlashMLAはメモリ制約のあるシナリオで3000 GB/sの帯域幅を、演算制約のあるシナリオで580 TFLOPSの演算能力を実現できます。

FlashMLAの技術的原則

  • ブロックスケジューリングと並列コンピューティングFlashMLAは、ブロックスケジューリング機構を通じて、計算タスクを複数の小さなブロックに分割して並列処理することで、GPUの並列計算機能を最大限に活用します。
  • 最適化されたメモリアクセスモードFlashMLAは、メモリアクセスパターンを最適化し、メモリアクセスのオーバーヘッドを削減することで、大規模データの処理時のパフォーマンスを大幅に向上させます。

FlashMLAの使い方

  • 環境準備FlashMLAには、以下のハードウェアおよびソフトウェア環境が必要です。
    • ハードウェアNVIDIA Hopperアーキテクチャ搭載GPU(H800 SXM5など)。
    • ソフトウェアCUDA 12.3以降、PyTorch 2.0以降。
  • FlashMLAをインストールする以下のコマンドを使用してFlashMLAをインストールしてください。
python setup.py install
  • ベンチマークテストを実行するインストール後、以下のコマンドを実行してパフォーマンス テストを実行できます。(このスクリプトは、H800 SXM5 GPU などの現在の環境における FlashMLA のパフォーマンスを検証します。メモリ制約のある構成では 3000 GB/s の帯域幅、計算制約のある構成では 580 TFLOPS の計算能力を実現できます。)
python tests/test_flash_mla.py
  • FlashMLAを使用する以下は、FlashMLAを使用する際の典型的なコード例です。
from flash_mla import get_mla_metadata, flash_mla_with_kvcache

# 获取元数据和分块信息
tile_scheduler_metadata, num_splits = get_mla_metadata(cache_seqlens, s_q * h_q // h_kv, h_kv)
# 在多层解码中调用 FlashMLA
for i in
range(num_layers):
 o_i, lse_i = flash_mla_with_kvcache(
 q_i, kvcache_i, block_table, cache_seqlens, dv,
 tile_scheduler_metadata, num_splits, causal=True
)
  • 詳細はこちら完全なコードとドキュメントはGitHubリポジトリで閲覧できます。

FlashMLAプロジェクトのアドレス

FlashMLAの応用事例

  • 自然言語処理(NLP)タスクFlashMLAは、機械翻訳、テキスト生成、感情分析、質問応答システムなど、効率的なデコードを必要とする自然言語処理タスクに適しています。可変長シーケンスに最適化されており、推論効率を大幅に向上させます。
  • 大規模言語モデル(LLM)推論FlashMLAは、大規模な言語モデルを扱う推論シナリオ向けに特別に設計されています。キーバリューキャッシュと並列デコード機構を最適化することで、ハードウェアリソースの要件を削減しつつ、推論速度を向上させます。
  • リアルタイムインタラクティブアプリケーション対話型AI、リアルタイム翻訳、コンテンツ推薦など、迅速な応答が求められるアプリケーションにおいて、FlashMLAは低遅延の推論機能を提供し、ユーザーエクスペリエンスを向上させます。
  • 高性能コンピューティングの要件FlashMLAは、最大3000GB/sのメモリ帯域幅と最大580TFLOPSの演算性能を備えたH800 SXM5 GPU上で非常に優れたパフォーマンスを発揮し、高性能コンピューティングタスクに適しています。
  • 業界ソリューションFlashMLAは、金融、医療、教育といった特定産業分野における効率的なアプリケーションに活用できます。カスタマイズされた導入により、各産業の高度なパフォーマンス要件を満たすことが可能です。