法师大人 2023-07-24 15:09 采纳率: 100%
浏览 3
已结题

多卡训练torch.distributed.run出现很多无占用率的进程

多卡训练,为什么每张卡上会有四个进程?
命令是这样的
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.run --nproc_per_node=4 train.py --weight '' --cfg ./models/yolov5s.yaml --data ./data/zwl.yaml --batch-size 16

img

  • 写回答

2条回答 默认 最新

  • 百鸣 2023-07-31 09:57
    关注

    在使用 torch.distributed.run 进行多卡训练时,每张卡上有四个进程的情况通常是由于使用了混合精度训练(Mixed Precision Training)和分布式训练(Distributed Training)所导致的。

    混合精度训练使用了浮点16位(half precision)进行计算,以提高训练的速度和效率。而在分布式训练中,通常会使用一个主进程(master process)和多个工作进程(worker process)来对模型进行分布式训练。

    具体来说,在您的命令中,torch.distributed.run 启动了四个进程,每个进程都被分配到一个 GPU 上进行训练。这四个进程分别是:

    主进程(master process):主要负责协调和监控其他进程的工作,例如启动训练、同步参数等功能。

    数据加载进程(data loading process):用于并行加载数据,并将加载后的数据传输到 GPU。

    模型初始化进程(model initialization process):负责在每个 GPU 上初始化模型的副本。

    训练进程(training process):每个进程在各自的 GPU 上执行训练操作,对模型进行前向传播、反向传播和参数更新。

    这样设计的目的是为了充分利用多张 GPU 进行分布式训练,并提高训练速度和性能。

    在任务完成后,这些进程会自动退出。如果您观察到某些进程没有被充分利用或存在无占用率的情况,可能是由于数据加载、模型初始化或训练过程中的某些瓶颈导致的。您可以通过调整数据加载、模型结构、训练参数等来优化训练过程,以提高 GPU 利用率和训练效果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月6日
  • 已采纳回答 8月29日
  • 创建了问题 7月24日

悬赏问题

  • ¥15 oracle报skip not validate connection
  • ¥15 请问左奇异向量怎么求解呢?
  • ¥60 linux 系统中的wps每次使用退出都产生两个多余文件
  • ¥15 有偿求一款知识付费+流量主小程序开源
  • ¥15 Arcgis pro制图
  • ¥15 vivado综合时间过长
  • ¥15 uniapp时间组件切换语言问题
  • ¥15 求解惑:NPOI在excel中插入图片失败
  • ¥15 寻找基于运营商机顶盒的播放器
  • ¥15 fluent二维平板强迫振动