【解决方案】yolov8&yolov10多卡训练报错
yolov10
YOLOv10: Real-Time End-to-End Object Detection
项目地址:https://gitcode.com/gh_mirrors/yo/yolov10
免费下载资源
·
【解决方案】yolov10多卡训练报错
yolov8或者yolov10多卡训练存在以下报错
问题描述1:
subprocess.CalledProcessError: Command ...... returned non-zero exit status 1
解决方案1:
控制GPU上的进程数,其中nproc_per_node
为分配GPU的数量
python -m torch.distributed.run --nproc_per_node=2 train.py --device 2,3 # 官方方法
或者
python -m torch.distributed.launch --nproc_per_node=2 train.py # 常用方法
SyncBatchNorm
python -m torch.distributed.run --nproc_per_node 2 train.py --sync-bn
> 可以提高多 GPU 训练的精确度,但会大大降低训练速度。它只适用于多 GPU 分布式数据并行训练。最好在每个 GPU 的batch-size 较小(<= 8)时使用。
问题描述2:
Setting OMP_NUM_THREADS environment variable for each process to be 1 in default
解决方案2:
环境变量中 OMP_NUM_THREADS 的默认值为1,根据需求重新配置线程数
- 1.临时设置(终端当前会话中有效)
export OMP_NUM_THREADS=2
- 2.永久设置(编辑.bashrc文件):
cd ~ vim .bashrc export OMP_NUM_THREADS=2 # 在最后一行加上 source ~/.bashrc
问题描述3:
RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling cublasSgemv(handle, op, m, n, &alpha, a, lda, x, incx, &beta, y, incy)
解决方案3:
更换loss.py
的pred_dist
计算
# pred_dist = pred_dist.view(b, a, c // 4, 4).transpose(2,3).softmax(3).matmul(self.proj.type(pred_dist.dtype))
pred_dist = (pred_dist.view(b, a, c // 4, 4).softmax(2) * self.proj.type(pred_dist.dtype).view(1, 1, -1, 1)).sum(2)
问题描述4:
UserWarning: floordiv is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').index = index // nc
解决方案4:
调整ops.py
的index除法取整运算
GitHub 加速计划 / yo / yolov10
41
5
下载
YOLOv10: Real-Time End-to-End Object Detection
最近提交(Master分支:1 个月前 )
6fbaf42b - 3 个月前
cd2f79c7
5 个月前
更多推荐
已为社区贡献4条内容
所有评论(0)