本文只做本人笔记记录所用!
In-place 操作:被称为就地操作和原地操作
pytorch中原地操作的后缀为_,如.add_()或.scatter_(),
就地操作:是直接更改给定Tensor的内容而不进行复制的操作,即不会为变量分配新的内存(不分配新的对象)。Python操作类似+=或*=也是就地操作。
当然有In-Place就有out-of-place与之对应。
每个 in-place 操作实际上都需要重写计算图的实现。out-of-place只是分配新对象并保留对旧计算图的引用,而 in-place 操作则需要将所有输入的创建更改为代表此操作的函数。
深度学习降低显存使用量,有几种简单的方法可以减少模型占用的GPU显存
(1)更改模型的结构,比如做轻量化模型的设计,结构重参等方法,可以有效降低模型参数量
(2)模型蒸馏,从教师模型(参数量大)-》蒸馏出学生模型(参数量小)
(3)每次训练batchsize设置小一些,也可以减少显存占用量(缺点是模型需要更长的时间训练,且模型性能可能会受损)
在我们pyto