专栏首页新智元专访田渊栋 | Torch升级版PyTorch开源,Python为先,强GPU加速

专访田渊栋 | Torch升级版PyTorch开源,Python为先,强GPU加速

【新智元导读】 PyTorch今天发布,这是一个支持强大的 GPU 加速的张量计算(类似numpy),构建基于 tape 的 autograd 系统的深度神经网络的深度学习研究平台。这是numpy 的替代,以使用 GPU 的能力,能够提供最大的灵活性和速度。田渊栋在接受专访时表示,新的平台不像以前 torch 需要clone_many_times。另外从 numpy ndarray 可以转到torch.Tensor,不需要copy。

专访Facebook研究员田渊栋和PyTorch作者Soumith

新智元 :田博士,关于PyTorch的发布,请问可以采访您几个问题嘛?

田渊栋 :哦,你要问什么?我可以把问题转给Soumith。

新智元 :请问 PyTorch 除了是基于 Python,其它架构是否与 Torch 一样?

田渊栋 :基本C/C++这边都是用的torch原来的函数,但在架构上加了 autograd 这样就不用写backward 函数,可以自动动态生成computational graph 并且自动求导,反向传递后自动回收内存,这个让写程序变得更方便了。另一个重要的不同是权值(weights)和activation/gradInput分开了,这样同一个layer 可以复用很多次,存储的时候也不用 clear gradient,不像以前 torch 需要clone_many_times。另外从 numpy ndarray 可以转到torch.Tensor,不需要copy。

Lua这边一直有每个 thread 2G的限制,这个对写多线程的程序不是很有利。Python有GIL,所以一般用 multiprocessing 写程序,PyTorch针对这个有比较好的支持,比如支持进程间共享内存(这个对parameter server有利),支持shared Cuda context,等等。

我自己已经在用了,写了一个增强学习的框架,效果还是不错的。

新智元 :tensorflow也支持 python,请问这两种有什么区别呢?

Pytorch作者Soumith:像TensorFlow, Theano,Caffe以及CNTK都是静态的计算图结构。而PyTorch这边是动态地生成计算图结构(Computational Graph)的,所以可以在训练时动态改变图的拓扑,而不用改代码重新开始。

新智元:对GAN 和 深度强化学习支持怎么样?

田渊栋 :自带的tutorial里面已经有GAN的样本了,RL的框架我在写,在一些例子上已经达到了目前的最好水平。

新智元:您指的一些例子是什么类型的例子呢?

比如说OpenAI Gym Atari game Breakout-v0。

HN评论:深度学习库生态没有停滞

几个月前人们还说,深度学习库生态系统开始稳定。我从来不这么认为。深度学习库的最新前沿是确保对动态计算图的有效支持。

当需要完成的工作量是可变的时,动态计算图形出现。这可能是在我们处理文本时,一个例子是几个字,而另一个是文本的段落,或者当我们对可变大小的树结构执行操作时。这个问题在某些的领域尤其突出,例如自然语言处理。

PyTorch 很好地解决了这个问题,如 Chainer 和 DyNet。事实上,Pytorch 的构建直接从 Chainer 获得,尽管重构了并且设计得更快了。我已经看到所有这些在最近几个月,特别是在许多研究人员进行领域的前沿研究重新产生兴趣。当你使用新的架构时,你希望在框架允许范围内,获得最大的灵活性。

另一面,TensorFlow 不能很好地处理这些动态图问题。虽然有一些原始的动态结构,但它们不灵活,通常相当有限。在不久的将来,有计划允许 TensorFlow 变得更加动态,但添加它是一个挑战,特别是还要有效地做。

披露:我的Salesforce Research团队广泛使用Chainer,我的同事James Bradbury是PyTorch的贡献者,而它处于隐身模式。我们计划从Chainer过渡到PyTorch,以便将来的工作。

PyTorch 官网介绍

PyTorch 是一个 python 包,提供以下两个高级功能:

强大的 GPU 加速的张量计算(类似numpy)

构建基于 tape 的 autograd 系统的深度神经网络

在需要时,你可以再使用你喜欢的其他 python 包来扩展 PyTorch,例如 numpy,scipy 和Cython。

在粒度级别上,PyTorch 是一个由以下部分组成的库:

通常可以把 PyTorch 作为:

numpy 的替代,以使用 GPU 的能力;

一个深度学习研究平台,能够提供最大的灵活性和速度。

以下是更详细介绍:

一个支持 GPU 的 Tensor 库

如果你使用 numpy,那么你已经在使用 Tensors(也就是 ndarray)。

PyTorch 提供的 Tensors 支持 CPU 或 GPU,并为大量的计算提供加速。

我们提供多样的 tensor 程序以加速并适应用户的科学计算需要,如 slicing, 索引, 数学运算,线性代数,缩减。而且,速度非常快!

动态神经网络:基于 tape 的 Autograd

PyTorch 具有独特的构建神经网络的方法:使用并重放 tape recorder。

大多数框架,如 TensorFlow,Theano,Caffe 和 CNTK 都是静态的。使用者必须构建一个神经网络,并重复使用相同的结构。更改网络表现的方式意味着必须从头开始。

PyTorch 使用一种被称为反向模式自动微分(Reverse-mode auto-differentiation)的技术,能够让用户以零延迟或开销的方式任意改变网络表现。我们的灵感来源于几个相关话题如 autograd,autograd,Chainer 等的研究论文,包括当前的和过去的论文。

虽然这种技术不是 PyTorch 独有的,但它是迄今为止最快的实现之一。在研究中使用 PyTorch,你将得到最快的速度和最好的灵活性。

以Python为先

PyTorch 不是把 Python 绑到 C++ 框架上去,而是深度集成到 Python 语言中。你可以可以就像你用 numpy / scipy / scikit-learn 之类的一样使用。你可以用 Python 本身写新的神经网络层,可以用你最喜欢的库或者包,例如 Cython 和 Numba。我们的目标是尽量不要重新造轮子。

实践经验

PyTorch 符合直觉、好理解、易用。当你执行一行代码,它马上运行,不是跟异步的。当你进入 debug 或者收到错误信息进行 stack trace,都很容易理解。stack trace point 就是你代码的地方。我们不希望你因为差劲的 stack trace 或者 不同步和模糊的运行,而花上几个小时 debug。

又快又稳

PyTorch 具有最小的框架开销。 我们集成加速库,如英特尔MKL和NVIDIA(CuDNN,NCCL),以最大化速度。 在核心,它的CPU和GPU Tensor和神经网络后端(TH,THC,THNN,THCUNN)作为独立的库用 C99 API编写。

它们是成熟的,已经测试了多年。

因此,PyTorch是相当快 - 无论你运行小或大的神经网络。

相比 Torch 或其他一些框架,PyTorch的内存使用是非常高效的。 我们为GPU编写了自定义内存分配器,以确保您的深度学习模型具有最大的内存效率。 这使你能够训练比以前更大的深度学习模型。

轻松扩展

编写新的神经网络模块,或 PyTorch的Tensor API 的使用,其设计非常直接和最小的抽象。

你可以使用torch API或你最喜欢的基于numpy的库(如SciPy)在 Python 中编写新的神经网络层。

如果你想用C / C ++编写你的图层,我们提供一个基于cffi的扩展API,它是高效的,并且有最小的样板。没有需要编写的包装代码。 你可以在这里看到一个例子:https://github.com/pytorch/extension-ffi

目前使用PyTorch的公司:

本文分享自微信公众号 - 新智元(AI_era),作者:序媛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 强推!《PyTorch中文手册》来了

    自 2017 年初首次推出,PyTorch 很快成为 AI 研究人员的热门选择并受到推崇。PyTorch 有许多优势,如采用 Python 语言、动态图机制、网...

    新智元
  • PyTorch核心贡献者开源书:《使用PyTorch进行深度学习》完整版现已发布!

    由Luca Antiga、Eli Stevens和Thomas Viehmann编写的《使用PyTorch进行深度学习》一书的完整版现已发布!

    新智元
  • 年度最大更新!PyTorch 0.4:完全改变API,官方支持Windows

    新智元
  • 开发 | PyTorch vs. TensorFlow月度使用体验总结

    AI科技评论按:日前,英伟达深度学习项目实习生Dominic Monn在medium上发文总结了他使用PyTorch和TensorFlow的一些体会,在文章中,...

    AI科技评论
  • 强推!《PyTorch中文手册》来了

    自 2017 年初首次推出,PyTorch 很快成为 AI 研究人员的热门选择并受到推崇。PyTorch 有许多优势,如采用 Python 语言、动态图机制、网...

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

    2019年,机器学习框架之争进入了新阶段:PyTorch与TensorFlow成为最后两大玩家,PyTorch占据学术界领军地位,TensorFlow在工业界力...

    大数据文摘
  • PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势已显?

    安妮 编译自 PyTorch官网 今天,PyTorch公开发布一周年了。 这个自诞生之日起就火热的深度学习框架,这一年是怎样的成长轨迹?刚刚,PyTorch团...

    量子位
  • PyTorch 团队发表周年感言:感谢日益壮大的社群,这一年迎来六大核心突破

    2017 年 1 月,Facebook 开源 PyTorch,短短一年时间,PyTorch 便发展成一线开发者争相使用的工具。这一年间,有哪些研究人员对 PyT...

    AI研习社
  • Github标星9k+,超赞的 PyTorch 中文资源大列表!

    https://github.com/bharathgs/Awesome-pytorch-list

    深度学习技术前沿公众号博主
  • 势头强劲: PyTorch周年大事记盘点

    【导读】 1月19日,PyTorch团队对PyTorch发布一年来的成长轨迹做了总结。在过去一年里,PyTorch资源包的下载量超50万次、PyTorch频频出...

    WZEARW

扫码关注云+社区

领取腾讯云代金券