Facebook更新PyTorch 1.1,深度学习CPU抢GPU饭碗?

  1. 云栖社区>
  2. 博客>
  3. 正文

Facebook更新PyTorch 1.1,深度学习CPU抢GPU饭碗?

异步社区 2019-05-17 14:06:42 浏览1123
展开阅读全文

在一年一度的开发者大会F8上,Facebook放出PyTorch的1.1版本,直指TensorFlow“腹地”。

不仅宣布支持TensorFlow的可视化工具TensorBoard,还正式向工业界迈进,新推出训练 AI 系统”跨 GPU 分割神经网络“功能。为生产环境改进了PyTorch处理分布式训练的方式。PyTorch路线图的下一步是,以更少的比特数运行神经网络,实现更快的CPU和GPU性能,并支持AI从业者创建命名张量维数。

PyTorch是Fackebok于2017年初在机器学和科学计算工具Torch的基础上,针对Python语言发布的一个全新的机器学习工具包。一经发布,PyTorch就受到了业界的广泛关注和讨论,目前PyTorch已经成为机器学习从业人员最重要的研发工具之一。

相较于更适合大规模部署,尤其是涉及跨平台和嵌入式部署的TensorFlow,PyTorch更适合用于研究、爱好者和小规模项目的快速原型开发;而且在下面这些方面相当有优势:用于研究或者用于生产的非功能性需求并不是很苛刻;需要更好的开发和调试经验;爱所有Python化的东西。

对于深度学习从业人员来说,PyTorch是TensorFlow之外的一个绝佳选择。通过学习了解不同深度学习框架,可以丰富其知识技能,针对实际业务需求选择最合适的框架。学习他小编推荐《PyTorch深度学习》。

PyTorch深度学习

深度学习改变了很多产业,吴恩达(Andrew Ng)曾在他的推特上这样描述:

Artificial Intelligence is the new electricity!(人工智能犹如新型电力!)

电能的应用曾为无数行业带来了巨变,如今人工智能也将带来同样的震撼。

人工智能和深度学习虽然经常被当成同义词使用,但实际上这两个术语有本质的区别。我们会从专业的角度解释这两个术语,作为业内人士的你就可以像区分信号和噪声一样区分它们。

传统机器学习算法使用手写的特征提取代码来训练算法,而深度学习算法使用现代技术自动提取这些特征。

例如,一个用于预测图像是否包含人脸的深度学习算法将在第一层检查边缘,第二层检测鼻子和眼睛等形状,最后一层检测面部形状或者更复杂的结构(见图1.3)。每一层都基于前一层的数据表示进行训练。如果大家觉得上面的解释理解起来有些困难,请不要担心,本书的后续章节会更直观地构造和详细解释这样的网络。

图1.3 中间层的可视化输出

得益于GPU、大数据、云提供商如 Amazon Web Services(AWS)和Google Cloud,以及Torch、TensorFlow、Caffe和PyTorch这些框架的出现,深度学习的应用在过去几年出现了巨大的增长。除此之外,一些大型公司还分享了已在庞大的数据集上训练好的算法,因而使得后来者可以经过很少的改动就能够以几种用例为基础构建最先进的系统。

深度学习的应用

深度学习一些流行的应用如下:

  • 接近人类水平的图像分类;
  • 接近人类水平的语音识别;
  • 机器翻译;
  • 自动驾驶汽车;
  • Siri、Google语音和Alexa在最近几年更加准确;
  • 日本农民的黄瓜智能分拣;
  • 肺癌检测;
  • 准确度高于人类的语言翻译。

图1.4所示为一个用于总结段落大意的简例,计算机读入一大段文本,并用几行总结出中心语义。

图1.4 计算机生成的本文摘要

接下来,我们把图1.5作为普通的图片输入给计算机,并不告知计算机图像中展示的是什么。借助对象检测技术和词典的帮助,我们得到的图像描述是:两个小女孩正在玩乐高玩具。计算机太聪明了,不是吗?

图1.5 对象检测和图像标注

深度学习的浮夸宣传

媒体人士和人工智能领域外的人士,以及那些并非真正的人工智能和深度学习参与者,一直暗示说,随着人工智能和深度学习的进步,电影Terminator 2: Judgement Day中的场景会成为现实。有些甚至在谈论人类终将被机器人控制的时代,那时机器人将决定什么对人类有益。目前而言,人工智能的能力被过分夸大了。现阶段,大多数深度学习系统都部署在一个非常受控的环境中,并给出了有限的决策边界。

我的想法是,当这些系统能够学会做出智能决策,而非仅仅完成模式匹配,当数以千百计的深度学习算法可以协同工作,那时也许我们有希望见到类似科幻电影中一样表现的机器人。事实上,我们尚不能实现通用的人工智能,即机器可以在没有指示的情况下做任何事。现在的深度学习大多是关于如何寻找现有数据的模式并预测未来结果。作为深度学习业者,我们应该像区别信号和噪声一样区分这些不实说法。

深度学习发展史

尽管深度学习在最近几年才开始广为流行,但其背后的理论早在20世纪50年代就开始形成了。表1.1给出了现今深度学习应用中最受欢迎的技术和出现的大概的时间点。

深度学习这个术语过去有几种不同的叫法。20世纪70年代我们称之为控制论(cybernetics),20世纪80年代称之为联结主义(connectionism),而现在称之为深度学习或神经网络。我们将交替使用深度学习和神经网络这两个术语。神经网络通常指的是那些受人脑运作启发的算法。然而,作为深度学习的从业者,我们应明白神经网络主要是由强大的数学理论(线性代数和微积分)、统计学(概率)和软件工程激励和支持的。

表1.1

为何是现在

为何现在深度学习这么流行?一些关键原因如下:

  • 硬件可用性;
  • 数据和算法;
  • 深度学习框架。

硬件可用性

深度学习要在数百万甚至数十亿的参数上进行复杂的数学运算。尽管过去这些年有所提高,但仅依靠现在的CPU执行这些运算极其耗时。一种叫作图形处理单元(Graphics Processing Unit,GPU)的新型硬件在完成这些大规模的数学运算(如矩阵乘法)时可以高出几个数量级。

GPU最初是Nvidia和AMD公司为游戏产业而开发的。事实证明这种硬件极其高效。Nvidia最近的一款产品1080ti,仅用了几天时间就构建了一个基于ImageNet数据集的图像分类系统,而此前这需要大概1个月的时间。

如果打算购买用于深度学习的硬件,建议用户根据预算选择一款Nvidia的内存较大的GPU。记住,计算机内存和GPU内存并不相同,1080ti带有大约11GB的内存,它的价格在700美元左右。

你也可以使用各种云服务,如AWS、Google Cloud或Floyd(这家公司提供专为深度学习优化的GPU机器)。如果刚开始深度学习,或在财务受限的情况下为公司的应用配置机器时,使用云服务就很经济。

优化后的系统性能可能有较大提升。

图1.6所示为不同CPU和GPU的性能基准的对比。

图1.6 基于不同CPU和GPU的神经网络架构的性能基准

数据和算法

数据是完成深度学习最重要的组成部分,由于互联网的普及和智能手机应用的增长,一些大公司,如Facebook和Google,可以收集到大量不同格式的数据,特别是文本、图片、视频和音频这类数据。在计算机视觉领域,ImageNet竞赛在提供1,000种类别中的140万张图片的数据集方面发挥了巨大作用。

这些图像类别是手工标注的,每年都有数百个团队参与竞赛。过去比赛中一些成功的算法有VGG、ResNet、Inception、DenseNet等。现在这些算法已在行业中得到应用,用于解决各种计算机视觉问题。深度学习领域还有其他一些流行的数据集,这些数据集常被用于建立不同算法的性能基准:

  • MNIST;
  • COCO数据集;
  • CIFAR;
  • The Street View House Numbers;
  • PASCAL VOC;
  • Wikipedia dump;
  • 20 Newsgroups;
  • Penn Treebank;
  • Kaggle。

各种不同算法的发展,如批规一化、激活函数、跳跃式连接(skip connection)、长短期记忆网络(LSTM)、dropout等,使得最近几年可以更快并更成功地训练极深度网络。本书接下来的章节中,我们将深入每种技术的细节,以及如何使用这些技术构建更好的模型。

深度学习框架

在早期,人们需要具备C++和CUDA的专业知识来实现深度学习算法。现在随着很多公司将它们的深度学习框架开源,使得那些具有脚本语言知识(如Python)的人,也可以开始构建和使用深度学习算法。今天,这个行业中流行的深度学习框架有TensorFlow、Caffe2、Keras、Theano、PyTorch、Chainer、DyNet、MXNet和CNTK。

如果没有这些框架,深度学习的应用也不会如此广泛。它们抽象出许多底层的复杂度,让我们可以专注于应用。我们尚处于深度学习的早期阶段,很多组织机构都在对深度学习进行大量研究,几乎每天都有突破性的成果,因而,各种框架也都各有利弊。

PyTorch

PyTorch以及其他大多数深度学习框架,主要用于两个方面:

  • 用GPU加速过的运算替代与NumPy类似的运算;
  • 构建深度神经网络。

让PyTorch越来越受欢迎的是它的易用性和简单性。不同于其他大多数流行的使用静态计算图的深度学习框架,PyTorch使用动态计算,因此在构建复杂架构时可以有更高的灵活性。

PyTorch大量使用了Python概念,例如类、结构和条件循环,允许用户以纯面向对象的方式构建深度学习算法。大部分的其他流行框架引进了自己的编程风格,有时编写新算法会很复杂,甚至不支持直观的调试。后续章节将详细讨论计算图。

尽管PyTorch新近才发布并且还处于β版本,由于它的简单易用和出色的性能、易于调试性,以及来自不同公司如SalesForce等的强大支持,PyTorch受到了数据科学家和深度学习研究人员的巨大欢迎。

由于PyTorch最初主要为研究目的而构建,因此不建议用于那些对延迟要求非常高的生产环境。然而,随着名为Open Neural Network Exchange(ONNX)的新项目的出现,这种情况正在发生改变,该项目的重点是将在PyTorch上开发的模型部署到适用于生产的Caffe2这样的平台上。在本书写作时,这个项目刚刚启动,因而过多的定论还为时尚早。该项目了得到Facebook和微软的支持。

在本书的其余部分,我们将学习用于构建计算机视觉和自然语言处理领域的强大深度学习应用的各种模块(较小的概念或技术)。

书名:《PyTorch深度学习》

作者:作者 [印度]毗湿奴•布拉马尼亚(Vishnu Subramanian)

译者:王海玲 刘江峰

编辑推荐:

PyTorch是Facebook于2017年初在机器学习和科学计算工具Torch的基础上,针对Python语言发布的一个全新的机器学习工具包,一经推出便受到了业界的广泛关注和讨论,目前已经成为机器学习从业人员首选的一款研发工具。 《PyTorch深度学习》是使用PyTorch构建神经网络模型的实用指南,包括PyTorch与深度学习的基础知识、神经网络的构成、神经网络的高级知识、机器学习基础知识、深度学习在计算机视觉中的应用、深度学习在序列数据和文本中的应用、生成网络、现代网络架构,以PyTorch与深度学习的未来走向。

- END -

网友评论

登录后评论
0/500
评论
异步社区
+ 关注