分布式训练中使用 --local-rank 参数的指南
如果您要进行分布式训练,则需要提供' --local-rank' 参数。该参数用于指定当前进程在所有进程中的排名。在上述的 .sh 文件中,并没有为' --local-rank' 参数提供值,因此您需要根据您的需求来决定是否需要为其提供值。
以下是.sh文件内容:
DATA_PATH=/mnt/disk1/lh/landmark/0823/imagenet
CODE_PATH=/mnt/disk1/lh/code/metaformer # modify code path here
ALL_BATCH_SIZE=512
NUM_GPU=4
GRAD_ACCUM_STEPS=32 # Adjust according to your GPU numbers and memory size.
let BATCH_SIZE=ALL_BATCH_SIZE/NUM_GPU/GRAD_ACCUM_STEPS
cd $CODE_PATH && sh distributed_train.sh $NUM_GPU $DATA_PATH \
--model convformer_b36 --opt adamw --lr 4e-3 --warmup-epochs 20 \
-b $BATCH_SIZE --grad-accum-steps $GRAD_ACCUM_STEPS \
--drop-path 0.6 --head-dropout 0.0 --pretrained convformer_b36_in21ft1k.pth
在您的分布式训练脚本中,您需要使用torch.distributed.launch 或类似的工具来启动多个进程,并为每个进程提供相应的 --local-rank 参数。例如,如果您有 4 个 GPU,则需要启动 4 个进程,并为每个进程设置 --local-rank 值为 0、1、2 和 3。
--local-rank 参数用于以下目的:
- 确定每个进程在所有进程中的排名。
- 帮助进程找到其对应的 GPU 设备。
- 帮助进程加入到分布式通信组。
如果您不提供 --local-rank 参数,则分布式训练脚本可能无法正常工作。请务必根据您的环境和需求提供正确的 --local-rank 参数值。
原文地址: https://www.cveoy.top/t/topic/qzta 著作权归作者所有。请勿转载和采集!