Des*_*wal 6 nvidia apex deep-learning torch pytorch
因此,查看AMP:普通网络的自动混合精度训练教程,我发现有两个版本,Automatic并且GradScaler. 我只是想知道是否建议/有必要GradScaler在培训中使用它,因为文档中写道:
\n\n当使用混合精度进行训练时,梯度缩放有助于防止小幅度梯度冲至零 (\xe2\x80\x9cunderflowing\xe2\x80\x9d)。
\n
scaler = torch.cuda.amp.GradScaler()\nfor epoch in range(1):\n for input, target in zip(data, targets):\n with torch.cuda.amp.autocast():\n output = net(input)\n loss = loss_fn(output, target)\n\n scaler.scale(loss).backward()\n scaler.step(opt)\n scaler.update()\n opt.zero_grad()\nRun Code Online (Sandbox Code Playgroud)\n另外,查看PyTorch 的 NVIDIA Apex 文档,他们将其用作,
\nfrom apex import amp\n\nmodel, optimizer = amp.initialize(model, optimizer)\n\nloss = criterion(\xe2\x80\xa6)\nwith amp.scale_loss(loss, optimizer) as scaled_loss:\n scaled_loss.backward()\noptimizer.step()\nRun Code Online (Sandbox Code Playgroud)\n我认为这也是GradScaler如此,所以我认为这是必须的。有人可以帮我解决这里的查询吗?
dx2*_*-66 11
简短的回答:是的,如果没有GradScaler().
使用 FP16 存在三个基本问题:
autocast()处理这个。GradScaler()照顾这个。autocast()上下文管理的。| 归档时间: |
|
| 查看次数: |
5970 次 |
| 最近记录: |