加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

2019机器学习框架之争:与Tensorflow竞争白热化,进击的PyTorch赢在哪里?

发布时间:2019-10-13 20:36:56 所属栏目:建站 来源:thegradient 编译:张大笔茹、曹培信、刘俊寰、牛婉
导读:副标题#e# 大数据文摘出品 来源:thegradient 编译:张大笔茹、曹培信、刘俊寰、牛婉扬、Andy 2019年,机器学习框架之争进入了新阶段:PyTorch与TensorFlow成为最后两大玩家,PyTorch占据学术界领军地位,TensorFlow在工业界力量依然强大,两个框架都在向对

另一个区别是部署。研究人员一般在自己的机器上或某个专门用于运行研究工作的服务器集群上进行实验。但是在产业上,部署则有一连串的限制与要求。

  • 没有Python。运行Python对服务器的开销太大了;
  • 移动。你不能在移动终端二进制文件中嵌入Python解释器;
  • 服务。需要包罗万象的功能:不用停机更新的模型,在模型之间无缝切换,批处理在预测时间,等等。

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。

2019机器学习框架之争:与Tensorflow竞争白热化,进击的PyTorch赢在哪里?

一旦PyTorch模型进入了这个IR,我们就可以获得图模式的所有优势。我们既可以在C++中部署PyTorch模型,而不依赖Python,或者对其进行优化。

2. TensorFlow Eager

在API级别上,TensorFlow Eager模式基本上与PyTorch Eager模式相同,后者最初由Chainer推出,这为TensorFlow提供了PyTorchEager模式的大部分优势(易用性、可调试性等等)

然而,这也给TensorFlow带来了同样的缺点。TensorFlow Eager模型不能导出到非python环境中,也不能进行优化,不能在移动设备上运行。

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!