静态图允许几种类型的优化,这取决于图形的类型和您运行的环境。
静态图优化的简单示例是重用现有变量内存的选项,因此节省了昂贵的内存分配(有关使用MXNet的更多详细信息,请参阅此处: https://mxnet.incubator.apache.org/architecture/note_memory.html )。
另一个简单的例子是将多个运算符组合成一个运算符的能力,尤其是在GPU或其他特定的硬件优化环境中,这些环境允许“编译”代码以使用硬件加速选项。在这种情况下,考虑在“编译”时间中多花一点钱并加快执行时间,通常是深度学习培训的明智之举。当你在许多epocha上运行大量数据的训练时,这种权衡是没有意义的,因为执行时间比额外的编译时间(秒或分钟)长得多(小时和天)。
但最强大的是当你允许并行和分布式处理时。如果您有多个GPU或实例来加速您的训练,那么能够实现线性比例对于您可以扩展模型以获得更多数据进行训练,使用更多层和参数以及传递更多时期至关重要。拥有静态图表可以让深度学习框架更有效地优化资源的执行。请参阅此处获取MXNet对多个GPU实例的支持: http://gluon.mxnet.io/chapter07_distributed-learning/training-with-multiple-machines.html 。
更确切地说,速度优势来自“使用图形重写的延迟执行”。
它通常与显式图框架(Theano / TF)相关联,但是如果有足够的工程设计,您可以将它添加到执行模型,如numpy / PyTorch,它们没有显式图形。请参阅Bohrium 例 黑客numpy做重写。
请注意,此功能的存在使得框架对原型设计不太友好,因此如果将其添加到PyTorch,您将会遇到人们在TensorFlow中抱怨的相同问题
就性能而言,这是一个 玩具基准 在TensorFlow中,当您打开图形重写时,显示5倍加速。
我精心设计了一个内存带宽瓶颈的例子,所以图形重写(cwise fusion)很明显会在那里提供显着的速度提升。对于生产LSTM模型谷歌在启动图优化时报告了1.8加速(通过XLA)