mmpose单机多卡训练问题

当使用单卡训练时运行命令:python tools/train.py ${CONFIG_FILE} [ARGS]是可以跑通的,但是使用官方提供的:bash ./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [PY_ARGS]进行单机多卡训练时却报如下错误:

....
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 82.00 MiB. GPU 0 has a total capacty of 23.64 GiB of which 59.25 MiB is free. Process 727402 has 1.89 GiB memory in use. Including non-PyTorch memory, this process has 21.32 GiB memory in use. Of the allocated memory 20.56 GiB is allocated by PyTorch, and 312.04 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
[2024-02-06 16:12:08,473] torch.distributed.elastic.multiprocessing.api: [ERROR] failed (exitcode: 1) local_rank: 0 (pid: 727401) of binary: 
....
torch.distributed.elastic.multiprocessing.errors.ChildFailedError: 
============================================================
./tools/train.py FAILED
------------------------------------------------------------
Failures:
[1]:time      : 2024-02-06_16:12:08host      : yons-MS-7E06rank      : 1 (local_rank: 1)exitcode  : 1 (pid: 727402)error_file: <N/A>traceback : To enable traceback see: https://pytorch.org/docs/stable/elastic/errors.html
------------------------------------------------------------
Root Cause (first observed failure):
[0]:time      : 2024-02-06_16:12:08host      : yons-MS-7E06rank      : 0 (local_rank: 0)exitcode  : 1 (pid: 727401)error_file: <N/A>traceback : To enable traceback see: https://pytorch.org/docs/stable/elastic/errors.html
============================================================

下面说一下这个问题的解决过程。


首先我是在一台双卡主板上跑模型,一开始只用单卡训练,batch size为50:
在这里插入图片描述
然后看了下官方文档,单机多卡是要运行另一个sh文件,batch size也为64,运行命令报上面那个错误。有显存溢出的错误也有torch.distributed.elastic.multiprocessing.errors.ChildFailedError的错误,我感觉很不解,照理说单卡50多卡应该100都能行。
因为openmmlab封装的比较复杂,这部分的底层源码比较不容易看到,所以一直百度或者github上看别人提的isuue好像也没有发现解决方法。
后面我逐渐下调batch size至32才无报错。看了下此时的显卡使用情况:
在这里插入图片描述
显卡竟然都是占满的,此时我无意间看了一下旁边一台单卡主板(同24g显存)跑的同样模型以及同样的数据集,batch size也为32:
在这里插入图片描述
当我看到546和1092我瞬间明白,原来这里的batch size是指定每张卡的batch size而不是总共的batch size,折磨了我一整天的问题终于解决…


但是我还有一个问题还没有解决,就是我的双卡设备在跑训练时,如果使用单卡batch size能到50,但是如果使用双卡时每张卡的batch size却只能到32,这是为什么呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言--------指针(1)

0.指针&指针变量 32位平台&#xff0c;指针变量是4个字节&#xff08;32bit/84)--------x86 64位平台&#xff0c;指针变量是8个字节&#xff08;64bit/88)--------x64 编号指针地址&#xff1b;我们平常讲的p是指针就是说p是一个指针变量&#xff1b; ************只要…

仰暮计划|“第一次看到电视上播放的电影,那种震撼和喜悦仍然留在我的记忆中”

首 我是陈香妹&#xff0c;家在浙江省温州市瑞安市湖岭镇。 在上个世纪&#xff0c;我亲身经历过许多动荡和改变。那是一个充满希望和艰辛的时代&#xff0c;我曾见证了许多社会的变革和人们的奋斗。 01. 上世纪50年代&#xff0c;我还是一个十多岁的小姑娘&#xff0c;正处…

《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)

文章目录 4.1 用户认证和权限控制4.1.1 基础知识4.1.2 重点案例4.1.3 拓展案例 4.2 防止 SQL 注入和其他安全威胁4.2.1 基础知识4.2.2 重点案例4.2.3 拓展案例 4.3 数据加密和安全备份4.3.1 基础知识4.3.2 重点案例4.3.3 拓展案例 4.1 用户认证和权限控制 进入数据库的安全世界…

MySQL学习记录——유 表的约束

文章目录 1、了解2、空属性3、默认值default4、列描述comment就是注释&#xff0c;desc看不到&#xff0c;show能看到。5、zerofill6、主键7、自增长auto_increment8、唯一键9、外键 1、了解 只有数据类型的约束肯定不够&#xff0c;mysql还有表的约束来进而保证数据合法性。约…

OJ刷题:求俩个数组的交集(没学哈希表?快排双指针轻松搞定!)

目录 ​编辑 1.题目描述 2.C语言中的内置排序函数&#xff08;qsort&#xff09; 3.解题思路 3.1 升序 3.2双指针的移动 3.3 保证加入元素的唯一性 4.leetcode上的完整代码 完结散花 悟已往之不谏&#xff0c;知来者犹可追 …

(十七)springboot实战——spring securtity的授权流程源码解析

前言 本节内容是关于spring security安全框架授权流程的源码分析&#xff0c;spring security的授权流程主要是在FilterSecurityInterceptor过滤器中实现的。我们会通过源码层级的分析&#xff0c;了解清楚spring security的底层是如何实现用户授权的。 正文 1.配置一个请求…

【数据结构】一篇文章带你学会八大排序

一、排序的概念1. 排序的使用&#xff1a;2. 稳定性&#xff1a;3. 内部排序&#xff1a;4. 外部排序︰5. 排序的用途&#xff1a; 二、排序的原理及实现1. 插入排序1.1 直接插入排序1.1.1 直接插入排序在现实中的应用1.1.2 直接插入排序的思想及个人理解1.1.3 直接插入排序的排…

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。 在前面讨论传值和传址的时候&#xff0c;我们就已经开始使用了指针来传递地址。 在正式介绍指针之前&#xff0c;我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道&#xff0c;每个房子都有自己的地址&#…

【Flink状态管理(二)各状态初始化入口】状态初始化流程详解与源码剖析

文章目录 1. 状态初始化总流程梳理2.创建StreamOperatorStateContext3. StateInitializationContext的接口设计。4. 状态初始化举例&#xff1a;UDF状态初始化 在TaskManager中启动Task线程后&#xff0c;会调用StreamTask.invoke()方法触发当前Task中算子的执行&#xff0c;在…

SSH口令问题

SSH&#xff08;Secure Shell&#xff09;是目前较可靠、专为远程登录会话和其他网络服务提供 安全性的协议&#xff0c;主要用于给远程登录会话数据进行加密&#xff0c;保证数据传输的安全。 SSH口令长度太短或者复杂度不够&#xff0c;如仅包含数字或仅包含字母等时&#xf…

【Python4Delphi】学习笔记(一):介绍篇

一、前言&#xff1a; 1. python语言简介&#xff1a; 众所周知&#xff0c;python是目前非常流行的编程语言之一&#xff0c;自20世纪90年代初Python语言诞生至今&#xff0c;它已被逐渐广泛应用于系统管理任务的处理和Web编程。 由于Python语言的简洁性、易读性以及可扩展性…

【深度学习:SegGPT】在上下文中分割所有内容 [解释]

【深度学习&#xff1a;SegGPT】在上下文中分割所有内容 [解释] SegGPT与以前的模型相比如何&#xff1f;SegGPT在实践中是如何工作的&#xff1f;SegGPT培训计划上下文着色上下文集成上下文调整SegGPT 训练参数 如何尝试 SegGPT&#xff1f;使用哪些数据集来训练 SegGPT&#…