深度解读昇腾CANN内存复用技术,降低网络内存占用
内容提要
华为云的昇腾CANN内存复用技术降低AI算法内存占用,提高性能。通过内存复用和Topo优化减少内存浪费。GE内存复用优化技术进一步提高复用率和降低耗时。GE进行Topo优化,降低内存占用。测试结果显示,GE内存复用技术显著降低网络内存占用。
延伸解读
内存复用技术的适用场景与限制
文章指出,内存复用技术适用于静态shape的神经网络,在计算图模式下执行时,由于具备全局视角,可以较完整地记录和管理内存生命周期信息,从而进行更好的复用寻优。而单算子模式下,由于无法预测内存大小且缺乏全局生命周期信息,会导致内存空洞和碎片问题,复用效果受限,大部分场景内存占用只能做到理论最小值的1.2倍以内。因此,该技术更适用于图模式执行的网络。
GE内存复用优化的核心改进
GE内存复用优化采用多级递归合并策略:一级复用只合并相同大小的内存块,减少block数量;二级复用将block按大小排序,依次尝试合并生命周期不重叠的block,从而进一步减少内存占用。这种优化解决了不同大小内存之间的组合复用问题,并能降低复用算法耗时,因为一级复用后block数量可减少一个数量级,有效减少了二级复用的计算量。
Topo优化如何进一步降低内存占用
Topo优化通过调整节点排序来降低内存理论最小值。GE的优化策略包括将输入为长生命周期的节点向后移动,移动到排序最靠前的输出节点前。长生命周期的判断有固定规则和动态规则:固定规则根据输入类型(如Variable、Constant等)判断;动态规则根据Topo排序结果计算输入内存最大生命周期L1和输出内存最小生命周期L2,若L1>L2则可移动。这种调整能确保内存大小降低。
实际测试效果与性能影响
根据文章,在16个实际网络模型的测试中,采用GE内存复用优化技术后,单Stream大部分场景内存占用可逼近理论最小值,且处理耗时较短。与单算子模式相比,图模式内存占用更少,例如相同网络下单算子模式需要15.14G,图模式只需13.8G,内存占用降低约9%。这表明该技术在降低内存占用的同时,对执行性能影响较小。
Q&A
昇腾CANN内存复用技术的主要功能是什么?
昇腾CANN内存复用技术主要用于降低AI算法的内存占用,提高性能。
GE内存复用优化技术如何提高内存复用率?
GE内存复用优化技术通过多级递归判断合并内存块,解决不同大小内存的组合复用问题,从而提高内存复用率。
Topo优化技术在内存复用中起什么作用?
Topo优化技术通过调整节点排序,进一步降低内存的理论最小值,从而减少内存占用。
内存复用算法有哪些类型?
内存复用算法主要包括Binary block复用和Max block复用两种。
GE内存复用技术在测试中表现如何?
在16个网络模型的测试中,GE内存复用技术表现优异,内存占用接近理论最小值。
如何计算内存占用的理论最小值?
内存占用的理论最小值计算方式为:按照内存使用顺序,在每个节点生命周期开始加上内存大小,结束减去内存大小,不考虑内存碎片和空洞等浪费问题。