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

相关推荐
视界宝藏库5 分钟前
多元 AI 配音软件,打造独特音频体验
人工智能
xinxiyinhe33 分钟前
GitHub上英语学习工具的精选分类汇总
人工智能·deepseek·学习英语精选
byxdaz41 分钟前
PyTorch中Linear全连接层
pytorch
zhuyixiangyyds43 分钟前
day21和day22学习Pandas库
笔记·学习·pandas
Start_Present1 小时前
Pytorch 第十二回:循环神经网络——LSTM模型
pytorch·rnn·神经网络·数据分析·lstm
ZStack开发者社区1 小时前
全球化2.0 | ZStack举办香港Partner Day,推动AIOS智塔+DeepSeek海外实践
人工智能·云计算
jingjingjing11112 小时前
笔记:docker安装(ubuntu 20.04)
笔记·docker·容器
Spcarrydoinb2 小时前
基于yolo11的BGA图像目标检测
人工智能·目标检测·计算机视觉
DreamBoy@2 小时前
【408--考研复习笔记】操作系统----知识点速览
笔记
非ban必选3 小时前
spring-ai-alibaba第四章阿里dashscope集成百度翻译tool
java·人工智能·spring