AB
AiBoss
project

DeepGEMM - DeepSeekのオープンソースFP8汎用行列乗算ライブラリ

DeepGEMMは、DeepSeekが開発したオープンソースライブラリで、効率的かつ簡潔なFP8行列乗算(GEMM)を実現するように設計されています。現在はNVIDIA Hopperテンソルコアのみをサポートしています。DeepGEMMは、通常エキスパートグループと混合エキスパートグループ(MoE)の両方でGEMM演算をサポートしています。

DeepGEMMとは何ですか?

DeepGEMMは、効率的かつ簡潔なFP8行列乗算(GEMM)を実現するためにDeepSeekが開発したオープンソースライブラリで、現在はNVIDIA Hopperテンソルコアのみをサポートしています。DeepGEMMは、標準エキスパートグループと混合エキスパート(MoE)グループの両方でGEMM演算をサポートし、Just-In-Time(JIT)コンパイル技術に基づいているため、インストール時のコンパイルは不要で、実行時に動的な最適化が可能です。DeepGEMMは、きめ細かなスケーリングとCUDAコアのデュアルレベル累積技術を採用することでFP8の精度制限に対応し、Hopperのテンソルメモリアクセラレータ(TMA)機能を活用してデータ転送効率を向上させています。コアコードベースは約300行と非常にシンプルなため、学習や最適化が容易です。軽量設計により、様々な行列形状においてエキスパートレベルの最適化ライブラリと同等以上の性能を実現しています。

DeepGEMMの主な機能

  • 高効率FP8行列乗算(GEMM)DeepGEMMは、FP8(8ビット浮動小数点)行列乗算専用に設計された高効率ライブラリです。きめ細かなスケーリングをサポートし、行列演算のパフォーマンスと精度を大幅に向上させます。
  • 標準GEMMとグループ化GEMMの両方をサポートします
    • 通常のGEMM通常の行列乗算演算に適用されます。
    • GEMMのグループ化ハイブリッドエキスパート(MoE)モデルにおけるグループ化された行列乗算をサポートし、連続レイアウトとマスクレイアウトの両方に対応することで、複数のエキスパートが形状を共有するシナリオを最適化します。
  • ジャストインタイム(JIT)コンパイル設計ジャストインタイム(JIT)コンパイル技術に基づき、すべてのカーネルは実行時に動的にコンパイルされるため、インストール時のコンパイルは不要です。最適化は、マトリックス形状やブロックサイズなどのパラメータに基づいて行われ、レジスタの節約とパフォーマンスの向上を実現します。
  • ホッパーアーキテクチャの最適化NVIDIA Hopperアーキテクチャ専用に設計されたこの技術は、Tensor Memory Accelerator(TMA)の機能を最大限に活用し、TMAのロード、ストレージ、マルチキャスト、ディスクリプタのプリフェッチなどを行うことで、データ転送効率を大幅に向上させます。
  • 微細なスケーリングと2段階の蓄積FP8における精度不足という問題に対処するため、DeepGEMMはきめ細かいスケーリング技術を導入しています。CUDAコアの2段階累積メカニズムに基づき、FP8計算結果をより高精度な形式(BF16など)にアップスケールすることで、計算精度を確保します。
  • 軽量設計コアコードは簡潔で、わずか300行程度なので、理解しやすく拡張も容易です。複雑なテンプレートや代数構造への依存を避けているため、学習や最適化の難易度も低くなっています。

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

DeepGEMMのパフォーマンス

  • 標準GEMM(非グループ化)パフォーマンス
    • 最大加速比特定の行列形状の場合、DeepGEMMは2.7倍の高速化を実現でき、行列乗算の効率を大幅に向上させることができます。
    • コンピューティング性能大規模な行列演算において、DeepGEMMは1000TFLOPSを超える計算性能を達成でき、HopperアーキテクチャGPUの理論上のピーク値に迫る。
  • グループ化されたGEMM(MoEモデル)のパフォーマンス
    • 加速比グループ化されたGEMMでは、DeepGEMMは1.1~1.2倍の高速化を実現でき、MoEモデルのトレーニングと推論の効率を大幅に向上させることができます。
    • メモリ帯域幅の最適化TMA機能に基づくと、DeepGEMMはメモリ帯域幅の利用効率において非常に優れた性能を発揮し、ハードウェアの限界に近いパフォーマンスを実現します。
      • 連続レイアウト
      • マスクレイアウト

DeepGEMMのシステム要件

  • ハードウェア要件
    • GPUアーキテクチャNVIDIA Hopperアーキテクチャをサポートしている必要があり、具体的にはsm_90aをサポートするGPUが必要です。FP8演算とTensorコアに最適化されているため、H800またはH100 HopperアーキテクチャのGPUを推奨します。
    • CUDA互換性CUDA 12.3以降が必要です。最適なパフォーマンスを得るには、CUDA 12.8以降を推奨します。
  • ソフトウェア要件
    • 推奨オペレーティングシステムCUDAとPyTorchはLinux上でより適切にサポートされているため、Linuxオペレーティングシステム(Ubuntu、CentOSなど)を使用してください。
    • Python版Python 3.8以降。
    • CUDAツールキットCUDAバージョン12.3以降が必要です。CUDAバージョンはGPUアーキテクチャと互換性がある必要があります。Hopperアーキテクチャの機能を最大限に活用するには、バージョン12.8以降を推奨します。
    • PyTorchPyTorch 2.1以降。
    • カットラス図書館: CUTLASS 3.6以降。
  • その他の要件
    • 従来のコンパイルツール(gcc、makeなど)。
    • torch.utils.cpp_extensionモジュールはCUDA拡張機能に使用されます。

DeepGEMMの応用シナリオ

  • 大規模AIモデル推論高次元行列の乗算を高速化し、推論速度を向上させます。
  • ハイブリッドエキスパート(MoE)モデル計算効率を向上させるため、グループ化された行列の乗算を最適化する。
  • 低精度計算:FP8の精度に関する問題は、高精度な出力を維持しつつ、きめ細かなスケーリングによって解決される。
  • 高性能コンピューティングHopperアーキテクチャの特性に基づき、行列演算の効率を向上させる。
  • 深層学習フレームワークの最適化低レベル最適化ライブラリとして、モデルのトレーニングと推論を高速化します。