並列計算(Parallel Computing)とは、複数の演算ユニットを同時に使用して計算を行う手法です。AI・ディープラーニングでは、大量のデータに対する同じ演算の繰り返しや、巨大なモデルの分散処理を並列に実行することで、学習時間の短縮と大規模モデルの実現を可能にしています。
並列計算の種類
並列計算には複数のレベルがあります。チップ内の並列性(GPU内の数千コアによる並列処理)、チップ間の並列性(マルチGPU/マルチノード間でのデータ分割)、命令レベルの並列性(パイプライン処理)などです。AI学習では、これらを組み合わせた多層的な並列化が行われます。
| ひとことで言うと | 複数の演算装置で同時に処理し、全体の時間を短縮する方式。 |
|---|---|
| なぜAIに必要か | AIの計算は独立した小さな計算の集まりで、並列化しやすいため。 |
| 注意点 | 装置間のデータのやりとりが多いと、増やしても速くならない。 |
AI学習の並列化戦略
大規模AI学習では、データ並列(Data Parallelism)、モデル並列(Model Parallelism)、パイプライン並列(Pipeline Parallelism)、テンソル並列(Tensor Parallelism)などの戦略を組み合わせた3D並列化が行われます。GPT-4クラスのモデル学習には数万GPUの並列処理が必要とされます。
1処理を分割独立した単位に分ける
▶
2複数装置に配る同時に実行
▶
3並行して計算待ち時間が重なる
▶
4結果を統合1つにまとめる
並列計算の課題
並列計算のスケーラビリティは、通信オーバーヘッドと同期コストにより制限されます。GPU間・ノード間のデータ転送時間が演算時間に対して無視できなくなると、GPU追加による高速化の効果が減衰します。通信と演算のオーバーラップ、効率的な通信アルゴリズム(Ring AllReduceなど)の設計が重要です。