调参大师
常见error
- check‘optimizer = torch.optim.Adam(params’的params的写法,不同模态叠加时候,params不同
- 当loss震荡,比较锯齿不平滑,设置小一点lr:optimizer = torch.optim.Adam(params, lr=0.00001)
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous-CSDN博客
wandb
调参
- 只是把 lr 从 1 e-6 改成 1 e-5,就跑了 80 个 epoch 就开始报 nan 的 loss。 ——方法是把 batch 调大
- loss 下降波动比较毛刺的时候,将 lr 调小,也不行,可能下降更慢
- 可以scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode=’min’, factor=0.1, patience=10, min_lr=1e-8),
- 调小epoch size
- 最详细最清晰的epoch、batchsize和iteration概念辨析_batch size和epoch-CSDN博客
- 数据量大了,learning rate 要调整小。
- batch size 非常大所有数据一次性传,效果好了
- 模型实验代码技巧_模型设置seed-CSDN博客 求导监测
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# 正向传播开启自动求导异常侦测
torch.autograd.set_detect_anomaly(True)
# 查看参数梯度和更新情况
for name, parms in model.named_parameters():
print("更新前/后")
print('-->name:', name)
print('-->para:', parms)
print('-->grad_requirs:', parms.requires_grad)
print('-->grad_value:', parms.grad)
# 反向传播求导侦测
from apex import amp
# from torch.cuda import amp
with torch.autograd.detect_anomaly():
if use_amp:
with amp.scale_loss(loss, optimizer) as scaled_loss:
scaled_loss.backward()
else:
loss.backward(retain_graph=True)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 chiblog!
评论