異種ハードウェアは、分散学習における最大の悩みの種なのに、誰も話題にしません。RTX 3090と4090が混在し、VRAM容量も異なる(12GBと24GB)、ネットワーク速度もまちまちで、さらに1台の厄介なノードが全体のボトルネックになっているクラスターを想像してみてください。

ほとんどの学習フレームワークは、均質な環境を前提としています。単純な負荷分散を行い、全体同期を行うため、ハードウェアの仕様にばらつきがあると行き詰まります。現実のオープンソース開発者は、クラスターの面倒を見続けたり、ワークロードを手動で分割したり、ひどいGPU使用率を受け入れたりせざるを得ません。

根本的な問題は、フレームワークがすべてのノードを同等に扱うことです。しかし、3090に4090と同じバッチサイズを割り当てるべきではありません。ネットワーク接続が遅い場合は、非同期の勾配更新が必要です。メモリに制約のあるノードには、異なるモデルシャーディング戦略が必要です。

だからこそ、DeepSpeed、Megatron、分散PyTorchのようなプロジェクトも、異種環境では依然として扱いにくく感じられます。コミュニティの計算資源や、複数世代のGPUが混在する環境という、現実の雑然とした状況を想定して設計されていないのです。