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

相关推荐

  1. pytorch 支持多的 onnx 算子

    2024-06-08 19:24:04       49 阅读
  2. Pytorch 的forward 函数内部原理

    2024-06-08 19:24:04       17 阅读
  3. PyTorch优化分析

    2024-06-08 19:24:04       32 阅读
  4. 4.PyTorch——优化

    2024-06-08 19:24:04       38 阅读
  5. pytroch笔记

    2024-06-08 19:24:04       34 阅读
  6. pytorch内容链接汇总

    2024-06-08 19:24:04       17 阅读
  7. <span style='color:red;'>Pytorch</span>

    Pytorch

    2024-06-08 19:24:04      30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 19:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 19:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 19:24:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 19:24:04       20 阅读

热门阅读

  1. UG12编程怎么没有:深度解析与困惑探寻

    2024-06-08 19:24:04       11 阅读
  2. 《青少年编程与数学》课程方案:3、课程形式

    2024-06-08 19:24:04       7 阅读
  3. EXCEL上传得时候特殊情况

    2024-06-08 19:24:04       11 阅读
  4. 使用Redis缓存需要注意的地方

    2024-06-08 19:24:04       9 阅读
  5. git 下载openNeuro大文件

    2024-06-08 19:24:04       11 阅读
  6. 哈希表(Hash table)

    2024-06-08 19:24:04       8 阅读
  7. C++协程

    2024-06-08 19:24:04       9 阅读
  8. 【vuejs】vm.$set() 的原理解析和方法以及应用场景

    2024-06-08 19:24:04       8 阅读
  9. 设计模式 —— 装饰器模式

    2024-06-08 19:24:04       8 阅读