关于pytorch多GPU训练实例与性能对比分析
2019-08-19 15:07
2456 查看
以下实验是我在百度公司实习的时候做的,记录下来留个小经验。
多GPU训练
cifar10_97.23 使用 run.sh 文件开始训练
cifar10_97.50 使用 run.4GPU.sh 开始训练
在集群中改变GPU调用个数修改 run.sh 文件
nohup srun --job-name=cf23 $pt --gres=gpu:2 -n1 bash cluster_run.sh $cmd 2>&1 1>>log.cf50_2GPU &
修改 –gres=gpu:2 即可
Python 文件代码修改
parser.add_argument('--batch_size', type=int, default=96*2, help='batch size')
修改对应 batch size 大小,保证每块GPU获得等量的训练数据,因为batch_size的改变会影响训练精度
最容易实现的单GPU训练改为多GPU训练代码
单GPU:logits, logits_aux = model(input)
多GPU:
if torch.cuda.device_count()>1:#判断是否能够有大于一的GPU资源可以调用 logits, logits_aux =nn.parallel.data_parallel(model,input) else: logits, logits_aux = model(input)
缺点:不是性能最好的实现方式
优点:代码嵌入适应性强,不容易报错
性能分析
该图为1到8GPU训练cifar10——97.23网络的实验对比
可以看到单核训练600轮需要53小时、双核训练600轮需要26小时、四核16、六核14、八核13。
在可运行7小时的GPU上的对比实验:单核跑完83轮、双核跑完163轮、四核跑完266轮
结论:性价比较高的是使用4~6核GPU进行训练,但是多GPU训练对于单GPU训练有所差异,训练的准确率提升会有所波动,目前发现的是负面的影响。
以上这篇关于pytorch多GPU训练实例与性能对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- pytorch使用指定GPU训练的实例
- 关于VS2012自带的 性能分析 工具使用实例(图文介绍)
- pytorch多GPU训练以及多线程加载数据
- PyTorch使用cpu调用gpu训练的模型
- java原生序列化和Kryo序列化性能实例对比分析
- pytorch 多GPU训练
- 关于VS2012自带的 性能分析 工具使用实例(图文介绍)
- 关于VS2012自带的 性能分析 工具使用实例(图文介绍)
- JS常用的几种数组遍历方式以及性能分析对比实例详解
- 关于使用PyTorch设置多线程(threads)进行数据读取而导致GPU显存始终不释放的问题
- 关于侯垒的自增字段和GUID字段性能对比文章的一些自己的分析(没有测试,纯粹分析)
- 关于若干数据库数据插入性能的对比分析
- 文件拷贝, 使用 BIO,NIO的对比,四种写法性能分析。
- 微信小游戏 - 小游戏 vs H5 游戏性能对比和分析
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)
- 关于RDS只读实例延迟分析
- list 、set 、map 粗浅性能对比分析
- ArcSDE性能分析-关于服务器的选型和并发用户预估
- pytorch 7 optimizer 优化器 加速训练
- php curl中gzip的压缩性能测试实例分析