AI・機械学習
上級

PyTorch FSDP(フルシャードデータ並列)(パイトーチエフエスディーピーフルシャードデータヘイレツ)

PyTorchネイティブの完全シャードデータ並列学習ライブラリ。モデルパラメータ・勾配・オプティマイザ状態をGPU間で完全分散し、DeepSpeed ZeRO Stage 3相当のメモリ削減を実現。LLaMA/Mistral系モデルの学習で広く採用されている。

0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
pytorch
distributed-training
llm-training
meta-ai
memory-optimization

PyTorch FSDP(フルシャードデータ並列)

FSDPはMeta AI(FAIR)が開発しPyTorch 1.12でコア統合した完全シャードデータ並列ライブラリ。データ並列の各レプリカがモデル全体のコピーを持つ従来DDPと違い、FSDPはモデルを「シャード(断片)」に分割して各GPUに分散保持する。デバイスメッシュ全体でパラメータ・勾配・オプティマイザ状態が完全分散され、DeepSpeed ZeRO Stage 3と同等のメモリ削減を実現する。

FSDP vs DDP

DDPは全GPU同一パラメータを複製し、勾配をAllReduceで集約。FSDPはN分割でメモリをNx削減するが、通信としてReduceScatter+AllGatherの組み合わせが必要になる。FSDPのセットアップはDDPより複雑だが、数十億パラメータ以上のモデルではFSDPの方が実用的だ。

FSDP2(PyTorch 2.x)

PyTorch 2.2以降のFSDP2はAPIを大幅刷新。per_parameter_fsdpで粒度細かい制御が可能になり、パラメータごとに異なるシャーディング戦略を適用できる。torch.compileとの相性も改善し、学習速度が向上した。

シャーディング戦略

from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
from torch.distributed.fsdp import ShardingStrategy

# 完全シャード(ZeRO-3相当)
model = FSDP(model, sharding_strategy=ShardingStrategy.FULL_SHARD)

# ハイブリッド(ノード内DDP + ノード間FSDP)
model = FSDP(model, sharding_strategy=ShardingStrategy.HYBRID_SHARD)

HYBRID_SHARDはノード内(NVLink接続GPU群)でシャード、ノード間(InfiniBand)でDDPという階層構造。NVLinkの高帯域を生かしつつノード間通信量を削減する実用的な設定だ。

LLaMA/Mistral学習での採用

Meta公式のLLaMA-2学習コードがFSDPを使用したことで業界標準化が加速。Hugging Face accelerateライブラリのFSDPバックエンド対応により、Transformersモデルをほぼコード変更なしでFSDP学習できる環境が整った。2024〜2025年はllamafactory、LitGPT、torchtuneなどFSDP採用の学習ライブラリが主流になっている。

メモリ効率の実例

LLaMA-3 8Bをフルファインチューニングする場合、DDPのBF16では8GPU×16GB=128GB VRAM必要。FSDP Stage3のBF16では8GPU×約20GB(オーバーヘッド含む)、activation checkpointing組み合わせで8GPU×約12GBまで削減できる。activation checkpointingとの組み合わせで実用的な8×A100(80GB)構成での100B規模モデル学習が実現する。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/6