SHOUJIKE

DeepSeek のオープンソース コードの 3 番目の部分: V3/R1 のトレーニングと推論のパワーを提供する DeepGEMM コードベース。

2 月 26 日、DeepSeek は、オープンソースの MLA デコード カーネル FlashMLA と DeepEP コードベースの発表に続き、オープンソース ウィークの 3 日目に DeepGEMM コードベースのリリースを発表しました。

DeepSeekは、DeepGEMMを簡潔かつ効率的なFP8汎用行列乗算(GEMM)用に設計されたライブラリであると説明しています。標準およびエキスパート混合(MoE)のグループ化GEMM演算をサポートし、V3/R1の学習と推論に強力な機能を提供します。CUDAで記述されたこのライブラリは、インストール時にコンパイルを必要とせず、すべてのカーネルは軽量なジャストインタイム(JIT)コンパイルモジュールを使用して実行時にコンパイルされます。

現在、DeepGEMMはNVIDIA Hopperアーキテクチャ演算のみをサポートしています。FP8テンソルコアにおける不正確な累積の問題を解決するため、CUDAコアを用いた2段階累積(プロモーション)方式を採用しています。コードベースは非常に簡潔で、コアカーネル関数は1つだけで、コード行数は約300行です。

軽量設計にもかかわらず、DeepGEMM のパフォーマンスは、さまざまなマトリックス形状にわたって専門家が調整したライブラリに匹敵するか、それを上回ります。

DeepSeek チームは、NVCC 12.8 を使用して、H800 上の DeepSeek-V3/R1 推論で可能なすべての形状 (事前パディングとデコードを含むが、テンソルの並列処理は含まない) をテストしました。
テスト結果によると、DeepGEMMは最大1358 TFLOPSの計算性能と最大2668 GB/sのメモリ帯域幅を達成しました。CUTLASS 3.6に基づく最適化実装と比較すると、最大2.7倍の高速化を実現できます。さらに、グループ化されたGEMM(MoEモデル)では、連続レイアウトとマスクレイアウトにより最大1.2倍の高速化を実現できます。

さらに、DeepGEMM を使用するための環境要件は次のとおりです。

* Hopper アーキテクチャ GPU、sm_90a をサポートしている必要があります

* Python 3.8以上

* CUDA 12.3以上(12.8を推奨)

* PyTorch 2.1以上

* CUTLASS 3.6以上