资讯
2019-11-18 16:02:25 来源:艾崴安检
[摘要]近日,Reddit的一则热帖引发机器学习社区大量讨论:
NeurIPS 2019使用的机器学习框架:PyTorch 68-> 166,TensorFlow 91-> 74
帖主Horace He是康奈尔大学的学生,他的研究兴趣是编译
PyTorch 达到生产状态的速度有多快?
PyTorch 仍有许多基本问题问题没有解决 —— 没有好的量化指标、不支持移动设备、服务性等等。在这些问题解决之前,PyTorch 不会成为许多公司的选择。注:在本文发布的当天,PyTorch 就宣布了对量化和移动的支持。这两种方法都还处于试验阶段,但是对于 PyTorch 来说已经取得了重大进展。
谷歌在行业上的孤立会伤害它吗?
谷歌推动 TensorFlow 的主要原因之一是帮助其迅速发展的云服务。由于谷歌试图拥有整个 ML 垂直市场,这可能激励竞争的公司 (微软、亚马逊、英伟达等) 支持唯一的替代机器学习框架,即 PyTorch。
机器学习框架的下一步:高阶微分和代码生成
下一步是什么
机器学习框架在很大程度上影响了ML研究,这一点或许没有得到充分的认识。它们不仅使机器学习研究成为可能,它们还使研究人员能够轻松探索的想法成为可能,或对这些想法加以限制。有多少新生的想法仅仅因为没法简单地在一个框架中表达而粉碎?PyTorch可能已经达到了本地研究的最低要求,但值得探讨的是,其他框架提供了什么,以及它们可能带来哪些研究机会。
高阶微分:
PyTorch和Tensorflow的核心是自动微分框架。也就是说,它们允许对某个函数求导。然而,有许多方法可以实现自动微分,大多数现代ML框架选择的特定实现称为“反向模式自动微分”,更常见的说法是“反向传播”。这个实现被证明对神经网络求导非常有效。
但是,计算高阶导数(Hessian/Hessian向量内积)的情况有所变化。有效地计算这些需要所谓的“前向模式自动微分”。如果没有这种能力,计算Hessian向量内积可能会慢几个数量级。
Jax是由Autograd的同一帮人构建的,具有正向和反向模式自动微分的特性。这使得计算高阶导数的速度比PyTorch/TensorFlow快几个数量级。
然而,Jax提供的不仅仅是高阶导数。Jax开发人员将Jax视为组合任意函数转换的框架,包括vmap(用于自动批处理)或pmap(用于自动并行处理)。
最初的autograd有一批忠实追随者(尽管没有GPU支持,ICML仍然有11篇论文还是使用了它),Jax很可能很快就会形成一个类似的忠实社区,将它用于各种n阶导数。
代码生成
当运行PyTorch/TensorFlow模型时,大部分工作实际上并不是在框架中完成的,而是由第三方内核完成的。这些内核通常由硬件供应商提供,由高级框架可以利用的操作符库组成。比如MKLDNN(用于CPU)或cuDNN(用于Nvidia GPU)。更高级的框架将它们的计算图分解成多个块,然后这些块可以调用这些计算库。这些库代表了数千小时的工作,并且经常针对架构和应用程序进行优化以获得最佳性能。
然而,最近对非标准硬件、稀疏/量化张量和新运算符的兴趣暴露了依赖这些运算符库的一个主要缺陷:它们不灵活。如果你想在研究中使用一个新的运算符,比如胶囊网络,你会怎么做?如果你想在ML框架不支持的新硬件加速器上运行模型,该怎么办?现有的解决方案往往达不到要求。
每一个新的硬件结构、张量类别或运算符都大大增加了这个问题的难度。有很多工具 (Halide, TVM, PlaidML, Tensor Comprehensions, XLA, Taco, etc)可以处理,但是仍没有一个正确的方法。
如果不投入更多的工作来解决这个问题,我们就会有将ML研究过度适合于现有工具的风险。
机器学习框架的未来
这些对于TensorFlow和PyTorch的未来来说是激动人心的时刻。它们的设计已经趋同到这样一个地步,以至于任何一个框架都不会凭借其设计而获得决定性的胜利。双方都划出了各自的领域——一方占据研究界,另一方占据工业界。
就我个人而言,在PyTorch和TensorFlow之间,我倾向于PyTorch。机器学习仍然是一个研究驱动的领域。工业界不能忽视研究成果,只要PyTorch主导研究,就会迫使公司转向PyTorch。
然而,快速发展的不仅仅是框架。机器学习研究本身也处于快速的变化之中。不仅框架会改变——5年后使用的模型/硬件/范例都可能与我们今天使用的有很大的不同。也许随着另一种计算模型占据主导地位,PyTorch和TensorFlow之争将变得无关紧要。
我们大多数人从事机器学习工作不是为了赚钱,也不是为了协助公司的战略计划。我们从事机器学习是因为我们关心——关于推进机器学习研究,关于人工智能的民主化,或者仅仅是关于构建有趣的东西。不管你是喜欢TensorFlow还是PyTorch,我们都在努力让机器学习软件做到最好。
价格:¥0.00
价格:¥0.00