当前位置:网站首页>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!
边栏推荐
- 重新审视分布式系统:永远不会有完美的一致性方案……
- WPF 修改 ItemContainerStyle 鼠标移动到未选中项效果和选中项背景
- 华硕win11安全启动如何开启
- 全球电子产品需求萎靡:三星越南工厂大幅压缩产能,减少工人工作日
- yarn detailed introductory tutorial
- 域名哪家便宜?怎么买便宜域名?
- Qt自动补全之QCompleter使用
- RecyclerView 缓存与复用机制
- 正则过滤字符串中 script 标签
- R语言使用ggpubr包的ggsummarystats函数可视化柱状图(通过ggfunc参数设置)、在可视化图像的下方添加描述性统计结果表格、palette参数配置柱状图及统计数据的颜色
猜你喜欢
随机推荐
移动平台助力推进智慧型科研院所信息化建设
智慧场馆的无人值守怎么做?
《机器学习的随机矩阵方法》
R语言ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用ggarrange函数将表格数据和可视化图像组合起来(表格数据在可视化图像下方)
数字化金融企业的产品体系长啥样?
码蹄集 - MT3029 - 新月轩就餐
泰坦尼克号沉船数据之美——起于悲剧,止于浪漫
浅谈运用低代码技术如何实现物流企业的降本增效
SRM Supplier Collaborative Management System Function Introduction
RecyclerView 缓存与复用机制
el-date-picker 设置时间范围
How to convert an int attribute into a string in the json format returned by the Go language gin framework?
要有遥不可及的梦想,也要有脚踏实地的本事
】 【 LeetCode daily one problem - 540. The order of a single element of the array
R语言glm函数使用频数数据构建二分类logistic回归模型,分析的输入数据为频数数据(多个分类指标对应的阴性样本和阳性样本的频数数据)、weights参数指定频数值
R语言缺失时间序列的填充及合并:补齐时间序列数据中所有缺失的时间索引、使用merge函数合并日期补齐之后的时间序列数据和另外一个时间序列数据(补齐左侧数据)
软件基础的理论
码蹄集 - MT2165 - 小码哥的抽卡之旅1
麒麟信安石勇博士荣获openEuler社区年度开源贡献之星
The use of QCompleter for Qt auto-completion