当前位置:网站首页>mmdetection/mmdetection3d多机多卡训练
mmdetection/mmdetection3d多机多卡训练
2022-08-04 17:17:00 【烤粽子】
因为3d检测训练时间太久,所以想要在mmdet3d上开多机,发现加载完标注文件pkl/json之后,卡住了,找到如下报错
其中有个warning :using best-guess GPU, 大概率是rank不对,
找到相关代码:
def init_dist(launcher, backend='nccl', **kwargs):
if mp.get_start_method(allow_none=True) is None:
mp.set_start_method('spawn')
if launcher == 'pytorch':
_init_dist_pytorch(backend, **kwargs)
elif launcher == 'mpi':
_init_dist_mpi(backend, **kwargs)
elif launcher == 'slurm':
_init_dist_slurm(backend, **kwargs)
else:
raise ValueError(f'Invalid launcher type: {
launcher}')
def _init_dist_pytorch(backend, **kwargs):
# TODO: use local_rank instead of rank % num_gpus
rank = int(os.environ['RANK'])
local_rank = int(os.environ["LOCAL_RANK"])
num_gpus = torch.cuda.device_count()
# torch.cuda.set_device(rank % num_gpus)
torch.cuda.set_device(local_rank)
dist.init_process_group(backend=backend, **kwargs)
# device = torch.device("cuda", local_rank)
没什么问题,按照提示修改torch.cuda.set_device(local_rank)
还是不work,
怀疑环境没搞对,增加环境初始化:
def configure_nccl():
import subprocess
os.environ["NCCL_LAUNCH_MODE"] = ""
os.environ["NCCL_IB_DISABLE"] = "0"
os.environ["NCCL_IB_HCA"] = subprocess.getoutput(
"cd /sys/class/infiniband/ > /dev/null; for i in mlx5_*; "
"do cat $i/ports/1/gid_attrs/types/* 2>/dev/null "
"| grep v >/dev/null && echo $i ; done; > /dev/null"
)
os.environ["NCCL_IB_GID_INDEX"] = "3"
os.environ["NCCL_IB_TC"] = "106"
work!
边栏推荐
- 数字化金融企业的产品体系长啥样?
- 华为云数据治理生产线DataArts,让“数据‘慧’说话”
- 8月5日,麒麟信安邀您相约鲲鹏开发者创享日·长沙站!
- 通关剑指 Offer——剑指 Offer II 010. 和为 k 的子数组
- 重新审视分布式系统:永远不会有完美的一致性方案……
- (1), the sequential storage structure of linear table chain storage structure
- 从云计算到函数计算
- To eliminate asynchronous callbacks, it has to be async-await
- 码蹄集 - MT2142 - 万民堂大厨
- 【LeetCode每日一题】——374.猜数字大小
猜你喜欢
移动平台助力推进智慧型科研院所信息化建设
Nacos集群搭建
谷歌开发者社区推荐:《Jetpack Compose 从入门到实战》新书上架,带你踏上 Compose 开发之旅~
【LeetCode Daily Question】——374. Guess the size of the number
Unity Apple登录接入
codeforces每日5题(均1600)-第二十八天
动态数组底层是如何实现的
从云计算到函数计算
.NET云原生应用发展论坛--8月7日邀你一起云上探索
【论文阅读】Decision Transformer: Reinforcement Learning via Sequence Modeling
随机推荐
泰坦尼克号沉船数据之美——起于悲剧,止于浪漫
el-date-picker 设置时间范围
R语言ggpubr包的ggline函数可视化折线图、设置add参数为mean_se和dotplot可视化不同水平均值的折线图并为折线图添加误差线(se标准误差)和点阵图、设置折线和数据点边框颜色
并发编程原理学习-reentrantlock源码分析
北京海淀6家必胜客被暂停外卖订餐 存在食品安全问题
华为云数据治理生产线DataArts,让“数据‘慧’说话”
图扑软件与华为云共同构建新型智慧工厂
水能自发变成“消毒水”,83岁斯坦福教授:揭示冬天容易得流感的部分原因...
LeetCode Question of the Day - 1403. Minimum Subsequence in Non-Increasing Order
The use of QCompleter for Qt auto-completion
开发一套高容错分布式系统
软件基础的理论
44. 通配符匹配 ●●● & HJ71 字符串通配符 ●●
JVM内存和垃圾回收-08.方法区
Selenium Webdriver驱动自管理
R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
基于clipboard.js对复制组件的封装
taro 滚动组件ScrollView
【论文阅读】Decision Transformer: Reinforcement Learning via Sequence Modeling
接口测试项目(非常值得练手)