python -m torch.distributed.launch --nproc_per_node=3 train.py --weights yolov5m.pt --img 640 --epoch 150 --data jm_fire_16.yaml --batch-size 36 --workers 16 --save-period 20
–save-period 20 有的版本是 --save_period 20
此时的batch-size 要能被3整除,否则会报错。
–nproc_per_node = 3 启动三张卡,还能设置具体用那一张卡,若单单使用这个参数,需要机器有几张卡,用几张卡,控制需要几张用几张的话,要用下面的设置方式
此时有一个问题, 若机器只有三张卡,那么一次性分配三张作为训练不会有问题。但是若有多于三张,只想用三张训练,其它卡用作他用,那么,分配的这三张是那三张呢,或者通过怎样的参数来指定的?
看参考这样可以:
178
179 # DP mode
180 if cuda and rank == -1 and torch.cuda.device_count() > 1:
181 model = torch.nn.DataParallel(model)
把device_count 传递进去即可
model = torch.nn.DataParallel(model,device_ids=[0,1,2])
这样只用前三张,也可以用 1,2,3 把第一张流出来供其它程序使用
docker服务遇到的问题,发现docker的推理服务起不来了,报错
docker: Error response from daemon: OCI runtime create failed: container_li
重启容器服务,起不来
重启docker 服务,启动容易仍然报错
nividia-smi -l 少了一张卡, 之前在其它服务器上遇到过这个问题,都是通过重启服服务器解决的。
重启服务器后好使了。
参考指引:
https://pytorch.org/docs/stable/distributed.html?highlight=torch+distributed+launch#module-torch.distributed.launch
https://blog.csdn.net/qq_27009517/article/details/111624855?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-111624855-blog-124482896.pc_relevant_multi_platform_whitelistv3&spm=1001.2101.3001.4242.1&utm_relevant_index=2