Pytorch 2.0来了!来看看新特性怎么应用到自己的代码里

这篇具有很好参考价值的文章主要介绍了Pytorch 2.0来了!来看看新特性怎么应用到自己的代码里。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

Pytorch2.0和GPT4、文心一言同一时间段发布,可谓是热闹至极,我看了看Pytorch 2.0的文档,一句话概括下,2.0的功能介绍,核心就是torch.compile

opt_module = torch.Compile(module)

加入这行代码就能优化你的模型,优化后的模型和往常使用方式一样,推理速度会提升,比较重要的一点是,可以用于训练或者部署,训练可以传梯度,这次是带有AOTautograd的。然而需要注意的是,这行代码(编译)本身会消耗不少时间。

Pytorch官方在A100上测试了三个模型仓库的模型,加速比如下:
Pytorch 2.0来了!来看看新特性怎么应用到自己的代码里

Speedups for torch.compile against eager mode on an NVIDIA A100 GPU

看起来很不错。那废话不多说,来看看怎么用。

2. 安装和使用Pytorch 2.0

要安装pytorch2.0首先得上pytorch官网:
Pytorch 2.0来了!来看看新特性怎么应用到自己的代码里
需要注意的是,Pytorch 2.0只支持python3.8以上的版本,老环境记得升级一下。

按照官方提供的渠道安装完torch之后,就可以应用到自己的代码里了。这里我简单写一个用来做图像分类的神经网络。

import torch
import torch.nn as nn
import torch._dynamo

# ------ 加入这行,查看编译步骤 ------ #
torch._dynamo.config.verbose=True
# ------ 加入这行,跳过异常 ------ #
torch._dynamo.config.suppress_errors = True

class ThdCNN(nn.Module):
	# 网络结构

def fit(**args):
	# 训练和测试

model= ThdCNN(image_size, num_classes) # 声明和定义神经网络
# ------ 加入这行代码,model可选:default(compile), reduce-overhead, max-autotune ------ #
opt_model = torch.compile(model, mode="default")

optimizer = torch.optim.Adam(opt_model.parameters()) # 定义优化器
fit(opt_model, **args) # 训练和测试

我对三种加速模式进行了一个Epoch的测试(编译用时+训练和测试用时),结果如下:

模型 无加速 default(compile) reduce-overhead max-autotune
CNN(CPU) 101s 8s+78s 8s+85s 9s+81s
CNN(CUDA) 92s 7s+77s 8s+75s 8s+71s

可能是由于模型太小了,所以三种加速模式的效果差距不大,但按照官方的描述,三种模式的适用情况应该是:

  1. default(compile):针对大模型优化,编译时间短,没有额外的内存使用;
  2. reduce-overhead:针对小模型优化,用于减少框架开销,会使用一些额外的内存;
  3. max-autotune:模型整体优化,用于生成最优模型,但编译时间长。

3. 结语

Pytorch2.0与1.x是完全兼容的,因此基本上不会出现迁移错误,不过新特性还有很多没有玩明白的特性,所以在写代码的时候如果出现其他问题,可以参照 故障排除 解决。

compile的控制参数:文章来源地址https://www.toymoban.com/news/detail-408528.html

def torch.compile(model: Callable,
  *,
  mode: Optional[str] = "default",
  dynamic: bool = False,
  fullgraph:bool = False,
  backend: Union[str, Callable] = "inductor",
  # advanced backend options go here as kwargs
  **kwargs
) -> torch._dynamo.NNOptimizedModule
  1. mode 指定编译器在编译时应该优化什么,包括efault(compile), reduce-overhead, max-autotune。
  2. dynamic 是否启用动态形状追踪。
  3. fullgraph 类似于 Numba 的nopython. 是否将模型分解成几个子图。
  4. backend要使用的后端。默认情况下,使用 TorchInductor,所有的后端可以通过torchdynamo.list_backends()查看。

到了这里,关于Pytorch 2.0来了!来看看新特性怎么应用到自己的代码里的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 豪华卧室怎么装?快来看看吧

    一阵轻松的叹息,由柔软的质地、新鲜的空气和扎实的设计带来。只需稍微借鉴这些豪华卧室的创意,这一切都可以成为你的。 用华丽的四柱床提升 四柱床的柱子为床框增添了另一种维度,同时保持通风。长长的线条提高了房间的高度,吸引了视线,同时将你的睡眠空间像

    2024年02月09日
    浏览(40)
  • PyTorch Tutorial 2.0

    这里是对于PyTorch Tutorial-CSDN博客的补充,但是与其相关的NLP内容无关,只是一些基础的PyTorch用法的记录,主要目的是能够自己生成一些模拟的数据集。先介绍随机数的目的是因为based on随机数方法。 当然在看随机数的方法的时候,觉得也有必要对统计学方法进行一个总结,也

    2024年01月21日
    浏览(35)
  • Spring6新特性来了!便捷替代Feign封装RPC接口

    spring6的新特性笔者最近也有在研究,其中在HttpServiceProxyFactory服务代理工厂的使用方式体验上,笔者认为极其像是在用Feign编写RPC接口,使用服务代理工厂我们只要在全局配置单例的服务代里工厂bean再维护一个http interface接口就能统一的管理并根据需求去调用这些RPC服务了,

    2024年02月05日
    浏览(34)
  • Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!

    关于Appium V2 Appium V2 beta版本在2021年发布,从2022年1月1号开始,Appium核心团队不会再维护Appium 1.x版本了,所有近期官方发布的平台驱动(如Android平台的UIAutomator,IOS平台的XCUITest)不再兼容Appium 1.x,需要基于Appium V2版本。 让我们一起看看Appium V2相比Appium 1.x发生了哪些变化 将

    2024年02月07日
    浏览(59)
  • Grok开源来看看怎么用吧

      人不走空                                                                            目录       🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 什么是 Grok? Grok-1 发布摘要 如何安装 Grok 如何尝试 Grok Grok-1 开源许可

    2024年04月09日
    浏览(67)
  • 【Java高级特性】(二)断言机制 Assertion:关于断言机制最全面的讲解来了~

    掌握断言机制的概念、作用与使用; 掌握如何自定义异常; 1.1 概念 断言机制是一种编程技术,用于在程序中检查和验证假设或前提条件是否为真。在软件开发过程中,断言常被用于确保程序代码按照预期执行,并且在遇到错误或异常情况时能够提供有用的诊断信息。 断言

    2024年02月12日
    浏览(32)
  • pytorch 2.0初探:和pytorch 1.13的速度对比

    看到pytorch2.0出来了,而且宣传提速明显,一行代码即可提速43%左右: We then measure speedups and validate accuracy across these models. Since speedups can be dependent on data-type, we measure speedups on both float32 and Automatic Mixed Precision (AMP). We report an uneven weighted average speedup of  0.75 * AMP + 0.25 * float32  s

    2024年02月16日
    浏览(43)
  • 刚刚下载!unity应该怎么操作?来看看基操

    也用了挺长时间unity了,有时候还是容易忘记基础使用,写一些吧。 以下应该是前年吧在学习飞宇unity时简单记录的。 节奏光剑 半条命Alyx hub版本管理 LTS 稳定 2021 创建3d项目 如下菜单栏 菜单栏中的各个菜单: Edit 第二个设置可修改软件使用语言 资源对应在Assets中操作 Game

    2024年02月20日
    浏览(78)
  • 文心一言来了,百度却让自己活成了笑话

    3月16日,百度类ChatGPT应用“文心一言”发布,不过,对于这场由创始人兼CEO亲自上场的发布会,业内和网友并不看好。发布会结束后,许多网友表示,活着活着,百度终于让自己活成了笑话。 网友所谓的笑话主要基于两点: 一是现场的演示全部是提前录制的视频,完全感受

    2024年02月11日
    浏览(49)
  • 高速过孔同进同出后续来了!影响大不大由你们自己说

    高速先生成员---黄刚 话说Chris在上篇文章的结尾留下的悬念,其实在上周的答题里,也有不少粉丝猜到了接下来要验证的内容。我们知道,任何两个结构如果距离变近了,容性就会增加,无论是孔和孔,线和线,平面与平面都不例外,因此在上篇文章中,1.6mm的板厚靠近底层

    2024年02月14日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包