PyTorch 1.13简介

这篇具有很好参考价值的文章主要介绍了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  稳定版和测试版

PyTorch 1.13简介,# 模型量化与部署,# 深度学习,pytorch

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 的速度及效率性能。

PyTorch 1.13简介,# 模型量化与部署,# 深度学习,pytorch
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 转换

PyTorch 1.13简介,# 模型量化与部署,# 深度学习,pytorch

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 model
  model(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 等多个实例,您可以访问控制台,在公开资源中搜索查看。

参考文章来源地址https://www.toymoban.com/news/detail-586418.html

到了这里,关于PyTorch 1.13简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习:Pytorch常见损失函数Loss简介

    此篇博客主要对深度学习中常用的损失函数进行介绍,并结合Pytorch的函数进行分析,讲解其用法。 L1 Loss计算预测值和真值的平均绝对误差。 L o s s ( y , y ^ ) = ∣ y − y ^ ∣ Loss(y,hat{y}) = |y-hat{y}| L oss ( y , y ^ ​ ) = ∣ y − y ^ ​ ∣ Pytorch函数: 参数: size_average (bool, optional) –

    2024年02月13日
    浏览(43)
  • (9-5)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):深度强化学习算法模型

    本项目的深度强化学习算法的是基于Stable Baselines实现的,Stable Baselines是OpenAI Baselines的一个分支,经过了重大的结构重构和代码清理工作。另外,在库FinRL中包含了经过调优的标准深度强化学习算法,如DQN、DDPG、多智能体DDPG、PPO、SAC、A2C和TD3,并且允许用户通过调整这些深度

    2024年01月25日
    浏览(52)
  • 【书生·浦语大模型实战营05】《(5)LMDeploy 大模型量化部署实践》学习笔记

    课程文档:《LMDeploy 的量化和部署》 定义 将训练好的模型在特定软硬件环境中启动的过程,使模型能够接收输入并返回预测结果 为了满足性能和效率的需求,常常需要对模型进行优化,例如模型压缩和硬件加速 产品形态 云端、边缘计算端、移动端 内存开销巨大 庞大的参数

    2024年01月22日
    浏览(48)
  • 【通义千问】大模型Qwen GitHub开源工程学习笔记(4)-- 模型的量化与离线部署

    量化方案基于AutoGPTQ,提供了Int4量化模型,其中包括Qwen-7B-Chat和Qwen-14B-Chat。更新承诺在模型评估效果几乎没有损失的情况下,降低存储要求并提高推理速度。量化是指将模型权重和激活的精度降低以节省存储空间并提高推理速度的过程。AutoGPTQ是一种专有量化工具。Int4是指

    2024年02月08日
    浏览(45)
  • Transformer模型简介:一种革命性的深度学习模型

    Transformer模型是一种革命性的深度学习模型,最初用于自然语言处理任务,如机器翻译和语言建模。与传统的序列模型相比,如循环神经网络(RNN)和卷积神经网络(CNN),Transformer模型采用一种全新的方式来处理序列数据,即通过注意力机制来学习序列中的关系。 在传统的序列模

    2024年02月15日
    浏览(51)
  • 【深度学习】yolov5 tag7.0 实例分割 从0到1的体会,从模型训练,到量化完成,bug避坑

    这里记录下yolov5 tag7.0的实例分割,因为也用过paddle家族的实例分割,能够训练出来,但是开放restiful api时遇到点小问题,还是yolov爽啊!!通过这篇博文,您可以一步步的搭建自己的分割网络。 git仓库:https://github.com/ultralytics/yolov5/tree/v7.0 在tag7.0开始支持的,号称sota,在mas

    2024年02月06日
    浏览(46)
  • GPU深度学习环境搭建:Win10+CUDA 11.7+Pytorch1.13.1+Anaconda3+python3.10.9

    在命令行中输入【nvidia-smi】可以当前显卡驱动版本和cuda版本。 根据显示,显卡驱动版本为:Driver Version: 516.59,CUDA 的版本为:CUDA  Version 11.7。 此处我们可以根据下面的表1 显卡驱动和cuda版本对应关系得知,Driver Version: 527.47  516.31,所以可以使用 CUDA Version 11.7 CUDA工具版本

    2024年04月26日
    浏览(74)
  • Vicuna-13B量化模型单GPU可跑

    链接在这(需要科学上网) Vicuna-13B: Best Free ChatGPT Alternative According to GPT-4 🤯 | Tutorial (GPU) 有人在B站转了人家的视频 ChatGPT:在你的本地电脑上运行Vicuna-13B 🤯|教程 (GPU) 下面就是部署的步骤,其中有一步需要科学上网 因为他这个模型就认cuda:11.7版本,所以我用了人家官方模

    2024年02月06日
    浏览(74)
  • 【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

    大家好,今天和各位分享一下深度强化学习中的 近端策略优化算法 (proximal policy optimization, PPO ),并借助 OpenAI 的 gym 环境完成一个小案例,完整代码可以从我的 GitHub 中获得: https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model PPO 算法之所以被提出,根本原因在于 Polic

    2023年04月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包