当前位置:网站首页>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!
边栏推荐
- 学习探索-网站中引入百度统计
- localhost,127.0.0.1,本机IP
- R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,nrow参数指定行的个数、byrow参数指定按照列顺序排布图
- SAP 电商云 Spartacus UI 页面布局的设计原理
- LeetCode 0168. Excel表列名称
- LeetCode 0167. 两数之和 II - 输入有序数组
- R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
- 小程序+自定义插件的混合模式
- Copycat CNN: Stealing Knowledge by Persuading Confession with Random Non-Labeled Data阅读心得
- 软件基础的理论
猜你喜欢
随机推荐
Json的FastJson与Jackson
R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
】 【 LeetCode daily one problem - 540. The order of a single element of the array
Catering Supply Chain Management System
Boost库学习笔记(一)安装与配置
消灭异步回调,还得是async-await
taro 滚动组件ScrollView
抖音最重要的接口——item_search_video-根据关键词获取视频列表
最小区间覆盖
并发编程原理学习-reentrantlock源码分析
Nacos集群搭建
SRM Supplier Collaborative Management System Function Introduction
mysql学习笔记——利用动态SQL和Session变量实现一个公式或者计算器
What does the product system of a digital financial enterprise look like?
SAP 电商云 Spartacus UI 页面布局的设计原理
容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据
R语言glm函数使用频数数据构建二分类logistic回归模型,分析的输入数据为频数数据(多个分类指标对应的阴性样本和阳性样本的频数数据)、weights参数指定频数值
浅谈运用低代码技术如何实现物流企业的降本增效
小满nestjs(第一章 介绍nestjs)
NLP未来,路在何方?从学术前沿和业界热点谈起