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のプロジェクトアドレス
- GitHubリポジトリ:https://github.com/deepseek-ai/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アーキテクチャの特性に基づき、行列演算の効率を向上させる。
- 深層学習フレームワークの最適化低レベル最適化ライブラリとして、モデルのトレーニングと推論を高速化します。