python - torch.distributed.launch が各 GPU にデータを割り当てる方法は?

okwaves2024-01-25  11

バッチ サイズが 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

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。