当前位置: 首页 > news >正文

pytorch 笔记:pytorch 优化内容(更新中)

1 Tensor创建类

1.1 直接创建Tensor,而不是从Python或Numpy中转换

  • 不要使用原生Python或NumPy创建数据,然后将其转换为torch.Tensor
  • 直接用torch.Tensor创建
  • 或者直接:torch.empty(),  torch.zeros(),  torch.full(),  torch.ones(),  torch.eye(),  torch.randint(), torch.rand(), torch.randn()

1.2 直接在GPU中创建,减少.to(device)

ok的:

tensor = torch.rand([10, 5], device=torch.device('cuda:0'))

尽量避免的:

cuda_tensor.cpu()
cuda_tensor.to_device('cpu')
cpu_tensor.cuda()
cpu_tensor.to_device('cuda')
cpu_tensor.to(device)

1.3  使用 torch.from_numpy(numpy_array)torch.as_tensor(others)代替 torch.tensor

  • torch.tensor() 会拷贝数据

2 Dataloader类

2.1 pin_memory

Dataloader(dataset, pin_memory=True)
  • 在深度学习中,使用GPU进行训练时经常需要将数据从CPU传输到GPU。
    • 由于GPU无法直接访问CPU的可分页(非固定)内存,这会导致数据传输效率不高。
    • 可分页内存是指操作系统可以将其页(即数据块)移出到虚拟内存的物理内存。
  • 设置 pin_memory=True 的作用是在数据从CPU传输到GPU之前,先将数据从可分页内存转移到固定内存(也称为页面锁定内存)。
    • 固定内存是一种特殊类型的内存,操作系统不会将其页移出到虚拟内存,这样GPU可以更快地访问这部分内存。
    • 使用固定内存可以避免数据在传输过程中的额外拷贝,因此可以加快数据从CPU到GPU的传输速度。

3 其他

3.1 torch.backends.cudnn.benchmark 设置为 True

  • 在深度学习中,卷积操作是最计算密集的部分之一。NVIDIA 的 cuDNN 库提供了多种卷积算法,每种算法都适用于不同的硬件和卷积配置(如内核大小、步幅、填充等)
  • torch.backends.cudnn.benchmark 设置为 False(默认值)时,PyTorch/cuDNN 会选择一个合适的、通用的卷积算法来执行操作,而不会根据具体的网络配置进行优化。

    • 这种选择通常比较保守,确保了在大多数情况下的可靠性。

  • 当设置为 True 时,PyTorch 会在程序第一次执行每种卷积配置时启用一个自动调优器,这个调优器通过实际运行不同的卷积算法来测试它们的性能。

    • 然后,它选择最快的算法,并在后续的训练过程中使用这一算法。

    • 这个“基准测试”过程只在第一次遇到新的卷积配置时进行。

  • 如果模型的输入大小(包括批大小、图像尺寸等)在整个训练过程中保持不变,开启 torch.backends.cudnn.benchmark 通常可以带来性能提升。这是因为一旦为每种卷积配置选择了最优算法,就不需要再进行调整,每次执行同样的卷积操作都会使用这一最优算法。

参考内容:mp.weixin.qq.com/s?__biz=MzA4ODUxNjUzMQ==&mid=2247500198&idx=1&sn=0eb717d910f4e8452664ac520679b1e1&chksm=902a737aa75dfa6c3ea3e6fad7c4f4799304ccd4d21277d615e7200266775c8fdf480cb66f5a&scene=126&sessionid=1690516061#rd

http://www.lryc.cn/news/367208.html

相关文章:

  • vue 创建一个新项目 以及 手动配置选项
  • c#快速获取超大文件夹文件名
  • 华为OD技术面试-最小异或-2024手撕代码真题
  • 基于SpringBoot+Vue单位考勤系统设计和实现(源码+LW+调试文档+讲解等)
  • Anaconda软件:安装、管理python相关包
  • pinia 重置状态插件
  • 一千题,No.0049(跟奥巴马一起编程)
  • 《python程序语言设计》2018版第5章第46题均值和标准方差-上部(我又一次被作者的出题击倒)
  • 自己做的精灵图制作,图片合成,卓宠,窗口置顶,磁力链下载等工具软件
  • C++协程
  • linux系统——ping命令
  • vue3第三十七节(自定义插件之自定义指令)防重指令
  • 面试高频问题----5
  • 计算机网络 —— 网络层(子网掩码和子网划分)
  • 2024 IDEA最新永久使用码教程(2099版)
  • http协议,tomcat的作用
  • 有哪些针对平台端口的常见攻击手段
  • Xcode下载安装
  • 【 k8s 标签与选择器 】
  • 【模拟-BM99 顺时针旋转矩阵】
  • 今年618,京东和爱奇艺为大屏品质“把关”
  • NSS题目练习7
  • 聊一聊大数据需求的流程
  • 老黄一举揭秘三代GPU!打破摩尔定律,打造AI帝国,量产Blackwell解决ChatGPT全球耗电难题
  • HTML静态网页成品作业(HTML+CSS)—— 家乡南宁介绍网页(2个页面)
  • 把qml程序制作成安装包(Windows)
  • 内网中redis无法连接访问问题
  • Unix环境高级编程第二版:深入探索与实战解析
  • SSL/TLS和HTTPS
  • 苹果将推出“Apple Intelligence”AI系统,专注于隐私和广泛应用|TodayAI