DeepGEMM
SHA-256DeepSeek がオープンソース化した高性能 GPU 行列計算オペレーターライブラリ。大規模モデルの FP8/FP4 行列乗算と MoE の高速化のために開発され、コンパイル不要でインストールでき、性能は CUTLASS に匹敵する。
スマートダウンロード
Download 版をダウンロード
v2.1.1.post3 · 8.5 MB
大規模モデルの行列演算をNVIDIAの新型GPU上で限界速度まで到達させる開発ライブラリ。
主な機能
- FP8、FP4、BF16 の行列乗算をサポートし、H800 ではピークで 1550 TFLOPS に到達
- Mega MoE 融合カーネル:エキスパートのディスパッチ、2層の線形層、SwiGLU 活性化、結果のマージを1つのカーネルに圧縮し、通信と計算をオーバーラップ
- DeepJIT によるランタイムコンパイルで、インストール時に CUDA コンパイルは一切不要、箱から出してすぐに使える
- コードは意図的に簡潔に保たれ、コアカーネルの数も少なく、GPU カーネル最適化を学ぶための優れた教材となっている
- 連続/マスクの2種類のグループ化 GEMM と MQA スコアリングカーネルを提供し、MoE の訓練から推論デコードまでの全工程をカバー
できないこと
- •NVIDIA SM90(H100/H800)およびSM100(B200)アーキテクチャのみをサポートしており、RTXシリーズのコンシューマー向けGPUやA100などの旧世代カードでは実行できません。これは開発者向けの低レベル演算子ライブラリであり、グラフィカルインターフェースを備えておらず、インストールするだけで使えるアプリケーションではありません。入力の転置とFP8量子化変換はユーザーが自身の前処理演算子で実装する必要があり、ライブラリ自体が代行することはありません。Linux環境、CUDA 12.9+、およびC++20の<format>をサポートするコンパイラに依存しており、環境構築のハードルは低くありません。Mega MoEではさらにマルチプロセス起動と対称メモリが必要となり、デバッグの複雑度も高くなります。
使用例
- DeepSeek V3 のような大規模言語モデルのトレーニングやデプロイ時に、FP8/FP4 低精度行列演算を高速化
- MoE モデルの推論サービスにおいて、Mega MoE でエキスパート並列計算と NVLink 通信をオーバーラップさせてレイテンシを低減
- リファレンスコードとして、NVIDIA Tensor Core カーネル最適化と TMA プログラミングのテクニックを学習
詳細説明
DeepGEMM は DeepSeek がオープンソース化した統合高性能 GPU テンソルコア演算子ライブラリで、現代の大規模モデルの重要な計算プリミティブをクリーンな CUDA コードベースに統合しています:FP8/FP4/BF16 行列乗算、通信と計算をオーバーラップさせる融合 MoE(Mega MoE)、lightning indexer の MQA スコアリングカーネル、HyperConnection など。すべてのカーネルは DeepJIT によって実行時にコンパイルされ、インストール時に CUDA をコンパイルする必要はまったくありません。CUTLASS/CuTe の考え方を参考にしながらも、煩雑なテンプレート体系を意図的に避け、少数のコアカーネルのみを保持しています——そのため、プロダクションレベルのライブラリ(H800 で 1550 TFLOPS に到達)であると同時に、NVIDIA GPU カーネル最適化を学ぶための最も読みやすい教材の一つでもあります。SM90(H100/H800)および SM100(B200)アーキテクチャをサポートし、連続/マスクの2種類のレイアウトによるグループ化 GEMM を提供し、MoE の学習フォワードパスと推論デコードをカバーしています。CUDA 12.9+、PyTorch 2.3+、および C++20 をサポートするコンパイラが必要で、MIT ライセンスでオープンソース化されています。
トラブルシューティング & FAQ (2)
トラブル対応DeepGEMMのtest_mqa_logitsがSM120 Blackwell GPUでビット単位の不一致により失敗するのはなぜですか?また、FP8 MQA logitsカーネルの出力は使用しても安全ですか?
この障害には、SM120(例:RTX PRO 6000 Blackwell、deep_gemm 2.6.1 nv_dev)において2つの独立した原因があります。(1) FP8の自己整合性アサートは、非決定的な*ウィンドウ外*への書き込みが原因で失敗します。圧縮モードでは、fp8_fp4_mqa_logitsカーネルが各行の有効な[ks, ke)ウィンドウを超えた出力セルにガベージを書き込むため、テストのバッファ全体のビット単位比較が不一致になります。さらに深い切り分け(30回の繰り返し起動、最大4096x8192のシェイプ、H=64 D=128)により、有効領域の出力はビット単位で同一かつNaNフリーであることが示されたため、ウィンドウを尊重するコンシューマーは影響を受けません。各行の[ks_i, ke_i)範囲内のlogitsのみを読み取り、テストの失敗は有効データに対するデータ競合ではなくテストアーティファクトとして扱ってください。(2) H=64、D=128のMXFP4パスには真の精度の障害(許容誤差0.02に対し差分 ~0.62)があり、まだ修正はありません。以前のSM90(#229)およびSM100(#285、コミット96fbced)のMQA同期修正と同様に、アーキテクチャごとの同期修正が適用されるまで、SM120ではFP4インデクサーパスを避けてください。
トラブル対応mega_moeカーネル実行時に発生する「AttributeError: module 'deep_ep' has no attribute 'ElasticBuffer'」の修正方法
このエラーは、ElasticBuffer が DeepEP v2 で導入された新しい API であり、DeepEP v1 には存在しないために発生します。これを修正するには、DeepEP のインストールを v2 にアップグレードしてください(https://github.com/deepseek-ai/DeepEP/pull/605 を参照)。DeepEP を更新すると、deep_ep.ElasticBuffer 属性が利用可能になり、mega_moe カーネルはこのエラーなしで実行されるはずです。
タグ
はじめ方
ソフトウェアをインストール
ダウンロードしたインストーラをダブルクリックし、指示に従ってください
ハードウェアが SM90 または SM100 アーキテクチャの NVIDIA GPU(H100、H800、B200 など)であることを確認し、CUDA 12.9+ と PyTorch 2.3+ をインストールしてください
git clone --recursive を実行してリポジトリをクローンします。サブモジュールを必ず含める必要がある点に注意してください
プロジェクトディレクトリに移動し、./install.sh を実行してインストールを完了します
- ハードウェアが SM90 または SM100 アーキテクチャの NVIDIA GPU(H100、H800、B200 など)であることを確認し、CUDA 12.9+ と PyTorch 2.3+ をインストールしてください
- git clone --recursive を実行してリポジトリをクローンします。サブモジュールを必ず含める必要がある点に注意してください
- プロジェクトディレクトリに移動し、./install.sh を実行してインストールを完了します
SHA-256 チェックサム確認済み
GitHub 公式 Release ページから抽出されたチェックサム
SHA256 チェックサム
5b34ed544d56312b257320343fc98ea9bc704f512d38cfcca35f649ef209ded5このチェックサムは GitHub Release ページから抽出されたものです。ダウンロード後にファイルの整合性を確認してください。
本プラットフォーム上のすべての SHA-256 チェックサムは、プロジェクトの公式 GitHub Release ページから抽出されたもので、一切の改変はありません。GitHub Releases ページで独自に検証できます。
オープンソースの透明性
GitHub ソースを見るアンインストール情報
まず pip uninstall deep_gemm を実行して Python パッケージをアンインストールし、その後クローンしたソースコードディレクトリを削除すればよい。完全にクリーンアップする場合は、実行時に JIT が生成したコンパイルキャッシュディレクトリも併せて削除できる。
追加の依存関係なし
ダウンロード後すぐに使用可能。追加のランタイムは不要です。
問題が発生?以下のFAQを確認
2 FAQs