バッチ サイズが 1 または 2 で 8 つの GPU がある場合、torch.distributed.launch はどのようにして各 GPU にデータを割り当てますか?モデルを torch.nn.Parallel.DistributedDataParallel に変換しました。
model = DistributedDataParallel(model,
device_ids=[args.local_rank],
output_device=args.local_rank,
find_unused_parameters=True,
)
ただし、ドキュメントには DistributedDataParallel と記載されています:
指定されたモジュールのアプリケーションを並列化します。
チャンク化により、指定されたデバイス間で入力を分割します。
バッチディメンション。
私の質問は、バッチ サイズが GPU の数より小さい場合、どのように処理されるのでしょうか?
------------------------
そうではありません。 DataParallel とは異なり、設定するバッチ サイズは GPU ごとに異なります。バッチで 8 つの GPU がある場合サイズ 1 の場合、有効バッチ サイズは 8 になります。
2
ご返信いただきありがとうございます。ドキュメントが古いということですか?
– アミール
2020 年 9 月 3 日 14:05
1
@Amir 彼らは「有効なバッチサイズ」を意味していたと思います。 DDP のドキュメントはわかりにくいと常々思っていました。重要なのは、GPU ごとにメインの Python プロセスが 1 つあり、それぞれがデータのロードと損失の計算を実行し、DistributedDataParallel と DistributedSampler を通じてのみ通信することを認識することです。
– hkchengrex
2020 年 9 月 3 日 14:09