618ZXW

速報!Liang Wenfeng が個人的に貢献:DeepSeek の完全にオープンソース化された最適化された並列戦略!

データホエール

データホエールの共有

オープンソースウィーク:4日目、編集者:Datawhale

情報源 | DeepSeek、X、Machine Heart、QuantumBit

先週の金曜日、DeepSeek は、今週は OpenSourceWeek であり、5 つのソフトウェア ライブラリを連続してリリースするとツイートしました。

初日には、Hopper GPU 向けの高効率 MLA デコード コアである FlashMLA をオープンソース化しました。

翌日、彼らは、MoE (ハイブリッド エキスパート) モデルのトレーニングと推論用に特別に設計された最初のオープンソース EP 通信ライブラリである DeepEP をオープンソース化しました。

3 日目には、集中型 GEMM とエキスパート ハイブリッド (MoE) GEMM の両方をサポートする FP8 GEMM ライブラリ、DeepGEMM をオープンソース化しました。

ちょうど今、DeepSeek Open Source Week の 4 日目に、3 つのコード リポジトリが一度にオープン ソース化されました。

DualPipe : V3/R1 トレーニングでの計算と通信オーバーラップに使用される双方向パイプライン並列アルゴリズム。EPLB: V3/R1 用のエキスパート並列ロードバランサー。profile -data : トレーニングおよび推論フレームワークの分析データ。

DualPipeは、計算と通信をオーバーラップさせることで、トレーニングのアイドル時間を短縮します。EPLBはワークロードのバランスをとることで、GPUのアイドル時間をほぼゼロにします。プロファイルデータの公開は、コミュニティが通信と計算のオーバーラップ戦略とその基盤となる実装の詳細をより深く理解するのに役立つことを目的としています。

  • DualPipe リンク: https://github.com/deepseek-a...
  • EPLB リンク: https://github.com/deepseek-a...
  • プロフィールデータリンク: https://github.com/deepseek-a...

DeepSeek の創設者である Liang Wenfeng 氏が DualPipe の GitHub の開発者のリストに含まれていることは注目に値します。

3つのコードライブラリの簡単な説明

専門用語は理解しにくいかもしれないので、ネットユーザーが提供した例え話を見てみましょう。

大規模な言語モデルの学習を、交響楽団の指揮に例えてみましょう。各GPUは演奏家のように、割り当てられた計算タスクを実行し、学習フレームワークは指揮者のように機能し、すべての動作を完璧に同期させます。一般的な構成では、演奏家同士が互いを待つ必要があり、ぎこちない中断が生じる可能性があります。パイプラインバブルと呼ばれるこれらの遅延は、プロセス全体の速度を低下させます。

DualPipeは、弦楽器セクションが演奏中に金管楽器セクションがリハーサルを行うのと同様に、異なるパートを並行して動作させることで、こうした非効率性を排除します。この作業の重複により、ダウンタイムが発生しません。

あるネットユーザーは、「DualPipeは、単なるパイプライン並列処理の実装ではありません。DualPipeが解決する根本的な問題は、標準的なパイプライン並列処理に内在する非効率性です。1F1B(1つ前進、1つ後退)やZero Bubble(ZB1P)といった従来の手法は、パイプラインバブル(各計算ユニットがデータを待機するアイドル時間)の問題を抱えていました。DualPipeは、前進と後退の計算通信フェーズを完全にオーバーラップさせ、こうしたバブルを最小限に抑えることを目指しています。」とコメントしています。

EPLBについては、次のように理解できます。従来のデータ並列処理は、プロジェクト全体のコピーを全員に配布するようなもので、無駄が多く、処理速度も遅くなります。一方、各エキスパートを異なるGPUに配置するエキスパート並列処理(EP)は、負荷分散が可能な場合、はるかに効率的です。EPLBは、このエキスパートの不均衡の問題を解決するために設計されています。単にエキスパートを割り当てるのではなく、GPU利用率を最大化し、通信オーバーヘッドを最小限に抑えるように、エキスパートをインテリジェントに割り当てることが重要です。

DeepSeekは、V3およびR1モデルのリリース時には明らかにされていなかった多くのトレーニングとデプロイメントの詳細を、現在までに明らかにしているようです。これにより、DeepSeekモデルをより有効に活用できるようになるだけでなく、他の大規模モデルの利用にもメリットがもたらされます。

明日は金曜日、オープンソースウィーク最終日です。DeepSeekはR2で締めくくりを迎えることになるのでしょうか?

DeepSeek公式紹介

次に、DeepSeek による 3 つのプロジェクトの公式説明を見てみましょう。

DualPipe: 双方向パイプライン並列アルゴリズム

DualPipeは、DeepSeek-V3技術レポートで導入された革新的な双方向パイプライン並列アルゴリズムです。パイプラインバブルを低減しながら、順方向と逆方向の計算・通信ステージ間の完全なオーバーラップを実現します。計算・通信オーバーラップの詳細については、設定ファイルデータ(https://github.com/deepseek-a...)を参照してください。

スケジュール

DualPipeスケジューリングの例:パイプライン並列(PP)レベル8つと双方向マイクロバッチ20個。逆方向マイクロバッチは順方向マイクロバッチと対称であるため、図ではバッチIDは省略されています。共通の黒枠で囲まれた2つのセルは、計算と通信が重複しています。

一部のネットユーザーは、DualPipe と他の 2 つの方法 (1F1B および ZB1P) の比較表を作成しました。

パイプラインバブルとメモリ使用量の比較

𝐹 は前方データ ブロックの実行時間、𝐵 は完全な後方データ ブロックの実行時間、𝑊 は「重み付け後方」データ ブロックの実行時間、𝐹&𝐵 は 2 つの重なり合う前方データ ブロックと後方データ ブロックの実行時間を表します。

DualPipeは、Jiashi Li、Chengqi Deng、Liang Wenfengによって開発されました。詳細については、GitHubリポジトリをご覧ください。

EPLB:負荷分散アルゴリズム

エキスパート並列処理(EP)を使用する場合、異なるエキスパートを異なるGPUに割り当てます。各エキスパートのワークロードは現在のワークロードに応じて変化する可能性があるため、異なるGPU間で負荷分散を維持することが重要です。DeepSeek-V3の論文で説明されているように、エンジニアは冗長エキスパート戦略を採用し、高負荷のエキスパートを複製しました。DeepSeekは、ヒューリスティックを用いてこれらの複製されたエキスパートを複数のGPUにパッケージ化し、異なるGPU間で負荷分散を確保します。

さらに、DeepSeek-V3 で使用されているグループ限定のエキスパート ルーティングのおかげで、DeepSeek のエンジニアは、同じグループのエキスパートを可能な限り同じノードに配置して、ノード間のデータ転送を削減しました。

再現と展開を容易にするため、DeepSeekはEP負荷分散アルゴリズムをeplb.pyでオープンソース化しました。このアルゴリズムは、推定されたエキスパート負荷に基づいて、バランスの取れたエキスパートの複製と配置スキームを計算します。エキスパート負荷を予測する正確な方法は、このリポジトリの範囲外であることに注意してください。一般的なアプローチは、履歴統計の移動平均を使用することです。

DeepSeekインフラにおけるデータ分析

DeepSeekは、コミュニティが通信計算の重複戦略と低レベルの実装の詳細をより深く理解できるよう、トレーニングおよび推論フレームワークの分析データを公開しました。この分析データはPyTorch Profilerを使用して取得されました。ダウンロード後、Chromeブラウザではchrome://tracing(Edgeブラウザではedge://tracing)にアクセスすることで直接可視化できます。

トレーニングプロファイルデータは、DualPipeにおける前方ブロックと後方ブロックのペアに対するDeepSeekのオーバーラップ戦略を示しています。各ブロックには4つのMoE(Expert Hybrid)レイヤーが含まれています。並列構成はDeepSeek-V3の事前トレーニング設定と一致しており、EP64とTP1のシーケンス長は4Kです。簡略化のため、PP通信は分析に含まれていません。

推論においては、設定ファイルは事前入力にEP32とTP1を使用します(DeepSeek V3/R1の実際のオンライン展開と一致しています)。ヒント長は4K、バッチサイズはGPUあたり16Kトークンです。事前入力フェーズでは、DeepSeekはオーバーラップ計算と全対全通信のために2つのマイクロバッチを使用し、アテンション計算負荷が2つのマイクロバッチ間で均等に分散されるようにします。つまり、同じヒントを2つのマイクロバッチに分割できるということです。

デコードでは、この構成ファイルではヒント長としてEP128、TP1、4K(実際のオンライン展開構成に非常に近い値)を使用し、バッチサイズはGPUあたり128リクエストです。プレパディングと同様に、デコードでもオーバーラップ計算と全対全通信のために2つのマイクロバッチが使用されます。ただし、プレパディングとは異なり、デコード中の全対全通信ではGPU SMが消費されません。RDMAメッセージが発行されると、すべてのGPU SMが解放され、システムは計算が完了するまで待機してから全対全通信を終了します。

DeepSeek はオフピーク割引を提供しており、夜遅くに AI プログラムを実行する場合のコストを節約できます。

DeepSeek は、オープンソースへの取り組みを継続するほか、昨日と一昨日、2 つの重要なニュースを公式に発表しました。1 つ目は、API オープン プラットフォームの再チャージ サービスが復旧したこと、2 つ目は、毎日北京時間の午前 0 時 30 分から午前 8 時 30 分のオフピーク時間帯にオフピーク割引活動が開始されることです。

(夜更かしする人や外国人にとっては朗報?)

公式 API プラットフォーム アドレス: https://platform.deepseek.com...

いいね (3件のいいね!)↓