加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

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

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

PyTorch和TensorFlow的核心是自动差异化框架,它能对某个函数求导。实现自动微分的方法有很多,大多数现代机器学习框架所选择的方法被称为“逆向模式自动微分”,也就是通常所说的“反向传播”。对神经网络的衍生而言,这种实现是非常有效的。

然而,在计算高阶导数(Hessian/Hessian Vector Products)时,就出问题了。有效地计算需要“正向模式自动微分”,如果没有这个功能,Hessian Vector Products的计算速度就会降低一个数量级。

Jax是由最初建造Autograd的同一批人创建的,它具有正向和反向模式自动分化的功能,这使得计算高阶导数的速度比PyTorch/TensorFlow的更快。

并且,Jax不仅能计算高阶导数,Jax开发人员将Jax视为组成任意函数转换的框架,包括vmap(用于自动批处理)或pmap(用于自动并行化)。

Jax最初的使用者主要是大学毕业生(尽管没有GPU支持,但ICML有11篇论文使用了它),但相信Jax很快就会找到一个类似的忠实粉丝社区,用它来做各种n阶导数。

2. 不够灵活!

当运行PyTorch/TensorFlow模型时,大部分工作实际上并不是在框架本身中完成的,而是由第三方内核完成的。这些内核通常由硬件供应商提供,类似于MKLDNN(用于 CPU)或cuDNN(用于Nvidia GPUs),由高级框架可以利用的操作符库组成。高级框架将计算图表分解成块,然后调用计算库。这些库代表了数千小时的工作量,并针对体系结构和应用程序进行优化以获得最佳性能。

然而,最近非标准硬件、稀疏/量子化张量和新运算符的流行暴露了依赖这些运算符库的一个缺陷:它们不够灵活!如果你想在研究中使用像胶囊网络(capsule networks)这样的新操作怎么办?现有的解决方案还不够完善。正如本文所说,现有的胶囊网络在GPU上的实现比最优实现慢2个数量级。

每个新的硬件体系结构、张量或算子的类别,都大大增加了问题的难度。目前已经有许多处理工具,如Halide、TVM、PlaidML、TensorComprehensions、XLA、Taco等,但是正确的方法还没找到。

如果没有解决这个问题,我们就会面临机器学习研究与工具过度匹配的风险。

六、机器学习框架的未来

对于TensorFlow和PyTorch的未来,他们的设计已经趋于一致,任何一个框架都不会凭借其设计而取得最终胜利,每一方也都有自己的地盘——一方拥有研究,另一方拥有工业。

就我个人而言,在PyTorch和TensorFlow之间,我会觉得PyTorch更有胜算。因为机器学习仍然是一个研究驱动的领域,工业界不能忽视研究成果,只要PyTorch在研究领域占据主导地位,企业就只有被迫转型。

然而,跑得足够快的不仅仅是框架。机器学习研究本身也处于一个巨大的变革中。不仅框架发生了变化,5年来使用的模型、硬件、范式与我们今天使用的截然不同。未来也许PyTorch和TensorFlow之间的战争将变得无关紧要,因为另一种计算模型或将占据主导地位。

在所有这些相互冲突的利益中,机器学习投入了大量资金,退一步想想其实也不错。大多数从事机器学习软件的工作不是为了赚钱,也不是为了协助公司的战略计划,而是想要推进机器学习的研究,关心人工智能民主化,也或许他们只是想创造一些很酷的东西。

所以,不管你更喜欢TensorFlow还是PyTorch,它们的目的只有一个,就是想让机器学习做到最好。

相关报道:

https://thegradient.pub/state-of-ml-frameworks-2019-PyTorch-dominates-research-TensorFlow-dominates-industry/?nsukey=RG9rAFcvX0owsip%2BviuAbdWRIFSgV1Yvu7Oj6KhVNWWGEpmoUHaDqlPyjAOIGgCho%2B2PznlO1KQYW8u9DRdYlPaILzqUApS1GAhmL3M0gzBGeyCQhOpiftWASSZTR1xaNMzV7VwTuLvCfUyjKAw1TyuzeOQxF8yhnIiuGJcRdthH7JX%2FaOLMtMfgaiDs0TuIDe5lMlcmhRZtnAg3YP30gg%3D%3D

【本文是51CTO专栏机构大数据文摘的原创译文,微信公众号“大数据文摘( id: BigDataDigest)”】

     大数据文摘二维码

戳这里,看该作者更多好文

(编辑:PHP编程网 - 黄冈站长网)

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

热点阅读