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

相关文章
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
9月前
|
机器学习/深度学习 PyTorch 编译器
深入解析torch.compile:提升PyTorch模型性能、高效解决常见问题
PyTorch 2.0推出的`torch.compile`功能为深度学习模型带来了显著的性能优化能力。本文从实用角度出发,详细介绍了`torch.compile`的核心技巧与应用场景,涵盖模型复杂度评估、可编译组件分析、系统化调试策略及性能优化高级技巧等内容。通过解决图断裂、重编译频繁等问题,并结合分布式训练和NCCL通信优化,开发者可以有效提升日常开发效率与模型性能。文章为PyTorch用户提供了全面的指导,助力充分挖掘`torch.compile`的潜力。
1040 17
|
12月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
931 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
12月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
711 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能
PyTorch团队推出创新技术,在其低精度计算库TorchAO中引入低位运算符支持,实现1至8位精度的嵌入层权重量化及8位动态量化激活的线性运算符。该技术通过模块化设计和高效硬件利用,优化了资源受限环境下的深度学习计算,提升了计算效率并降低了资源消耗。新内核与PyTorch生态系统无缝集成,支持即时执行、编译优化及边缘计算,为开发者提供全方位性能优势。测试结果显示,多层次量化策略显著提升了计算效率,保持了模型精度。这一突破为深度学习框架优化开辟了多个研究方向,推动了人工智能在边缘计算等领域的广泛应用。
470 11
PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能
|
缓存 前端开发 JavaScript
前端框架的数据驱动方式对性能有哪些影响?
前端框架的数据驱动方式对性能有哪些影响?
216 49
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
1010 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
存储 编解码 前端开发
惊!前端新手也能秒懂的高级技巧,轻松提升网页颜值与性能!
本文针对前端新手,介绍了三个简单易学的高级技巧,帮助提升网页的颜值和性能。包括使用CSS框架快速美化网页、优化图片资源加快加载速度,以及利用ARIA属性和媒体查询提高网页的可访问性和响应性。示例代码清晰,适合初学者上手实践。
251 3