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的:

python 复制代码
tensor = torch.rand([10, 5], device=torch.device('cuda:0'))

尽量避免的:

python 复制代码
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

python 复制代码
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

相关推荐
scx_link3 分钟前
Word2Vec词嵌入技术和动态词嵌入技术
人工智能·自然语言处理·word2vec
云梦谭5 分钟前
Cursor 编辑器:面向 AI 编程的新一代 IDE
ide·人工智能·编辑器
IT_陈寒15 分钟前
Redis性能提升50%的7个关键优化策略,90%开发者都不知道第5点!
前端·人工智能·后端
乐迪信息21 分钟前
乐迪信息:AI摄像机在智慧煤矿人员安全与行为识别中的技术应用
大数据·人工智能·算法·安全·视觉检测
AI人工智能+21 分钟前
炫光活体检测技术:通过光学技术实现高效、安全的身份验证,有效防御多种伪造手段。
人工智能·深度学习·人脸识别·活体检测
咔咔一顿操作31 分钟前
第七章 Cesium 3D 粒子烟花效果案例解析:从原理到完整代码
人工智能·3d·信息可视化·cesium
微三云-轩43 分钟前
区块链:重构企业数字化的信任核心与创新动力
人工智能·小程序·区块链·生活·我店
君名余曰正则44 分钟前
机器学习04——决策树(信息增益、信息增益率、ID3、C4.5、CART、剪枝、连续值缺失值处理)
人工智能·决策树·机器学习
中电金信44 分钟前
中电金信:AI重构测试体系·智能化时代的软件工程新范式
人工智能·重构·软件工程
多恩Stone1 小时前
【3DV 进阶-2】Hunyuan3D2.1 训练代码详细理解下-数据读取流程
人工智能·python·算法·3d·aigc