PyTorch1.0预览版发布:超越Python性能的C++前端接口?-阿里云开发者社区

开发者社区> 开发者小助手-bz8> 正文

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 是以用户为中心的,以社区为主要驱动力。」


微信图片_20211130104529.jpg


PyTorch 1.0 主要新特性


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


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


微信图片_20211130104533.jpg


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


微信图片_20211130104536.jpg


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


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


微信图片_20211130104540.jpg

微信图片_20211130104542.jpg


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


微信图片_20211130104548.jpg

其中包括:


  • 全新异步后端库:C10D;
  • 支持 Python 和 C++;
  • 全后向兼容后端 Python API;


  • 在关键工作负载上的顶点性能;
  • 数据并行:单节点、多 GPU;
  • 数据并行:多节点、多 GPU。


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


微信图片_20211130104554.jpg

对框架的开发者来说,幸运的是,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 的开源软件库。该软件库能提供高准确率和快速的深度学习模型,并只需要非常少量的代码,这些都令深度学习对于入门者和有经历的开发者更加友好。


微信图片_20211130104559.jpg


小结


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


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


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


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



机器之心《全球500强上市公司人工智能战略适应性报告》重磅发布。17个行业,140家上市公司,纵览500强落地人工智能的成与败。


微信图片_20211130104602.jpg

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26498 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8493 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2784 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
10924 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10313 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
8730 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12168 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7284 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
21646 0
1574
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载