Tensorflow 静态图形速度快。动态图形速度慢。是否有任何具体的基准来证明这一点?

Tensorflow 静态图形速度快。动态图形速度慢。是否有任何具体的基准来证明这一点?,tensorflow,torch,tensorflow-gpu,pytorch,mxnet,Tensorflow,Torch,Tensorflow Gpu,Pytorch,Mxnet,我看过一些关于tensorflow和pytorch的基准测试。Tensorflow可能更快,但似乎没有那么快,有时甚至更慢 是否有专门测试静态图和动态图的基准测试证明静态图比动态图快得多?更准确地说,速度优势来自延迟执行和图重写 它通常与显式图形框架Theano/TF相关联,但通过足够的工程,您可以将其添加到诸如numpy/PyTorch之类没有显式图形的执行模型中。请参阅Bohrium,了解如何使用numpy进行重写 请注意,此功能的存在使框架对原型设计不那么友好,因此如果将其添加到PyTor

我看过一些关于tensorflow和pytorch的基准测试。Tensorflow可能更快,但似乎没有那么快,有时甚至更慢


是否有专门测试静态图和动态图的基准测试证明静态图比动态图快得多?

更准确地说,速度优势来自延迟执行和图重写

它通常与显式图形框架Theano/TF相关联,但通过足够的工程,您可以将其添加到诸如numpy/PyTorch之类没有显式图形的执行模型中。请参阅Bohrium,了解如何使用numpy进行重写

请注意,此功能的存在使框架对原型设计不那么友好,因此如果将其添加到PyTorch中,您将遇到人们在TensorFlow中抱怨的相同问题

延迟执行意味着异常可以在很久以后触发,而不是在您输入有问题的行时触发 重写意味着错误现在可以被抛出到您没有创建的节点中,这会产生无信息的错误消息 就性能而言,这里有一个在TensorFlow中的示例,当您打开图形重写时,它显示了5倍的加速


我精心设计了这个例子,使其受到内存带宽的限制,因此,毫无疑问,图形重写cwise fusion将显著提高速度。对于生产LSTM模型,Google报告在通过XLA启用图形优化时提高了1.8个速度。更准确地说,速度优势来自图形重写的延迟执行

它通常与显式图形框架Theano/TF相关联,但通过足够的工程,您可以将其添加到诸如numpy/PyTorch之类没有显式图形的执行模型中。请参阅Bohrium,了解如何使用numpy进行重写

请注意,此功能的存在使框架对原型设计不那么友好,因此如果将其添加到PyTorch中,您将遇到人们在TensorFlow中抱怨的相同问题

延迟执行意味着异常可以在很久以后触发,而不是在您输入有问题的行时触发 重写意味着错误现在可以被抛出到您没有创建的节点中,这会产生无信息的错误消息 就性能而言,这里有一个在TensorFlow中的示例,当您打开图形重写时,它显示了5倍的加速


我精心设计了这个例子,使其受到内存带宽的限制,因此,毫无疑问,图形重写cwise fusion将显著提高速度。对于生产LSTM模型,Google报告说,当通过XLA启用图形优化时,速度提高了1.8%。静态图形允许几种类型的优化,这取决于图形类型和运行环境

静态图优化的简单示例是重用现有变量内存的选项,因此节省了昂贵的内存分配。有关使用MXNet的更多详细信息,请参见此处:

另一个简单的例子是将多个操作符组合成一个操作符的能力,特别是在GPU或其他允许编译代码以使用硬件加速选项的特定硬件优化环境中。在这种情况下,考虑在编译时间上多花一点钱,并在执行时间上加快速度,在深度学习培训中通常是不需要动脑筋的。当您在多个epocha上运行大量数据的训练时,这种折衷是没有意义的,因为执行时间比额外的编译时间(秒或分钟)长得多


但最强大的是当您允许并行和分布式处理时。如果您有多个GPU或实例来加速训练,那么能够实现线性缩放对于允许您缩放模型以获得更多的数据进行训练、使用更多的层和参数以及传递更多的年代至关重要。拥有一个静态图可以让深度学习框架更有效地优化跨资源的执行。请参见此处,了解MXNet对多个GPU实例的支持:。

静态图形允许几种类型的优化,这取决于图形类型和运行环境

静态图优化的简单示例是重用现有变量内存的选项,因此节省了昂贵的内存分配。有关使用MXNet的更多详细信息,请参见此处:

另一个简单的例子是将多个操作符组合成一个操作符的能力,特别是在GPU或其他允许编译代码以使用硬件加速选项的特定硬件优化环境中。在这种情况下,考虑在编译时间上多花一点钱,并在执行时间上加快速度,在深度学习培训中通常是不需要动脑筋的。当您在多个epocha上运行大量数据的训练时,这种权衡是没有意义的,因为执行时间 它比额外的编译时间(秒或分钟)长得多

但最强大的是当您允许并行和分布式处理时。如果您有多个GPU或实例来加速训练,那么能够实现线性缩放对于允许您缩放模型以获得更多的数据进行训练、使用更多的层和参数以及传递更多的年代至关重要。拥有一个静态图可以让深度学习框架更有效地优化跨资源的执行。有关多个GPU实例的MXNet支持,请参见此处: