这篇博文简单介绍下深度学习框架的内存优化方式,主要参考资料1,也就是MXNet的官方文档。内存优化方式主要包括:in-place operation和memory sharing两种,二者在本质上没有太大差别,同时这两种也是MxNet主要采用的内存优化方式,下面的截图均来自参考资料1,接下来基于计算图来讲解。
1、in-place operation
in-place operation的示意图如下。这里有3层sigmoid,每个sigmoid的结果都放在同一个内存中,这是因为在得到第2个sigmoid的结果C后,第1个sigmoid的结果B就没有用了,所以可以直接覆盖。
但是这种in-place operation需要注意:只有当被覆盖的变量没有用了,才能覆盖。不能覆盖的情况如下图。这里当得到C后,因为B还要被另一个节点所依赖,所以C不能用B的内存。