ディープシークV3 論文の詳細CUDAの独占を回避する方法!

DeepSeekが最近リリースした2つのモデル、DeepSeek-V3とDeepSeek-R1は、OpenAIの同様のモデルに匹敵する性能をはるかに低いコストで実現している。

海外メディアの報道によると、わずか2ヶ月の間に、2,048個のH800 GPUのクラスタ上で6710億のパラメータを持つMoE言語モデルを学習させたという。

このブレークスルーは、CUDAを使用したのではなく、多数のきめ細かい最適化と、NVIDIAのアセンブリに似たPTX(並列スレッド実行)プログラミングの使用によって達成された。

ディープシーク は、ハードウェアの制約下で総当たり的な計算能力に頼るOpenAIや他の企業とは異なる道を歩まざるを得なかった。パフォーマンスを向上させながら、モデルの消費電力を削減するために、一連の技術革新を行った。

ネットユーザーからの熱狂的なコメントもある:

この世界で、『CUDAは遅すぎる』などと言うようなクレイジーな集団がいるとしたら!

天才ギークがPTXを微調整してGPU性能を最大化

NVIDIA PTX(Parallel Thread Execution)は、同社のGPUのために特別に設計された中間命令セットアーキテクチャであり、高レベルGPUプログラミング言語(CUDA C/C++など)やその他の言語フロントエンドと、低レベルのマシンコード(ストリーミングアセンブリやSASS)との間に位置する。

PTXは、GPUをデータ並列コンピューティング・デバイスとして見せる低レベル命令セット・アーキテクチャであり、CUDA C/C++のような言語では不可能な、レジスタ割り当てやスレッド/スレッド・バンドル・レベルのチューニングといったきめ細かな最適化を可能にします。

PTXがSASSに変換されると、特定の世代のNVIDIA GPUに最適化されます。

V3 モデルをトレーニングする際、DeepSeek は NVIDIA H800 GPU を再設定しました:

132のストリーム・プロセッサ・コアのうち、20コアをデータ圧縮・解凍を中心としたサーバー間通信用に割り当て、プロセッサの接続制限を突破し、トランザクション処理速度を向上させた。

性能を最大化するため、DeepSeekは、スレッド/スレッドバンドルレベルのきめ細かい追加調整を通じて、高度なパイプライン化アルゴリズムも実装した。

これらの最適化は、従来のCUDA開発のレベルをはるかに超えているが、維持するのは極めて難しい。しかし、このレベルの最適化こそが、DeepSeekチームの卓越した技術力を十分に示すものである。

V3の論文では、PTXの詳細について特に言及している。

世界的なGPU不足と米国の規制という二重のプレッシャーの下、ディープシークのような企業は革新的な解決策を模索しなければならなかったからだ。

幸いなことに、彼らはこの分野で大きなブレークスルーを成し遂げている。

ある開発者は、「低レベルGPUプログラミングは正しい方向だ」と考えている。最適化が進めば進むほど、コストが下がり、あるいは追加支出なしに他の進歩に使える性能予算が増える。"

このブレークスルーは市場に大きな影響を与え、一部の投資家は、新モデルが高性能ハードウェアの需要を減少させ、エヌビディアなどの企業の販売実績に影響を与える可能性があると考えている。

しかし、元インテルCEOのパット・ゲルシンガー氏を含む業界のベテランたちは、AIアプリケーションは利用可能なすべてのコンピューティング・パワーをフル活用できると考えている。

ゲルシンガーは、ディープシークによるこのブレークスルーを、大衆市場向けの低価格デバイスにAI機能を組み込む新たな方法と見ている。

PTXとCUDA

では、DeepSeekの登場は、最先端のLLMの開発にもはや大規模GPUクラスターは必要ないということを意味するのだろうか?

グーグルによる膨大なコンピューティングリソースへの投資だろうか、 オープンAIメタとxAIは結局無駄になるのか?AI開発者の一般的なコンセンサスは、そうではないということだ。

しかし、データ処理やアルゴリズムの最適化という点では、まだまだ開拓すべき大きな可能性があることは確かであり、今後さらに革新的な最適化手法が登場することは間違いない。

DeepSeekのV3モデルがオープンソース化されたことで、その詳細はテクニカルレポートで詳細に開示されている。

この報告書には、DeepSeekが行った根本的な最適化が詳細に記されている。要するに、最適化の度合いは "システム全体を一から作り直した "と要約できる。

前述のとおり、H800 GPUを使用してV3をトレーニングする際、DeepSeekはGPUのコア演算ユニット(ストリーミング・マルチプロセッサ・コア、SM)を特定のニーズに合わせてカスタマイズしました。

全132個のSMのうち、特に20個を計算タスクではなく、サーバー間の通信タスクを処理するために割り当てた。

このカスタマイズは、NVIDIA GPUの低レベル命令セットであるPTX(並列スレッド実行)レベルで行われます。

PTXはアセンブリ言語に近いレベルで動作し、レジスタ割り当てやスレッド/スレッドバンドル・レベルのチューニングなど、きめ細かな最適化が可能だ。しかし、このような細かい制御は複雑で、維持するのが難しい。

このため開発者は通常、CUDAのような高水準プログラミング言語の使用を好む。CUDAは、ほとんどの並列プログラミングタスクに対して十分な性能最適化を提供し、低水準最適化の必要性を排除する。

しかし、GPUリソースの効率を最大化し、特定の最適化要件を達成するとなると、開発者はPTXに頼らざるを得ない。

しかし、技術的な障壁は依然として残っている

この点について、インターネットユーザーのイアン・カトレス氏は、"ディープシークがPTXを使用しても、CUDAの技術的障壁がなくなるわけではない "と述べている。

CUDAは高水準言語です。NVIDIA GPUを使ったライブラリやインターフェースの開発を容易にし、迅速な反復開発をサポートします。

CUDAは、基礎となるコード(つまりPTX)を微調整することでパフォーマンスを最適化することができ、基本的なライブラリはすでに完成している。現在、ほとんどのプロダクションレベルのソフトウェアはCUDAで構築されている。

PTXはGPU用の直接理解可能なアセンブリ言語に近い。低レベルで動作し、マイクロレベルでの最適化が可能です。

PTXでプログラミングすることを選択した場合、前述のビルトインCUDAライブラリはどれも使用できないことになる。これは非常に面倒な作業で、ハードウェアとランタイムの問題に関する深い専門知識が必要です。

しかし、開発者が自分たちのやっていることを十分に理解すれば、実行時に優れたパフォーマンスと最適化を実現することができる。

現在、NVIDIAエコシステムの主流は、依然としてCUDAの使用である。

クラウドにモデルを展開し、トークンサービスを販売する企業など、計算負荷から10-20%のパフォーマンスや電力効率をさらに得たい開発者は、確かにCUDAレベルからPTXレベルに最適化している。長い目で見れば価値があるため、彼らは喜んで時間を投資している。

PTXは通常、特定のハードウェアモデルに最適化されており、適応ロジックが特別に書かれていない限り、異なるハードウェア間で移植するのは難しいことに注意すべきである。

さらに、コンピュート・カーネルを手動でチューニングするには、かなりの忍耐力と勇気、そして冷静さを保つ特別な能力が必要だ。なぜなら、プログラムは5,000サイクルごとにメモリー・アクセス・エラーを起こす可能性があるからだ。

もちろん、PTXが本当に必要なシナリオや、このような問題に対処するために十分な報酬を得ている開発者たちに対しては、十分な理解と敬意を表します。

それ以外の開発者は、CUDAまたはCUDA(またはMLIR)をベースにした他の高度なバリエーションを使い続けることをお勧めします。

類似の投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です