1. Pytorch 分散トレーニング
Pytorch はマルチマシンおよびマルチカード分散トレーニングをサポートします. 分散トレーニングに参加するマシンは Node で表され (Node は物理的なマシンや Docker などのコンテナーに限定されません. Node ノードはマシンです), Node は次のように分割されます.マスター ノードとスレーブ ノードは 1 つだけで、マスター ノードと複数のスレーブ ノードがあります. 分散トレーニングに参加している 2 台のマシンがあり、各マシンに 4 つのグラフィックス カードがあると仮定します. 2 台のマシンでそれぞれ次のコマンドを実行します (yolov5 トレーニングを実行中)例として):
マスター ノードは次のコマンドを実行します。
python -m torch.distributed.launch \
--nnodes 2 \
--nproc_per_node 4 \
--use_env \
--node_rank 0 \
--master_addr "192.168.1.2" \
--master_port 1234 \
train.py \
--batch 64 \
--data coco.yaml \
--cfg yolov5s.yaml \
--weights 'yolov5s.pt'
スレーブ ノードは次のコマンドを実行します。
python -m torch.distributed.launch \
--nnodes 2 \
--nproc_per_node 4 \
--use_env \
--node_rank 1 \
--master_addr "192.168.1.2" \
--master_port 1234 train.py