PyTorch
より高い効率で学習を行うための様々な標準機能・外部ライブラリが提供されている。以下はその一例である。
それぞれの手法で特徴と適用範囲が異なる。例えばDynamoでは動的条件分岐を扱えるがfx.symbolic_traceでは扱えない。
PyTorchは以下のテンソル並列処理に対応している:
テンソル並列処理 (torch.distributed.tensor.parallel)
また DeepSpeed も DeepSpeed-Inference で推論におけるテンソル並列処理に対応している。
PyTorchは以下のデータ並列処理に対応している:
マルチスレッドデータ並列処理 (torch.nn.DataParallel) - 2022年現在Pythonのグローバルインタプリタロック (GIL) の問題がありスケールしにくい。
マルチプロセス/マルチマシンデータ並列処理 (DDP; torch.nn.parallel.DistributedDataParallel)
完全共有データ並列処理 (FSDP; torch.distributed.fsdp.FullyShardedDataParallel) - FairScale の FSDP を統合した。
前述の FairScale 及び DeepSpeed は、どちらも最適化状態分割 (OSS; ZeRO Stage 1)、最適化および勾配状態分割 (SDP; ZeRO Stage 2)、完全共有データ並列処理 (FSDP; ZeRO Stage 3) の3つに対応している。加えて DeepSpeed は ZeRO Stage 3 よりもノード間通信効率の良い ZeRO++ にも対応している。
その他 DeepSpeed にはデータをCPUメモリやNVMeなどへとオフロードするための ZeRO-Infinity(及びそのサブセットでホストCPUメモリのみ対応の旧来の ZeRO-Offload)も搭載されている。また DeepSpeed は学習だけでなく推論でのデータオフロードにも対応している(DeepSpeed ZeRO-Inference)。