2019机器学习框架之争:与Tensorflow竞争白热化,进击的PyTorch赢在哪里?
另一个区别是部署。研究人员一般在自己的机器上或某个专门用于运行研究工作的服务器集群上进行实验。但是在产业上,部署则有一连串的限制与要求。
TensorFlow就是特别针对这些需求构建的,并为所有这些问题提供了解决方案:网络图格式和执行引擎本身不需要Python,而TensorFlow Lite和TensorFlow Serving可以分别处理移动终端和服务器需求。 从历史上看,PyTorch在满足这些需求方面做得还不够,因此大多数公司目前在生产中都还是使用 TensorFlow。 三、架构「融合」 2018年末,两件大事彻底改变了这一局面: PyTorch引入了JIT编译器和“TorchScript”,从而引入了基于图的特性; TensorFlow宣布他们将在2.0版本中默认转移到Eager模式。 显然,这些举措都是为了解决PyTorch和TensorFlow各自的弱点。那么这些特性到底是什么,它们能提供什么呢? 1. PyTorch TorchScript PyTorch JIT是PyTorch的一个中间表示(intermediate representation,IR) ,称为TorchScript。Torchscript是PyTorch的“图”表示。你可以通过使用跟踪或脚本模式将常规PyTorch模型转换为TorchScript。跟踪接受一个函数和一个输入,记录用该输入执行的操作,并构造IR。 虽然很简单,但是跟踪也有它的缺点。例如,它不能捕获未执行的控制流。例如,如果它执行了true块,它就不能捕获条件块的false块。 Script模式接受一个函数/类,重新解释Python代码并直接输出TorchScript IR。这允许它支持任意代码,但是它实际上需要重新解释Python。 一旦PyTorch模型进入了这个IR,我们就可以获得图模式的所有优势。我们既可以在C++中部署PyTorch模型,而不依赖Python,或者对其进行优化。 2. TensorFlow Eager 在API级别上,TensorFlow Eager模式基本上与PyTorch Eager模式相同,后者最初由Chainer推出,这为TensorFlow提供了PyTorchEager模式的大部分优势(易用性、可调试性等等) 然而,这也给TensorFlow带来了同样的缺点。TensorFlow Eager模型不能导出到非python环境中,也不能进行优化,不能在移动设备上运行。 这将TensorFlow置于与PyTorch相同的位置,它们的解析方式基本相同——你可以跟踪代码(tf.function)或重新解释Python代码(Autograph)。 因此,TensorFlow的Eager模式并不能真正做到“两全其美”。虽然可以使用 tf.function注释将eager code转换为静态图,但这永远不会是一个无缝转换的流程(PyTorch的TorchScript也有类似的问题)。跟踪基本上是有限的,重新解释Python代码实际上需要重写Python编译器的大部分内容。 当然,通过限制在深度学习中使用的Python子集,范围可以大大简化。 在默认启用Eager模式时,TensorFlow将强迫用户做出选择——为了便于使用而Eager执行,并且需要为部署而重写,或者根本不使用急于执行。 虽然这与PyTorch的情况相同,但PyTorch的TorchScript的可选择加入特性可能比TensorFlow的“默认Eager”更容易接受。 四、机器学习框架的现状 PyTorch在研究领域领先,并试图扩展到工业领域。而TensorFlow正试图在不牺牲太多产业优势的情况下,更多的参与到研究领域。 PyTorch要在行业中产生有意义的影响肯定还需要很长时间,毕竟TensorFlow在产业界的影响力已经根深蒂固。然而,从TensorFlow 1.0到2.0的转换为企业评估PyTorch提供了一个绝佳的机会。 至于未来,将取决于谁能最好地解决以下问题。
五、下一步怎么走? 机器学习框架在多大程度上影响了机器学习的研究呢? (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |