テンソル並列(テンソル並列化)とは
Tensor Parallelism / テンソル並列化 / 層内並列
各層内の行列演算そのものを複数デバイスに分割して並列計算する、層内並列とも呼ばれるモデル並列の一手法
概要
テンソル並列は、モデル並列の一種で、層単位ではなく各層内部の行列演算(重み行列)を複数のGPUに分割して並列計算する手法。Transformerの場合、Self-Attentionの各ヘッドやMLP層の行列積を列方向・行方向に分割し、各デバイスが部分的な計算を担当したうえで、必要な箇所でAll-Reduceなどの集団通信をして結果を合成する。 層単位で分割するパイプライン並列と異なり、1つの層の計算自体を複数デバイスで同時に処理するため、デバイス間の通信頻度は高くなるが、パイプラインバブルのような待機時間は生じにくい。Megatron-LMで採用され、データ並列・パイプライン並列と組み合わせたハイブリッド並列がLLMの学習で標準的に用いられる。 2019年にNVIDIAが発表した論文「Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism」で提案された。
利点
欠点
- 層内の分割ごとに通信が発生するため、デバイス間通信の頻度・帯域要求が高い
- 高速なデバイス間接続(NVLinkなど)がない環境では通信オーバーヘッドが性能を制約しやすい