1. 混合精度训练:FP32量化为FP16
  2. 大Batch训练:对前几次梯度进行累加,然后统一进行参数更新,从而变相实现大Batch训练
  3. 梯度检查点:训练时间换显存,在前向阶段传递到 checkpoint 中的 forward 函数会以 torch.no_grad 模式运行,并且仅仅保存输入参数和 forward 函数,在反向阶段重新计算其 forward 输出值。
  4. 尽量实现向量化运算(即使开的数组多占用空间或者操作步数多),
  5. 使用@torch.jit.script装饰器会将pointwise操作融合成一个kernel来执行,比如激活函数(pointwise操作)中的多个运算
  6. pin_memory=True,减少数据传送时间
  7. 直接在GPU上创建tensor,eg:tensor = torch.rand([10,5], device=torch.device('cuda:0'))
  8. torch.tensor()始终复制数据,numpy到tensor使用torch.from_numpy(numpy_array)更快,tensor(或list、tuple)到tensor使用torch.as_tensor(others)更快
  9. 使用tensor.to(device, non_blocking=True)允许异步来overlap data transfers and kernel execution,数据流向构成一个DAG
  10. 输入、输出、中间参数的维度尽量是8的倍数
  11. 如果输入大小不经常变化,在训练前设置torch.backends.cudnn.benchmark=True,cuDNN会自动寻找最好的算法来计算卷积(因为cuDNN算法计算size不同的卷积的性能不同)
  12. 在BN层之前的卷积层中不使用bias(因为BN第一步会减去均值)
  13. Use channels_last memory format for 4D NCHW Tensors
  14. use DistributedDataParallel instead of DataParallel

参考资料:

推荐:Optimize PyTorch Performance for Speed and Memory Effciency(2022)

拿什么拯救我的4G显卡

用PyTorch踩过的坑

Effective PyTorch

优化PyTorch性能的一些trick相关推荐

  1. 首个中文Stable Diffusion模型开源;TPU演进十年;18个PyTorch性能优化技巧 | AI系统前沿动态...

    1. TPU演进十年:Google的十大经验教训 希腊神话中,特洛伊战争的起因是两方争夺世界上最美的女人--海伦,后世诗人将海伦的美貌"令成千战舰为之起航".TPU就像海伦,它的出 ...

  2. Pytorch优化器全总结(四)常用优化器性能对比 含代码

    目录 写在前面 一.优化器介绍 1.SGD+Momentum 2.Adagrad 3.Adadelta 4.RMSprop 5.Adam 6.Adamax 7.AdaW 8.L-BFGS 二.优化器对 ...

  3. 加速神经网络训练方法及不同Optimizer优化器性能比较

    本篇博客主要介绍几种加速神经网络训练的方法. 我们知道,在训练样本非常多的情况下,如果一次性把所有的样本送入神经网络,每迭代一次更新网络参数,这样的效率是很低的.为什么?因为梯度下降法参数更新的公式一 ...

  4. [转]优化Flash性能

    原文:http://www.adobe.com/devnet/flash/articles/optimizing-flash-performance.html 翻译:http://bbs.9ria.c ...

  5. rust python扩展_Rust语言优化Python性能案例

    原标题:Rust语言优化Python性能案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一些性能问题,不过 Sentry 工程师分享的在关键模块上用另外一门语言 Rust ...

  6. iOS 使用Instruments优化内存性能

    iOS 使用Instruments优化内存性能 问题 项目中使用到图片合成视频,发现内存增长十分的迅速,导致一些因为内存引起的问题,本文使用这个案例,结合Instruments工具检测和分析问题,最终 ...

  7. 前端动画优化及性能检测

    前端动画优化及性能检测工具使用 前端使用动画可以分为两类: css 动画 js 动画 我们提倡能够使用 css 完成的动画尽量使用 css ( 即使用 animation 和 keyframes ). ...

  8. 优化程序性能的策略汇总

    写程序需要顾及两个方面:1.程序的简洁性和可维护性.2.程序的运行速度.很多时候这两者是互相制约的,编写可读性良好的代码有时会损失一部分性能,而有些底层优化是以降低程序的可读性和模块性为代价的.实际开 ...

  9. Navicat使用教程:使用Navicat Query Analyzer优化查询性能(第1部分)

    2019独角兽企业重金招聘Python工程师标准>>> 下载Navicat Monitor最新版本 Navicat Monitor 是一套安全.简单而且无代理的远程服务器监控工具.它 ...

最新文章

  1. 抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?
  2. JavaScript之三:jQuery插件开发(一)
  3. ST17H26移植软时钟代码
  4. Linux脚本统计指定目录下文件和文件夹数量
  5. OAuth 2.1 的进化之路
  6. Linux配置rsylogs日志发送,syslog强大而安全的日志处理系统
  7. 在codeigniter中使用Cache_Lite来缓存
  8. 基础才是重中之重~如何整理BLL与DAL层的文件
  9. Android4.0源码编译方法以及错误解决方案
  10. win32汇编实现一个简单的TCP服务端程序(WinSock的简单认知应用)
  11. 免费的思维导图工具推荐(幕布-ProcessOn)2020年最新测评
  12. ipad上的html编辑器,它让我开始尝试在 iPad 上写作:MWeb for iOS 使用体验
  13. 计算机二级word奇偶页眉页脚,Word怎样设置奇偶页眉和页码图解
  14. 四川民办高校计算机专业排名2015,2015中国民办大学最佳专业排行榜10强
  15. Ubuntu下GNOME桌面美化
  16. 域名备案和icp备案有哪些区别?
  17. Mysql之mysql工具
  18. 运行时栈帧结构是怎样的?
  19. 存储空间都去哪了?占用空间比文件大太多?可能是文件系统和默认簇大小惹的祸
  20. 铁匠smith_铁匠的大气散射

热门文章

  1. JavaScrript 实现当前时间具体2020年元旦还有多少天
  2. 计算机网络清单,网络系统材料清单
  3. python中ljust的意思_python中ljust什么意思
  4. canvas绘制简单的霓虹灯效果
  5. HCIE面试题之交换机和路由器收到未知表项数据包如何处理
  6. 像“今日头条”这样的模块滑动特效,大概咋写,求指点 ?---酷课堂iOS交流群问答整理(201805期)
  7. 微信小程序:组件Component接收不到参数id
  8. STA之一.时序分析
  9. 1+X Web前端(初级)理论题考试样题及答案(建议收藏)
  10. 基于卷积神经网络的乳腺肿瘤良恶性分类方法研究