配置多GPU训练的笔记

编程入门 行业动态 更新时间:2024-10-10 10:25:01

配置多GPU训练的<a href=https://www.elefans.com/category/jswz/34/1770047.html style=笔记"/>

配置多GPU训练的笔记

最近尝试复现一个xview2挑战(xiew2)的冠军项目,这个挑战的目标是基于遥感影像对自然灾害前后建筑物的损坏程度进行定位和评分,官方提供了非常庞大的数据集,原项目代码在Github能找到(xview2_1st_place_solution)。

遇到的坑主要有:

1.APEX安装
项目用到了NVIDIA的APEX库,需要先从Github把这个项目克隆下来(),再进到apex项目里安装。官方给的Linux系统安装方式是:

git clone 
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

问题是安装时对CUDA和Pytorch的版本匹配要求很高,要根据自己的CUDA版本去安装匹配的Pytorch。我的系统安装的是CUDA11.2版本,恰好Pytorch没有对应这个CUDA版本的(我在官网没找到有对应CUDA11.2的,只有10.2和11.3,历史版本也没有11.2),导致安装的时候总是有错误,如果换CUDA又怕对别的项目造成影响。我后来安的11.1版本的torch,找了其他的方法,直接运行安装包。

python3 setup.py install

但是后来运行还是会报警告,可能还有些依赖我没安,好在没影响运行。如果CUDA和Pytorch版本匹配的话可能不存在这些问题了。

2.多显卡训练
关于这个项目的介绍已经有大佬写过一些,见:xView2比赛冠军代码解读。
整体看来,有两个写好的运行文件train.sh和predict.sh,如果代码无需调整,那我们直接运行它们就行当然先要把下载的数据集(train,tier3,test)放在这个项目目录下。但我直接运行train.sh时出现了显存溢出的问题,原本有4张卡,查看显卡状态显示只用了一张卡(nvidia-smi -l 10)。train.sh的内容如下:

echo "Creating masks..."
python create_masks.py
echo "Masks created"echo "training seresnext50 localization model with seeds 0-2"
python train50_loc.py 0
python train50_loc.py 1
python train50_loc.py 2
python tune50_loc.py 0
python tune50_loc.py 1
python tune50_loc.py 2
……

一旦开始训练,即使一个模型出错,后面的也会继续运行。我训练的时候大多是报错了,有两个模型可以训练。然后我改了第一个模型的batchsize=1后也可以运行了,说明原项目的各个模型不是全部一样的设置,没有多卡运行。于是我又查找了怎样多卡并行,对本项目而言,只需要在模型initialize后加一行代码就行:

model = nn.DataParallel(model).cuda()


简单的实例:

from torch.nn import DataParallelmodel = model.cuda()
model = DataParallel(model, list(range(torch.cuda.device_count()))).cuda()# AttributeError: 'DataParallel' object has no attribute XXX
model.module.XXX

其实作者有的模型已经写了这一句,只不过没有全用,我也不知道为什么,很奇怪。只要把每个模型加上这个设置,就可以多卡并行了,也不用减少batchsize。
另外,如果想要指定显卡训练,只需要在Terminal运行的时候前面加入CUDA_VISIBLE_DEVICES=1,2这句,这样就可以只将选中的显卡可检测到。

CUDA_VISIBLE_DEVICES=1,2 sh train.sh

目前只做到train,第一个模型才跑完,用了900分钟,后面预测再做记录。

更多推荐

配置多GPU训练的笔记

本文发布于:2024-03-23 22:51:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743779.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔记   GPU

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!