单机单卡和单机多卡训练
本章节介绍通过环境变量设置资源信息,启动训练任务,包含单机单卡和单机多卡场景。
前提条件
使用该方案启动训练任务,需要设置如下环境变量。详细的配置环境变量的方法可参考little-demo的配置文件;关于环境变量的说明可参见配置环境变量。
CM_CHIEF_IP={host_ip} CM_CHIEF_PORT=60000 CM_CHIEF_DEVICE=0 CM_WORKER_IP={host_ip} CM_WORKER_SIZE=8
操作步骤
- 可选:如果需要自定义卡的数量,需要修改local_rank_size=自定义卡的数量,CM_WORKER_SIZE=local_rank_size * 训练节点数。
- 自定义卡的数量≤容器(或进程)中可见的卡的数量。
- 若是以特权模式启动的容器,容器中可见卡的数量=环境中卡的总数;若是以非特权模式启动的容器,容器中可见卡的数量 = 启动容器时实际挂卡的数量。
- 若是要进一步控制训练进程中可见卡的数量,可通过环境变量ASCEND_RT_VISIBLE_DEVICES来指定当前容器中可见的卡哪些对当前进程可见。该环境变量通常可指定参与训练的Device。
- 若是当前进程可见卡的数量为8,支持的自定义卡数量包括1、2、4、8。
下面的示例以环境中可见8卡为例,卡逻辑ID列表为[0,1,2,3,4,5,6,7]
- local_rank_size = 1,则export CM_CHIEF_DEVICE=[0,1,2,3,4,5,6,7]的任一卡号。
- local_rank_size = 2,取值说明如下:
连续用卡
export CM_CHIEF_DEVICE=0
表示0、1卡参与训练
export CM_CHIEF_DEVICE=4
表示4、5卡参与训练
非连续用卡
export ASCEND_RT_VISIBLE_DEVICES=1,3,5,7
如果创建容器的时候是连续卡,要使用非连续卡,此时需要设置该环境变量。
此时环境可见卡的逻辑ID列表[1,3,5,7]
export CM_CHIEF_DEVICE=0
表示1、3卡参与训练
export CM_CHIEF_DEVICE=1
表示3、5卡参与训练
- local_rank_size = 4,取值说明如下:
- export CM_CHIEF_DEVICE=0(表示0、1、2、3卡参与训练)
- export CM_CHIEF_DEVICE=4(表示4、5、6、7卡参与训练)
- local_rank_size = 8,取值说明如下:
Rec SDK TensorFlow默认使用8卡训练,16卡使能需要执行以下命令。
1 2 3 4
for pdev in `lspci -vvv|grep -E "^[a-f]|^[0-9]|ACSCtl"|grep ACSCtl -B1|grep -E "^[a-f]|^[0-9]"|awk '{print $1}'` do setpci -s $pdev ECAP_ACS+06.w=0000 done
- 直接在启动命令后传入配置Master节点的Host侦听IP,命令格式如下。
bash run.sh main.py {host_ip}
正常开始执行,打印信息参考如下。
ip: {host_ip} available. The ranktable solution is removed. CM_CHIEF_IP={host_ip} CM_CHIEF_PORT=60000 CM_CHIEF_DEVICE=0 CM_WORKER_IP={host_ip} CM_WORKER_SIZE=8 ASCEND_VISIBLE_DEVICES=0-8 py is main.py use horovod to start tasks ...
执行完成,日志信息显示参考如下。
1 2 3
ASC manager has been destroyed. MPI has been destroyed. Demo done!
父主题: 启动模型训练