炼丹bug记录

1. test或者valid时候,显存爆炸,

怀疑没有清空计算图或者梯度还存着

在循环前面, with torch.no_grad():

 

2. 训练 开启bn和dropout: model.train()

测试关闭 bn和dropout: model.eval() 

 

3。 训练加速方法

https://www.zhihu.com/question/274635237/answer/756144739

apex或者 新版pytorch的 混合精度训练

我自己用过的:

dataparellel或者 DistributedDataParallel 

dalaloader设置num_workers 设为gpu数量的4倍, pin_memory= True,  drop_last, .cuda(non_blocking= True)

bn<8 可能太小, 不稳定

开启 torch.backends.cudnn.benchmark= True

主要: gpu利用率低下,减少gpu cpu之间的数据传输

.cpu()  .cuda()  .item() .numpy()

可以 卷积等的 inplace= true

梯度设none而不是0: .zero_grad(set_to_None= True) 而不是.zero_gard()

 

关于 dataparellel:

设置devices_ids=[0,1,2...]

设置 每个batch的数据 模型都to(device)

设置optimizer dataparellel

设置保存model 和optimizer的module

设置 optimizer.module.step()

和nn.DataParallel说再见

https://zhuanlan.zhihu.com/p/95700549

Pytorch DistributedDataParallel简明使用指南

https://zhuanlan.zhihu.com/p/368916180

pytorch多gpu DataParallel 及梯度累加解决显存不平衡和显存不足问题

https://github.com/Link-Li/Balanced-DataParallel

https://blog.csdn.net/qq_44846512/article/details/115207166?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control

4.PyTorch中的contiguous

https://zhuanlan.zhihu.com/p/64551412

r2d2中的 x.continuous().cuda()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值