76

PyTorch1.0预览版发布:超越Python性能的C++前端接口?

 5 years ago
source link: https://www.jiqizhixin.com/articles/PTDC2018?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
e263AzE.png!web

机器之心 原创

2018/10/03 03:33

参与 蒋思源 李泽南 李亚洲

PyTorch1.0预览版发布:超越Python性能的C++前端接口?

今年 5 月份,F8 大会的第二天中,Facebook 曾宣布 PyTorch1.0 即将与大家见面,这是继先前发布 0.4.0 后的一次较大调整。今日,在首届 PyTorch 开发者大会上,Facebook 宣布了有关该框架生态一系列更新,包括软件、硬件和教育方面的合作。于此同时,PyTorch 1.0 预览版也正式发布了。

项目链接:https://github.com/pytorch/pytorch/releases

据介绍,PyTorch 1.0 加速了产品化 AI 突破性研究的进程。从亚马逊、谷歌、微软的深度云服务支持,到紧密结合 ARM、英特尔、IBM、英伟达和高通等技术方,开发者们能够更轻松的利用 PyTorch 兼容了软件、硬件和开发工具的生态。Facebook 表示,PyTorch 1.0 融合越多的软件和硬件,开发者能够越容易地快速建立、训练、部署顶级的深度学习模型。

「我们在 PyTorch1.0 发布前解决了几大问题包括:可重用、性能、编程语言和可扩展性,」Facebook人工智能副总裁 Jerome Pesenti 在发布会开场时表示。「但是,facebook 认为自身在开发深度学习框架道路上只行进了 1%,我们希望 PyTorch 是以用户为中心的,以社区为主要驱动力。」

yeeqy2R.png!web

PyTorch 1.0 主要新特性

据官方博客介绍,最新版本的 PyTorch 有了一系列重大更新,例如增加了一个全新的融合前端,它能够追踪来自 eager 模式的模型,并融合到图模式中,从而弥补研究与产品部署直接的差距;增加了一个修订过的 torch.distributed 库,能够让开发者在 Python 和 C++环境中进行更快的训练;增加了一个 eager 模式的 C++接口(beta 版)进行关键性能研究。

首先是 torch.jit。据现场介绍,JIT 是一组编译工具,它的目标是弥补研究与产品部署的差距。JIT 包含一种名为 Torch Script 的语言,这种语言是 Python 的自语言。使用 Torch Script 的代码可以实现非常大的优化,并且可以序列化以供在后续的 C++API 中使用。

i2aqe2m.png!web

C++前端是连接 PyTorch 后段的纯 C++接口,但它同时遵循已建立的 Python 前端 API 和架构。C++前端的目标在于实现高性能、低延迟的 C++应用,因此它提供的接口等价于 Python 前端所采用 torch.nn 和 torch.optim 等。

jmI3u2v.png!web

其实 Python 不一定比 C ++慢,Python 前端调用 C ++计算的成本很高(特别是数值型的运算),这些运算将在程序上花费额外的时间。但是,如果你需要在低延迟、高性能或多线程的环境下部署产品,例如视频游戏等,那么 Python 前端可能会存在一些问题,而 C ++前端就是来解决这些问题的。

在支持分布式训练方面,PyTorch1.0 同样做了一系列更新。例如,增加了一个修订过的 torch.distributed 库,能够让开发者在 Python 和 C++环境中进行更快的训练。目前,PyTorch 框架的模型在多 GPU 的条件下可以保持几乎线性的计算效率提升。

NnE7nyB.png!web

ayeiMzQ.png!web

PyTorch 1.0 在分布式训练方面的更新包括全新的后端设计和高度可扩展的性能:

ZrENvyb.png!web

其中包括:

  • 全新异步后端库:C10D;

  • 支持 Python 和 C++;

  • 全后向兼容后端 Python API;

  • 在关键工作负载上的顶点性能;

  • 数据并行:单节点、多 GPU;

  • 数据并行:多节点、多 GPU。

目前研究员和工程师们需要使用多个框架和工具来研究新的深度学习模型并把它们迁移到产品环境中大规模运行,但这些框架或者工具大部分都是不兼容的。如此一来,大大拉慢了研究员或者工程师产品化突破性 AI 研究的速度。在最新版本中,Facebook 结合了 PyTorch 框架的灵活性与 Caffe2 的产品化能力,提供了从研究到产品的无缝对接。

77Vbuum.png!web

对框架的开发者来说,幸运的是,pytorch 的生产环境部分并不是从零开始开发的,Facebook 还有另一个面向业界的框架:caffe2。

PyTorch 生态的深度支持

除了宣布重要更新内容,Facebook 还介绍了来自 PyTorch 1.0 生态的深度支持,这些支持既包括云服务又包括英伟达、高通、英特尔这样的技术提供方。具体介绍如下:

从云平台、产品到服务,AWS、谷歌和微软加深了对 PyTorch 1.0 更稳健的支持。例如,AWS 大规模训练、部署机器学习模型的全栈管理平台 Amazon Sagemaker,现在能为 PyTorch 1.0 提供预配置环境,包括自动模型调优这样的强大能力。

谷歌正宣布其为 AI 开发者制定的多种软件和硬件工具将与 PyTorch 1.0 实现集成。谷歌云平台的深度学习虚拟机现在有一个新的 PyTorch 1.0 VM 镜像文件,其预安装了 NVIDIA 驱动与教程。谷歌同样为 PyTorch 提供了张量处理单元(TPU),这是一种用于机器学习的定制化专用集成芯片(ASIC)。通过 Google Cloud TPU 团队和 PyTorch 团队的合作,目前基于 PyTorch 1.0 的模型能使用这种定制化的硬件了。

Facebook 的和微软在早期提出了另一个重要的倡议,即开源的神经网络交换格式 ONNX,而现在微软也进一步致力于在机器学习产品套件中为 PyTorch 提供一流的支持。Azure机器学习服务现在允许开发者将本地训练的 PyTorch 模型无缝迁移到 Azure cloud 上。对于数据科学实验,微软提供了预配置的数据科学虚拟机(DSVM),该虚拟机预安装了 PyTorch。对于希望探索 PyTorch,但又不希望安装软件和配置本地环境的开发者,Azure Notebooks 提供了免费的云 Jupyter Notebooks,开发者可以直接试验 PyTorch 教程和代码。最后,Visual Studio Code 的 AI 扩展工具为 Azure ML 和 PyTorch APIs 提供了紧密的集成,它们可以简化 PyTorch 代码的开发与训练。

此外除了软件和云服务提供商,对于 ARM、IBM、Intel、NVIDIA 和高通等技术伙伴,Facebook 还会通过直接优化、kernel 库的集成、以及优化编译器和推理运行时等其他工具为 PyTorch 1.0 提供支持。这些额外的支持能确保 PyTorch 可以在数据中心和边缘设备的各种硬件上正常运行,且模型也能在这些硬件上实现训练和推断的优化。

为未来的 AI 开发者提供学习资源

除了加强 PyTorch 部署 AI 研究的能力,通过教育与课程方式推广 PyTorch 也是 Facebook 打造深度学习框架的一大利器。

据介绍,目前 PyTorch 已经通过在线视频和大学课程为众多的学生提供深度学习框架,很多教育提供方也都采用它作为教学框架。PyTorch 框架的易用性及与 Python 深度集成的特性令它非常容易实现各种深度学习概念,学生可以通过它快速理解和实验深度模型。

此外,Udacity 正与 Facebook 合作,他们希望让开发者能免费学习深度学习入门课程,这些课程完全使用 PyTorch 作为框架。Facebook 还将赞助 300 名成功完成该中级课程的学生继续在 Udacity 中完成深度学习纳米学位项目,该计划已经修改为在 PyTorch 1.0 上运行。

Fast.ai 同样使用 PyTorch 框架,并提供免费的深度学习入门、高级和机器学习课程,Fastai 是第一个宣布基于 PyTorch 1.0 的开源软件库。该软件库能提供高准确率和快速的深度学习模型,并只需要非常少量的代码,这些都令深度学习对于入门者和有经历的开发者更加友好。

EF3q2y2.png!web

小结

从 2015 年谷歌开源TensorFlow 开始,深度学习框架之争越来越越激烈,全球多个看重 AI 研究与应用的科技巨头均在加大这方面的投入。从 2017 年年初发布 以来,PyTorch 可谓是异军突起,短短时间内 取得了一系列成果 ,成为了其中的明星框架。

Facebook 表示,PyTorch 1.0 是自推出以来最重要的版本,1.0 意味着框架版本已经非常稳定、成熟、有保证了。今天发布的 preview 版,其中 90% 的功能已经能够应对业界的考验。

「1.0 是让 PyTorch 进入生产环境的第一步,开发者们还会在未来继续推进它的发展。」Facebook 研究工程师 Soumith Chintala 在发布会上表示,「PyTorch 1.0 的最终稳定版会在 NIPS2018 大会之前发布。」

预览版安装地址: https://pytorch.org/get-started/locally/

产业 Facebook PyTorch Torch 深度学习框架

相关数据

人工智能 技术

Artificial Intelligence

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

来源: Russell, S., & Norvig, P. (2003). Artificial Intelligence: A Modern Approach.

神经网络 技术

Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

来源:机器之心

机器学习 技术

Machine Learning

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

来源:Mitchell, T. (1997). Machine Learning. McGraw Hill.

深度学习 技术

Deep learning

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

来源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.

英特尔 机构

Intel

英特尔是计算创新领域的全球领先厂商,致力于拓展科技疆界,让最精彩体验成为可能。英特尔创始于1968年,已拥有近半个世纪产品创新和引领市场的经验。英特尔1971年推出了世界上第一个微处理器,后来又促进了计算机和互联网的革命,改变了整个世界的进程。如今,英特尔正转型成为一家数据公司,制定了清晰的数据战略,凭借云和数据中心、物联网、存储、FPGA以及5G构成的增长良性循环,提供独到价值,驱动日益发展的智能互联世界。英特尔专注于技术创新,同时也积极支持中国的自主创新,与产业伙伴携手推动智能互联的发展。基于明确的数据战略和智能互联全栈实力,英特尔瞄准人工智能、无人驾驶、5G、精准医疗、体育等关键领域,与中国深度合作。面向未来,英特尔致力于做中国高价值合作伙伴,在新科技、新经济、新消费三个方面,着力驱动产业协同创新,为实体经济增值,促进消费升级。

涉及领域

张量 技术

Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

来源: 维基百科

TensorFlow 技术

TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

来源: 维基百科

准确率 技术

Accuracy

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

来源: Google ML Glossary

e263AzE.png!web
机器之心

机器之心编辑


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK