PyTorch 1.13 正式发布:CUDA 升级、集成多个库、M1 芯片支持

news2024/11/30 5:02:08

内容导读:近日,PyTorch 团队在官方博客宣布 Pytorch 1.13 发布。本文将详细围绕新版本的 4 大亮点展开介绍。

据官方介绍,PyTorch 1.13 中包括了 BetterTransformer 的稳定版,且不再支持 CUDA 10.2 及 11.3,并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。fuctorch 是 PyTorch 中的一个库 提供可组合的 vmap(向量化)和 autodiff 转换

PyTorch 1.13 不可错过的亮点汇总:

  1. BetterTransformer 功能集 (feature set) 支持一般的 Transformer 模型在推理过程中,无需修改模型即可进行 fastpath 执行
    此外改进还包括对 Transformer 模型中常用 size 进行加速的 add+matmul 线性代数内核,现已默认启用嵌套 Tensor。

  2. 不再支持旧的 CUDA 版本,引入 Nvidia 推出的最新 CUDA 版本。这使得 PyTorch 和新的 NVIDIA Open GPU 内核模块得以支持 C++17 。

  3. functorch 从单独软件包变为可直接通过 import functorch 导入 PyTorch 使用,无需再单独安装。

  4. 测试为 M1 芯片 Mac 提供本地构建,并提供更好的 PyTorch API 支持。在这里插入图片描述

Stable Features

1. BetterTransformer API

BetterTransformer 功能集 (feature set) 支持一般的 Transformer 模型在推理过程中,无需修改模型即可进行 fastpath 执行。

作为补充,PyTorch 1.13 中还针对 Transformer 模型中常用的 size,加速了 add+matmul 线性代数内核。

为了提升 NLP 模型性能,PyTorch 1.13 中的 BetterTransformer 默认启用嵌套 Tensor (Nested Tensor)。 在兼容性方面,执行 mask check 确保能提供连续 mask。

Transformer Encoder 中 src_key_padding_mask 的 mask check 可以通过设置 mask_check=False 屏蔽。该设置可以加快处理速度,而非仅提供对齐的 mask。

最后,提供了更好的报错信息,简化错误输入的诊断,同时为 fastpath execution 错误提供了更佳的诊断方法。

Better Transformer 直接集成到 PyTorch TorchText 库中, 这使得 TorchText 用户能够更轻松地利用 BetterTransformer 的速度及效率性能。

Betterformfast 的 fastpath 执行现已稳定可用 并默认启用嵌套张量表示的稀疏优化

2. 引入 CUDA 11.6 和 11.7,不再支持 CUDA 10.2 和 11.3

CUDA 11 是第一个支持 C++17 的 CUDA 版本,不再支持 CUDA 10.2 是推进 PyTorch 支持 C++17 的重要一步,还能通过消除遗留的 CUDA 10.2 特定指令,来改进 PyTorch 代码。

CUDA 11.3 的退出和 11.7 的引入,使得 PyTorch 对 NVIDIA Open GPU 内核模块的兼容性更好, 另一个重要的亮点是对延迟加载 (lazy loading) 的支持。

CUDA 11.7 自带 cuDNN 8.5.0,包含大量优化,可加速基于 Transformer 的模型,库的 size 减少 30% ,并对 runtime fusion engine 进行了各种改进。

Beta Features

1. functorch

与 Google JAX 类似,functorch 是 PyTorch 中的一个库,提供可组合的 vmap(矢量化)和 autodiff 转换。 它支持高级的 autodiff 用例(在 PyTorch 中难以表达),包括:

  • 模型集成 model ensembling

  • 高效计算 Jacobian 和 Hessians

  • 计算 per-sample-gradients 或其他 per-sample quantities

PyTorch 1.13 内置 functorch 库,无需单独安装。通过 conda 或 pip 安装 PyTorch 后,就可以在程序中 import functorch 了。

2. 集成英特尔 VTune™ Profiler 及 ITT

PyTorch 用户如果希望在英特尔平台上用底层性能指标来分析每个算子的性能时,可以在英特尔 VTune™ Profiler 中可视化 PyTorch 脚本执行的算子级 timeline。

3. NNC:增加 BF16 和 Channels last 支持

通过在 NNC 中增加 Channels last 和 BF16 的支持,TorchScript 在 x86 CPU 上的 graph-mode 推理性能得到了显著提升。

在英特尔 Cooper Lake 处理器上,通过这两项优化,可以使得视觉模型性能达到 2 倍以上的提升。

通过现有的 TorchScript、Channels last 以及 BF16 Autocast API, 可以实现性能提升。如下所示,NNC 中的优化将迁移到新的 PyTorch DL Compiler TorchInductor 中:

import torch
import torchvision.models as models
model = models.resnet50(pretrained=True)
# Convert the model to channels-last
model = model.to(memory_format=torch.channels_last)
model.eval()
data = torch.rand(1, 3, 224, 224)
# Convert the data to channels-lastdata = data.to(memory_format=torch.channels_last)
# Enable autocast to run with BF16
with torch.cpu.amp.autocast(), torch.no_grad():
# Trace the model
model = torch.jit.trace(model, torch.rand(1, 3, 224, 224))
  model = torch.jit.freeze(model)
  # Run the traced model
  model(data)

4. 增加对 M1 芯片苹果设备的支持

自 1.12 版本以来,PyTorch 一直致力于为苹果 M1 芯片提供原生构建。PyTorch 1.13 进一步改进了相关 API。

PyTorch 1.13 在 M1 macOS 12.6 实例上进行了除 torch.distribution 之外的所有子模块测试。这些改进后的测试,可以修复 cpp 扩展以及某些输入的 convolution correctnes 等功能。

注意:该功能要求 M1 芯片的 macOS 12 或更高版本,并使用原生 Python (arm64) 。

Prototype Features

1. 针对 AWS Graviton 的 ACL 后端支持

PyTorch 1.13 通过 Arm Compute Library (ACL) 在 aarch64 CPU 上实现了 CV 和 NLP 推理的实质性提升, 这使得 ACL 后端得以支持 PyTorch 及 torch-xla 模块。亮点包括:

  • 启用 mkldnn+acl 作为 aarch64 torch wheel 的默认后端

  • 为 arch64 BF16 设备启用 mkldnn matmul operator

  • 将 TensorFlow xla+acl 功能引入 torch-xla。

2. CUDA Sanitizer

启用后,Sanitizer 将开始分析因用户的 PyTorch 代码而调用的底层 CUDA operation,以检测数据争用报错 (data race error)。

注:这些报错是由源自不同 CUDA Stream 的不同步数据访问而导致的。

与 Thread Sanitizer 类似,定位到的报错会与错误访问的堆栈 trace 一起打印出来。

机器学习应用中损坏的数据很容易被忽略,报错有时候也并不显现,因此用于检测并定位错误的 CUDA Sanitizer 就格外重要了。

3. 部分支持 Python 3.11

用户可通过 pip 下载支持 Python 3.11 的 Linux 二进制文件。不过这个功能只是一个 preview 版,Distributed、Profiler、FX 和 JIT 等功能并未完全支持。

从 0 到 1,学习 PyTorch 官方教程

OpenBayes.com 现已上线多个中文 PyTorch 官方教程,包括但不限于 NLP,CV,DL 等多个实例,您可以访问控制台,在公开资源中搜索查看。

运行 PyTorch 中文教程,点击文末阅读原文,或访问以下链接:

https://openbayes.com/console/public/tutorials

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据项目之电商数仓、业务数据介绍、业务数据模拟、生成业务数据、业务数据建模

文章目录6. 业务数据介绍6.5 业务数据模拟6.5.1 连接MySQL6.5.2 建表语句6.5.3 生成业务数据6.5.3.1 在hadoop102的/opt/module/目录下创建db_log文件夹6.5.3.2 把gmall2020-mock-db-2021-11-14.jar和application.properties上传到hadoop102的/opt/module/db_log路径上6.5.3.3 …

[CSS]常见布局技巧

前言 系列文章目录: [目录]HTML CSS JS 根据视频和PPT整理视频及对应资料:HTML CSS 老师笔记: https://gitee.com/xiaoqiang001/html_css_material.git视频:黑马程序员pink老师前端入门教程,零基础必看的h5(html5)css3…

榛子树搜索算法(Hazelnut tree search algorithm,HTS)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

c++基础(十四)——继承

一、继承的基本语法 继承是面向对象三大特性之一,有些类与类之间存在特殊的关系,当定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码。 基本语法&…

HotStuff:基于高效 BFT-SMR 共识的区块链

参考资料: Yin M, Malkhi D, Reiter M K, et al. HotStuff: BFT consensus in the lens of blockchain[J]. arXiv preprint arXiv:1803.05069, 2018.Michael J. Fischer, Nancy A. Lynch, and Mike Paterson. Impossibility of distributed consensus with one fau…

为什么网络安全缺口很大,而招聘却很少?

2020年我国网络空间安全人才数量缺口超过了140万,就业人数却只有10多万,缺口高达了93%。这里就有人会问了: 1、网络安全行业为什么这么缺人? 2、明明人才那么稀缺,为什么招聘时招安全的人员却没有那么多呢&#xff1…

Spring-security流程讲解01:basic模式

1&#xff1a;有basic模式认证&#xff1a; 1.0Maven依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version> </parent…

UGUI DrawCall的优化 工作记录

优化前&#xff1a; UGUI DrawCall调用256次 优化原则&#xff1a; 不追求极致&#xff0c;差不多就行了主要优化 静态不动的节点&#xff0c;避免改变脚本 优化思路&#xff1a; 3. 对现有的图集进行微调 4. 处理图文混排 打断合批的问题&#xff0c;微调节点的父子关系和节…

图解LeetCode——754. 到达终点数字(难度:中等)

一、题目 在一根无限长的数轴上&#xff0c;你站在 0 的位置。终点在 target 的位置。 你可以做一些数量的移动 numMoves : 每次你可以选择向左或向右移动。第 i 次移动&#xff08;从 i 1 开始&#xff0c;到 i numMoves &#xff09;&#xff0c;在选择的方向上走 i 步。…

vue11Vuex解说+子父传参详细使用

目录 1. vue组件间通讯 1.1 父子组件 1.2 消息总线 1.3 vuex 2. vuex使用 2.1 简介 2.2 安装 2.3 创建store模块 2.4 创建vuex的store实例并注册上面引入的各大模块 2.5 在main.js中导入vuex 3. 将折叠和展开效果使用vuex实现 3.1 在state.js中声明全局参数 3.2 设…

10 月更新 | Visual Studio Code Python

我们很高兴地宣布&#xff0c;2022 年 10 月发布的适用于 Visual Studio Code Python 和 Jupyter 扩展现已推出&#xff01; 此版本包括以下改进&#xff1a; 使用新的创建环境命令简化项目设置 现在可以为 Pylance 提供包含、排除和忽略路径设置 预发布的 autopep8 扩展 P…

【Linux】yum和vim的使用

文章目录一、Linux软件包管理器-yum1. 概念2. 安装软件3. 卸载软件4. 查看软件包5. 更新软件包二、Linux编辑器-vim1. 基本概念2. 基本操作3. 正常模式命令集4. 末行模式命令集三、总结一、Linux软件包管理器-yum 1. 概念 什么是软件包&#xff1f; 在Linux下安装软件, 一个常…

es实操笔记

Elasticsearch提供了一个非常全面和强大的REST API&#xff0c;可以使用它与集群进行交互。咱们来玩一下。 环境搭建 搭建好es和kinaba&#xff0c;可以访问通过ip:9200查看es的信息&#xff0c;ip:5601打开kinaba。 集群相关 健康检查 curl localhost:9200/_cat/health?v…

Linux 网络之netlink 简介

文章目录前言一、Netlink用户态应用的使用1.1 Netlink socket1.2 Netlink宏操作二、Netlink对应数据结构2.1 struct sockaddr_nl2.2 struct nlmsghdr2.3 struct msghdr三、用户层实例参考资料前言 The Netlink socket family 是一个 Linux 内核接口&#xff0c;用于内核和用户…

网课查题接口

网课查题接口 本平台优点&#xff1a;免费查题接口搭建 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a;题库后台http://daili.jueguangzhe.cn/ 题库后台&am…

[前端基础] CSS3 篇

CSS3 使用了层叠样式表技术&#xff0c;可以对网页布局、字体、颜色、背景灯效果做出控制。CSS3 作为 CSS 的进阶版&#xff0c;拆分和增加了盒子模型、列表模块、语言模块 、背景边框 、文字特效 、多栏布局等等。CSS3 的改变有很多&#xff0c;增加了文字特效&#xff0c;丰富…

C#基础知识

文章目录简介隐式显式转换ifswitch循环随机数方法do whilestatic递归数组foreachvar推断类型,父类二维数组&#xff0c;交错数组当方法参数类型确定&#xff0c;个数不确定时数据类型类型分类快捷方式函数参数&#xff1a;引用、输出参数装箱&#xff0c;拆箱string储存地址枚举…

Netty入门——组件(Channel)二

目录一、channel的主要作用二、EventLoop处理io任务代码示例2.1、服务端代码示例2.2、客户端代码示例2.3、服务端和客户端查看控制台输出结果三、CloseFuture关闭问题代码示例3.1、服务端代码示例3.2、客户端代码示例3.3、服务端和客户端查看控制台输出结果3.4、CloseFuture关闭…

【C++ STL】-- deque与vector相比的优势与劣势

目录 deque容器 与stack相比deque的优缺点&#xff1a; deque的迭代器 deque的成员函数 deque容器 deque的相关文档 deque与vector十分的相识。vector是单向开口的连续线性空间&#xff08;单向扩容&#xff09;&#xff0c;deque则是一种双向开口的连续线性空间&#xff…

GIC/ITS代码分析(9)中断应用实例之IPI中断

PPI中断为外设私有中断&#xff0c;在ARM64上arch_timer为PPI中断。这里以arch_timer为例&#xff08;代码位置drivers/clocksource/arm_arch_timer.c&#xff09;&#xff0c;作应用实例讲解。 先对ARM64通用定时器作简要介绍。通用定时器为Arm core提供标准定时器。通用定时器…