PyTorch 1.13简介

# 1.  PyTorch 1.13

据官方介绍,PyTorch 1.13 中包括了 BetterTransformer 的稳定版,且不再支持 CUDA 10.2 及 11.3,并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。

1.1 主要更新

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

此外改进还包括对 Transformer 模型中常用 size 进行加速的 add+matmul 线性代数内核,现已默认启用嵌套 Tensor。

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

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

  3. 测试为 M1 芯片 Mac 提供本地构建,并提供更好的 PyTorch API 支持。

1.2  稳定版和测试版

在这里插入图片描述

2.  Stable Features

2.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.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 进行了各种改进。

3.  Beta版本 Features

3.1 functorch

functorch 是 PyTorch 中的一个库;

与 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 了。

提供可组合的 vmap(向量化)和 autodiff 转换

在这里插入图片描述

3.2 集成英特尔 VTune™ Profiler 及 ITT

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


with torch.autograd.profiler.emit_itt():for i in range(10):torch.itt.range_push('step_{}'.format(i))model(input)torch.itt.range_pop()

3.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 modelmodel(data)

3.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) 。

4. Prototype Features

4.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。

4.2. CUDA Sanitizer

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

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

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

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

4.3. 部分支持 Python 3.11

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

ref

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

参考

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

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

相关文章

C++第四讲

思维导图 仿照string类&#xff0c;实现myString类 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myStri…

【数据结构】时间复杂度---OJ练习题

目录 &#x1f334;时间复杂度练习 &#x1f4cc;面试题--->消失的数字 题目描述 题目链接&#xff1a;面试题 17.04. 消失的数字 &#x1f334;解题思路 &#x1f4cc;思路1&#xff1a; malloc函数用法 &#x1f4cc;思路2&#xff1a; &#x1f4cc;思路3&…

如何使用DiskPart命令行格式化分区?

想要格式化磁盘分区&#xff0c;您可以使用磁盘管理工具&#xff0c;或在Windows文件资源管理器中右键单击驱动器并选择“格式化”。如果您更想使用命令行来格式化磁盘&#xff0c;那么Windows自带的DiskPart将是首选。 DiskPart有很多优点&#xff0c;例如&#xff0c;如果您想…

活动页服务端渲染探索

目标 通过采用在服务端渲染激励页的方式&#xff0c;降低页面加载白屏时间&#xff0c;从而提升激励 H5 渲染体验。 架构设计 前端服务框架调研选型 只对比分析以下两种方案&#xff1a; Vue3 Nuxt3 WebpackNext.js React Node.js ’Nuxt3Next.js介绍Nuxt是一个基于Vu…

Clickhouse基础和基本优化

CK基础和基本优化 一、ClickHouse的特点列式存储高吞吐写入能力数据分区与线程级并行表引擎的使用MergeTreeReplacingMergeTreeSummingMergeTree 二、SQL操作1.Insert2.Update 和 Delete3.查询操作4.alter操作5.导出数据 三、基于表的分布式集群集群写入流程&#xff08; 3分片…

旅游卡加盟代理合伙人模式软件开发

旅游卡加盟代理合伙人模式是近年来逐渐兴起的一种旅游产业发展模式&#xff0c;它通过将旅游卡加盟商与代理商紧密结合&#xff0c;实现资源共享、风险共担、合作共赢的目标。而软件开发作为旅游卡加盟代理合伙人模式的重要技术支持&#xff0c;对于该模式的实施和发展起着至关…

深入理解Java虚拟机(二)Java内存区域与内存溢出异常

一、前言 对于Java程序员来说&#xff0c;在虚拟机自动内存管理机制的帮助下&#xff0c;不再需要为每一个new操作去写配对的delete/free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;看起来由虚拟机管理内存一切都很美好。不过&#xff0c;也正是因为Java程序…

iOS APP外包开发的语言比较

iOS APP是Apple公司运行在iPhone手机上的APP&#xff0c;开发这样的APP有两种开发语言可以选择&#xff0c;都是由Apple公司提供的语言。其中Objective-C使用时间相对较长&#xff0c;有历史兼容考虑&#xff0c;而Swift是新的开发语言&#xff0c;更符合近些年开发语言的发展理…

05 Docker 安装常用软件 (mongoDB)

目录 1. mongoDB简介 1.1 mongodb的优势 2. mongodb的安装 2.1 创建数据文件夹 2.2 备份日志 2.3 配置文件夹 2.4 创建两个文件 ---> 2.4.1 配置如下: 2.5 拉取mongodb 2.6 运行容器 2.7 进入mongodb容器 ---> 2.7.0 高版本(6.0)以上是这样的 , 旧版的没研究 …

服务保护 Sentinel

服务保护 Sentinel Sentinel 介绍Sentinel 的下载使用Sentinel 流控规则流控规则介绍流控规则演示 Sentinel 热点规则Sentinel 隔离和熔断降级Feign 整合 Sentinel线程隔离熔断降级 Sentinel 授权规则Sentinel 系统规则Sentinel 自定义异常Sentinel 资源定义url 默认资源抛出异…

【力扣周赛】第 354 场周赛

文章目录 Q1&#xff1a;6889. 特殊元素平方和思路——简单模拟题竞赛时代码 Q2&#xff1a;6929. 数组的最大美丽值思路——差分数组&#xff0c;计算每个数字可能出现的次数竞赛时代码解法2——排序 双指针⭐解法3——排序 二分查找 Q3&#xff1a;6927. 合法分割的最小下标…

Linux 漏洞扫描

Linux 漏洞扫描程序会仔细检查基于 Linux 的系统&#xff0c;以减轻潜在的风险和漏洞。 什么是 Linux 漏洞扫描程序 Linux 漏洞扫描程序是一种专门的漏洞扫描工具&#xff0c;旨在识别基于 Linux 的系统中的安全漏洞和弱点,它会扫描配置错误、过时的软件版本和已知漏洞。 为…

pytorch学习--第一个模型(线性模型)

目标 我们想通过随机初始化的参数 ω , b \omega ,b ω,b能在迭代过程中使预测值和目标值能无限接近 y ω x b y\omega xb yωxb 定义数据 x torch.rand([60, 1])*10 y x*2 torch.randn(60,1)构建模型 利用pytorch中的nn.Module 想要构建模型时&#xff0c;继承这个类…

(四)「消息队列」之 RabbitMQ 路由(使用 .NET 客户端)

0、引言 先决条件 本教程假设 RabbitMQ 已安装并且正在 本地主机 的标准端口&#xff08;5672&#xff09;上运行。如果您使用了不同的主机、端口或凭证&#xff0c;则要求调整连接设置。 获取帮助 如果您在阅读本教程时遇到问题&#xff0c;可以通过邮件列表或者 RabbitMQ 社区…

Meta发布升级大模型LLaMA 2:开源可商用

论文地址&#xff1a;https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/ Github地址&#xff1a;https://github.com/facebookresearch/llama LLaMA 2介绍 Meta之前发布自了半开源的大模型LLaMA&#xff0c;自从LLaMA发布以来…

C# WPF实现动画渐入暗黑明亮主题切换效果

C# WPF实现动画渐入暗黑明亮主题切换效果 效果图如下最近在Bilibili的桌面端看到一个黑白主题切换的效果感觉&#xff0c;挺有意思。于是我使用WPF尝试实现该效果。 主要的切换效果&#xff0c;基本实现不过还存在一些小瑕疵&#xff0c;比如字体等笔刷不能跟随动画进入进行切…

Docker简介

Docker简介 文章目录 Docker简介一、Docker1.什么是docker?2.容器引擎3.容器和虚拟机的区别4.namespace&#xff08;命名空间&#xff09;5.三大容器核心概念镜像容器仓库 二、Docker镜像操作1.搜索镜像2.获取镜像镜像加速下载 3.查看本地下载镜像4.获取镜像详细信息5.为本地镜…

SQL 上升的温度

197 上升的温度 SQL架构 表&#xff1a; Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是这个表的主键 该表包含特定日期的温度信息 编写一个 SQL …

事务@transactional执行产生重复数据

背景 系统设计之初&#xff0c;每次来新请求&#xff0c;业务层会先查询数据库&#xff0c;判断是否存在相同的id数据&#xff08;id是唯一标识产品的&#xff09;&#xff0c;有则返回当前数据库查到的数据&#xff0c;根据数据决定下一步动作&#xff0c;没有则认为是初次请…

销售自动化如何提高团队生产力?从这5个方面发力

任何用于减少人工劳动和缩短销售流程相关任务时间的技术&#xff0c;都可定义为销售自动化。 对于忙碌的销售人员来说&#xff0c;流程自动化是真正的救星。它可以使他们的工作简化30%&#xff0c;让他们更专注于创收任务。这将显著提高团队的工作效率&#xff0c;并带来许多其…