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

相关文章
|
5天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
29 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
7天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
51 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
8天前
|
API Python
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
30 5
|
8天前
|
API 文件存储 Python
python 群晖nas接口(二)
这段代码展示了如何通过API将文件上传到群晖NAS。它使用`requests`库发送POST请求,指定文件路径、创建父级目录及覆盖同名文件的参数,并打印上传结果。确保替换`yourip`和`sid`为实际值。
27 2
|
10天前
|
API 文件存储 数据安全/隐私保护
python 群晖nas接口(一)
这段代码展示了如何通过群晖NAS的API获取认证信息(SID)并列出指定文件夹下的所有文件。首先,`get_sid()`函数通过用户名和密码登录NAS,获取会话ID(SID)。接着,`list_file(filePath, sid)`函数使用该SID访问FileStation API,列出给定路径`filePath`下的所有文件。注意需替换`yourip`、`username`和`password`为实际值。
51 18
|
18天前
|
并行计算 安全 Java
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
97 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
|
1月前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
106 61
Python装饰器实战:打造高效性能计时工具
|
1月前
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能
PyTorch团队推出创新技术,在其低精度计算库TorchAO中引入低位运算符支持,实现1至8位精度的嵌入层权重量化及8位动态量化激活的线性运算符。该技术通过模块化设计和高效硬件利用,优化了资源受限环境下的深度学习计算,提升了计算效率并降低了资源消耗。新内核与PyTorch生态系统无缝集成,支持即时执行、编译优化及边缘计算,为开发者提供全方位性能优势。测试结果显示,多层次量化策略显著提升了计算效率,保持了模型精度。这一突破为深度学习框架优化开辟了多个研究方向,推动了人工智能在边缘计算等领域的广泛应用。
87 11
PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能
|
1月前
|
API Python
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
95 1
|
1月前
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。