著者 | ソウミス・チンタラ 編纂者:岳陽 友人のフランソワ・フルーレが上記の質問を提起しました。大規模トレーニングの分野における一般的な知識を3つのパートに分けて簡単にまとめました。
01 10,000 枚の H100 画像に可能な限り最大のニューラル ネットワークとバッチ サイズを適応させるにはどうすればよいでしょうか。1.1 並列戦略
すべての GPU を効率的に使用できるようになるまで、並列戦略を継続的に最適化し、最大限の使用率を実現します。 1.2 チェックポイント/計算と記憶
02 GPU クラスター間でモデルの状態情報を可能な限り効率的に転送します。2.1 コミュニケーション重複戦略:GPU 間通信が必要な場合は、通信プロセスをできるだけ早く開始する必要があります。
2.2 基盤となるネットワーク トポロジを調査して活用する:大量のモデル状態情報(勾配やオプティマイザーの状態情報など)を複数の計算ノード間で転送するのは複雑な作業です。Sync SGDを使用する場合、これらの状態情報を可能な限り迅速に集中的に転送する必要があります。 ネットワークには複数層のスイッチが含まれ、RDMA 機能 (CPU メモリを完全にバイパスして、GPU メモリからネットワーク カードにデータを直接コピーできる) があり、フロントエンド ネットワーク カードとバックエンド ネットワーク カードもあります (フロントエンド ネットワーク カードは NFS などのストレージ システムに接続し、バックエンド ネットワーク カードは GPU をクラスター内の他の GPU に接続します)。 したがって、All-ReduceやScatter/Gatherなどの通信操作を実行する際には、このネットワーク情報を最大限に活用することが重要です。例えば、All-Reduce操作の時間計算量は、Tree-Reduceアルゴリズムを用いることでO(log(n))まで削減できます。同時に、ネットワーク光ファイバー接続ノード間の異なる種類の光ファイバーが定数係数に与える影響も、全体的なレイテンシの削減に非常に重要です。 NCCL のようなライブラリは、基盤となるネットワーク トポロジをインテリジェントに識別し、all-reduce やその他の通信操作を実行するときにそれを活用できます。 このような大規模コンピューティングでは、効果的な負荷分散を実現するために、スイッチやネットワークインターフェースカード(NIC)のパケットルーティングアルゴリズムも調整する必要があります。また、スイッチ(GPUだけでなく)にも大量のHBMメモリが必要です。これは、パケットがキューイングされると、ドロップされないようにどこかでキューイングする必要があるためです。ここで、スイッチレベルのHBMメモリが役立ちます。 03 ハードウェアまたはソフトウェアの障害が発生した場合に、システムをできるだけ早く復元するにはどうすればよいですか?障害は避けられず、GPU、ネットワークカード、ケーブルなど、様々なハードウェアコンポーネントが影響を受けます。障害の中にはすぐに検出できるものもありますが、ノードが時間通りに応答しなくなったことで初めて気付くものもあります(例:NCCLのall-reduce操作がスタックする)。私たちは、クラスターの健全性を監視し、障害のあるノードを可能な限り迅速にクラスターから削除するためのツールをいくつか開発しました。これは決して簡単な作業ではありません。 この規模では、ランダムなメモリビット反転による暗黙的なデータ破損の可能性が高まり、トレーニング損失値が異常に高くなる可能性があります。この問題は小規模システムではまれですが、大規模システムでは頻繁に発生する可能性があります。この問題をソフトウェアレベルで事前に検出することは非常に困難です。一部のハードウェアデバイスには、計算後に検証を行うチェックサム回路が組み込まれており、ビット反転時にハードウェアが割り込みをトリガーできます。しかし、H100および以前のNVIDIA GPUにはこの機能がありません。 これらの障害に対処するには、モデルの状態情報をできるだけ頻繁かつ迅速に保存する必要があります。また、障害発生時には迅速に復旧してトレーニングを続行できる必要があります。通常、モデルの状態情報はCPUメモリ内の別のスレッドに迅速に保存され、CPUメモリからディスクまたはリモートストレージシステムにバックグラウンドでデータが書き込まれます。また、モデルの状態情報はシャードに保存されます(torch.distributedのチェックポイント機能を使用)。つまり、すべてのGPUがモデルの重み全体を保存する必要はありません。各GPUは重みの一部のみを保存すればよく、残りは他のGPUからのシャードチェックポイントを通じて復旧できます。 読んでくれてありがとう! このブログを楽しんで、新しいことを学んでいただければ幸いです。 著者について ソウミス・チンタラ Metaで@PyTorchを共同設立し、リードしています。また、ニューヨーク大学でロボット工学にも取り組んでいます。AIは、アクセスしやすくオープンソースであるほど魅力的です。 終わり 今週のインタラクティブコンテンツ🍻 分散トレーニング環境を初めて構築した時のことを覚えていますか?初心者に何かアドバイスはありますか? オリジナルリンク: https://soumith.ch/blog/2024-10-02-training-10k-scale.md.html |