マルチGPU学習とは、複数のGPUを同時に使用してディープラーニングモデルの学習を行う手法です。単一GPUでは処理しきれない大規模なモデルやデータセットを扱う場合に不可欠であり、数十から数千のGPUを組み合わせた分散学習が大規模AIモデルの開発を支えています。
マルチGPU学習の構成
マルチGPU学習は、1台のサーバー内の複数GPUを使う「シングルノード・マルチGPU」と、複数のサーバーのGPUを使う「マルチノード・マルチGPU」に分かれます。前者はNVLinkで接続され、後者はInfiniBandやEthernetでノード間を接続します。規模が大きくなるほどネットワークの帯域幅と通信効率が重要になります。
| ひとことで言うと | 複数のGPUを同時に使って、学習を高速化する手法。 |
|---|---|
| 主な方式 | データ並列(最も一般的)、モデル並列、テンソル並列、パイプライン並列の組み合わせ。 |
| 注意点 | GPUを2倍にしても速度は2倍にならない。通信のオーバーヘッドがある。 |
並列化戦略の選択
マルチGPU学習では、データ並列、モデル並列、パイプライン並列、テンソル並列などの戦略を適切に組み合わせます。小規模なモデルではデータ並列のみで十分ですが、GPT-4クラスの巨大モデルでは複数の並列化戦略を組み合わせた3D/4D並列化が必要です。
1モデルが1枚に載るかまずここを確認
▶
2載る→データ並列最も簡単で効果的
▶
3載らない→分割テンソル/パイプライン並列
▶
4組み合わせる大規模学習では併用
実装フレームワーク
PyTorchのDistributed Data Parallel(DDP)やFSDP(Fully Sharded Data Parallel)、DeepSpeed、Megatron-LM、JAXのpmap/pmeshなどのフレームワークが、マルチGPU学習の実装を支援しています。これらのフレームワークは、通信の最適化、メモリ管理、フォールトトレランスなどの複雑な処理を抽象化し、開発者が学習ロジックに集中できるようにしています。