GPU确实快,但是显存太小不够跑别人的代码时,可以把一些操作简化。如:原模型中使用了预训练模型Bert,且对Bert微调,如果实在跑不动,可以改为不微调Bert,先跑起来再说。
一 with torch.no_grad()
https://www.jianshu.com/p/1cea017f5d11
https://blog.csdn.net/weixin_43178406/article/details/89517008
作用:节省内存
关键概念:grad_require requires_grad、grad_fn
说明:
- 什么样的tensor可以调用backward()方法【即可以主动求导】?
grad_fn 不为None的tensor - 什么样的tensor存在grad属性【即被求导】?
grad_require 为 True的tensor - 什么样的tensor的grad_fn不为None?
计算该tensor的表达式中,存在参数的grad_require不为false
注意:
- tensor的grad_require默认为false;grad_require为true时,tensor的grad属性保存上次被求导时的导数值;