AI・機械学習
上級

Tensor Parallelismテンソルパラレリズム

大規模言語モデルの推論・学習において、単一層のテンソル演算(行列積等)を複数GPU間で分割して並列実行する手法で、単一GPUのメモリに収まらないモデルの高速処理を実現する

0 回閲覧
0 いいね

Tensor Parallelism(テンソル並列、TP)は、Transformerモデルの各層内の行列演算を複数のGPU間で分割して並列実行する手法である。Megatron-LM(NVIDIA, 2019)で体系化され、2026年現在の大規模LLM推論・学習における標準的な並列化戦略の一つとなっている。Pipeline Parallelism(パイプライン並列、PP)が層単位でモデルを分割するのに対し、Tensor Parallelismは層内のテンソルを列方向・行方向に分割するため、より細粒度な並列化と低レイテンシを実現する。

概要

70B〜405Bパラメータ規模のLLMは、FP16精度でモデル重みだけで140GB〜810GBのメモリを必要とする。単一のNVIDIA H100(80GB VRAM)やA100(80GB VRAM)では到底収まらないため、複数GPUにまたがるモデル分散が必須となる。

Tensor Parallelismでは、Transformerの各層に含まれるAttentionのQKV射影行列やFFN(Feed-Forward Network)の行列を列方向(Column Parallel)と行方向(Row Parallel)に分割する。例えば、TP=4の場合、4096×4096の行列を4つの4096×1024行列に分割し、各GPUが1/4の計算を担当する。各GPU間ではAllReduce通信で部分結果を集約するため、NVLink/NVSwitchなどの高速GPU間通信が性能のボトルネックとなる。

2024年にはNVIDIA H100 NVLink(900GB/s双方向)が標準となり、TP=8までのスケーリングで95%以上の並列効率を達成している。2025年のB200世代ではNVLink 5th Gen(1.8TB/s)によりTP=16も実用的となった。

主な特徴・仕組み

  • Column Parallel Linear: 行列W(d×d)を列方向にTP分割。各GPUがW[:, i*d/TP:(i+1)*d/TP] を保持し、入力X全体との行列積を計算。出力を連結(AllGather)して完全な結果を得る
  • Row Parallel Linear: 行列Wを行方向にTP分割。入力Xも対応する次元で分割し、各GPUで部分行列積を計算。出力をAllReduceで集約
  • Attention Head分割: Multi-Head AttentionのヘッドをTP数で均等分割。TP=4なら64ヘッドを各GPU 16ヘッドずつ担当。GQAモデルではKVヘッド数がTP数の倍数である必要がある
  • 通信オーバーヘッド: 各Transformer層で2回のAllReduce通信(Attention後とFFN後)が発生。TP=8、H100 NVLink環境で層あたり約0.5msのオーバーヘッド
  • メモリ分散: モデル重み、KVキャッシュ、活性化テンソルが全てTP数で分割され、各GPUのメモリ使用量が1/TPに低減
  • Pipeline Parallelismとの組み合わせ: TP×PPのハイブリッド並列化が一般的。TP=4、PP=2で8GPU、TP=8、PP=4で32GPU構成など。TP はノード内(NVLink)、PPはノード間(InfiniBand)に配置するのが通例
  • Expert Parallelism: MoE(Mixture-of-Experts)モデルでは、TPに加えてエキスパート単位の並列化(EP)を組み合わせる。DeepSeek-V3(671B MoE)ではTP=8、EP=4が推奨構成

スペック比較表

並列化手法分割単位通信パターンレイテンシ影響メモリ分散推奨通信帯域
Tensor Parallelism層内テンソルAllReduce(2回/層)小(NVLink前提)1/TPNVLink 900GB/s+
Pipeline Parallelism層単位Point-to-Point中(バブル発生)1/PPInfiniBand 400Gb/s+
Data ParallelismデータAllReduce(1回/ステップ)なし(推論では不使用)複製任意
Expert ParallelismエキスパートAllToAll1/EPNVLink推奨

具体例・対応製品

  • Llama 3.1 405B: TP=8で8x H100 80GB構成。各GPUがモデル重みの約50.6GBを保持。NVLink 4th Gen(900GB/s)でAllReduceレイテンシは約0.3ms/層
  • Llama 3.1 70B: TP=2で2x A100 80GB構成(各35GB)。PCIe 5.0(128GB/s)でも動作するが、NVLinkと比較してスループットが約30%低下
  • DeepSeek-V3 671B MoE: TP=8 + EP=4で32x H100構成。アクティブパラメータ37Bを8GPUで分散、256エキスパートを4グループに分割
  • vLLM: --tensor-parallel-size 4 オプションでTP=4を指定。Ray Clusterとの統合でマルチノードTPにも対応
  • TensorRT-LLM: build.py --tp_size 8 --pp_size 2 でTP=8、PP=2のハイブリッド並列化を構成。NVIDIA Triton経由でデプロイ

選び方・注意点

  1. GPU間通信帯域: TPの効果はGPU間通信速度に直結。NVLink(900GB/s+)ならTP=8まで実用的、PCIe 5.0(128GB/s)ではTP=2が限界。InfiniBand越しのノード間TPは非推奨
  2. TP数の制約: AttentionヘッドがTP数の倍数である必要がある。GQAモデルではKVヘッド数がTP数の倍数であることも必要(例: Llama 3のKVヘッド=8ならTP=1,2,4,8が可能)
  3. レイテンシ vs スループット: TPを増やすとレイテンシは低下するが、通信オーバーヘッドにより効率は段階的に低下。単一リクエストのレイテンシ最小化にはTP最大化、スループット最大化にはTP×PP×DPのバランス調整が重要
  4. コスト効率: 8x H100 NVLink構成(DGX H100)は約$30,000/月(クラウド)。TP=4で十分なモデルサイズなら4x H100構成で半額に抑制可能
  5. 量子化との併用: AWQ/GPTQ 4bit量子化でモデルサイズを1/4に削減し、TP数を減らすことでコスト最適化。70BモデルをTP=1(1x H100)で動作させることも可能

関連用語との違い

Tensor Parallelismは「層内」の行列を分割、Pipeline Parallelismは「層間」でモデルを分割する点が根本的な違い。Data Parallelism(DP)は同一モデルのコピーを複数GPUに配置して異なるデータを処理する手法で、推論よりも学習で主に使用される。Sequence Parallelism(SP)はシーケンス次元を分割する手法で、長シーケンスのLayerNormやDropout演算を並列化する。実践的には TP + PP + SP を組み合わせた3D並列化が大規模モデルの標準構成。

よくある質問(FAQ)

Q1: Tensor Parallelismは何GPUまでスケールしますか? A: NVLink環境ではTP=8(DGX H100/A100の標準構成)が実用上限。NVLink 5th Gen搭載のB200世代ではTP=16まで拡張可能。TP=8超はPipeline Parallelismとの併用を推奨。

Q2: TPとPPのどちらを先に増やすべきですか? A: まずTPを最大化(同一ノード内のGPU数まで)し、それでもメモリ不足ならPPを追加する。TPはレイテンシへの影響が小さく、PPはパイプラインバブルによるオーバーヘッドが発生するため。

Q3: コンシューマGPU(RTX 4090等)でTensor Parallelismは使えますか? A: 技術的には可能だが、NVLink非搭載のためPCIe接続でTP=2程度が現実的。通信ボトルネックでA100比のスループットは50〜70%に留まる。

まとめ

  • Tensor Parallelismは層内テンソルを複数GPUに分割し、大規模LLMの推論・学習を可能にする
  • NVLink高速通信が前提で、TP=8までが実用的な上限(2026年時点)
  • Pipeline Parallelism、Expert Parallelismとの組み合わせで数百〜数千GPUのスケーリングに対応
  • モデルサイズ・GPU構成・通信帯域に応じた最適なTP数の選択が性能とコストを左右する