* 修复多机训练问题 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * 更新并完善分布式训练功能 近期融合V2版本代码时发现之前修改的多机功能并不正确,仍会报错,只不过单机多卡情况下local_rank即相当于rank,感知不出 1. 修复train_ms.py中DDP初始化及.cuda绑定到local_rank上 2. 在default_config.yml配置文件中添加env变量 LOCAL_RANK,否则默认情况下会key error 3. 添加run_MnodesAndMgpus.sh,更新分布式相关说明 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
32 lines
1.1 KiB
Bash
32 lines
1.1 KiB
Bash
#多机多卡训练
|
||
|
||
#--nnodes=1:3 表示 使用一到三台机器 弹性分配资源
|
||
#--nnodes=<最小节点数>:<最大节点数>
|
||
#--nproc_per_node=每台机器上可用的GPU数
|
||
#--rdzv_endpoint=主节点(最先启动的)ip:端口号
|
||
#其他不需要变
|
||
|
||
#注意: 此版本的分布式训练是基于数据并行的,多机多卡相当于开更大的batchsize,此时epoch迭代速度会增加,
|
||
#但由于 该版本的代码中 保存模型是按照global step来计算的,所以会出现的效果就是 : 保存模型的时间不会有明显加速,
|
||
#但每次保存模型时epoch都比之前迭代了更多次,也就是 “更少的步数,实现更好的效果”
|
||
|
||
#*************************
|
||
# torchrun \
|
||
# --nnodes=1:3\
|
||
# --nproc_per_node=2\
|
||
# --rdzv_id=1\
|
||
# --rdzv_backend=c10d\
|
||
# --rdzv_endpoint="inspur1:8880"\
|
||
# train_ms.py
|
||
#****************************
|
||
|
||
#多卡训练
|
||
#nproc_per_node = 机器上可用的GPU数
|
||
|
||
#*************************
|
||
torchrun \
|
||
--nnodes=1\
|
||
--nproc_per_node=2\
|
||
train_ms.py
|
||
#*************************
|