·
日常教程 ·
146399
这篇文章主要讲解了pytorch中gpu与gpu、gpu与cpu在load时是怎么相互转化的,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
问题描述
有时在加载已训练好的模型时,会出现 out of memory 的错误提示,但仔细检测使用的GPU卡并没有再用且内存也没有超出。
经查阅发现原来是训练模型时使用的GPU卡和加载时使用的GPU卡不一样导致的。个人感觉,因为pytorch的模型中是会记录有GPU信息的,所以有时使用不同的GPU加载时会报错。
解决方法
gpu之间的相互转换。即,将训练时的gpu卡转换为加载时的gpu卡。
torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'}) # gpu 1 --> gpu 0
当然,你也可以直接将加载模型时使用的gpu卡改为和训练时的一样。但在多人使用一个服务器时,你想用的gpu卡已被使用,就需按上面方法转换gpu。
拓展
cpu --> cpu 或 gpu --> gpu
checkpoint = torch.load('modelparameters.pth')
model.load_state_dict(checkpoint)
cpu --> gpu 0
torch.load('modelparameters.pth', map_location=lambda storage, loc: storage.cuda(0))
gpu --> cpu
torch.load('modelparameters.pth', map_location=lambda storage, loc: storage)
gpu 1 --> gpu 0
torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'})
补充知识:pytorch model.cuda()花费时间很长
如果pytorch在进行model.cuda()操作需要花费的时间很长,长到你怀疑GPU的速度了,那就是不正常的。
如果你用的pytorch版本是0.3.0,升级到0.3.1就好了!
看完上述内容,是不是对pytorch中gpu与gpu、gpu与cpu在load时是怎么相互转化的有进一步的了解,如果还想学习更多内容,欢迎关注本站行业资讯频道。
PyTorchGeometric是大规模GNN训练默认选择,因其原生支持图数据封装(Data/HeteroData)、邻居采样(NeighborLoader)、稀疏算子加速及分布式训练,而原生PyTorch缺乏这些能力,直接实现易导致OOM或低效。 PyTorchGeometric为什么是大规模GN...
MirroredStrategy的梯度同步并非真正“自动完成”,因其依赖严格的作用域约束:模型构建、编译、数据集分发(需experimental_distribute_dataset)、训练执行(fit或自定义循环)均须在strategy.scope()内,否则梯度无法被策略接管而致同步失效。 为什...
PyTorch1.10+中LongTensor报错根源是API移除而非dtype不匹配;应统一用torch.tensor(...,dtype=torch.long)或x.to(torch.long)显式指定long类型。 PyTorch中LongTensor报错的根源是dtype不匹配,不是构造方式...
PyTorch官方torchvision.datasets.EMNIST在某些版本中存在下载链接失效或校验失败问题,导致“Filenotfoundorcorrupted”错误;本文提供手动下载+本地路径加载的可靠解决方案,并附完整代码示例与关键注意事项。 pytorch官方`torchvision....
异步编程无法加速CPU密集型任务,因asyncio受GIL限制;必须用ProcessPoolExecutor配合awaitrun_in_executor,并加timeout、异常处理及复用进程池。 异步编程本身不能加速CPU密集型任务,asyncio的事件循环仍在单线程里跑,GIL没被绕过。真要提速...
必须先确认显卡驱动版本≥CUDA要求的最低版本,再严格匹配TensorFlow所需的CUDA与cuDNN组合,且2.10起需用pipinstalltensorflow[and-cuda]安装GPU版。 确认显卡驱动是否支持目标CUDA版本 TensorFlowGPU版不是装上就跑,第一步得看显卡驱动...
最常见原因是相对路径错误,应使用绝对路径并检查文件存在性;文件损坏或格式不符会导致EOF或UnpicklingError;键名不匹配需核对并清洗前缀;跨设备加载必须指定map_location。 torch.load读取.pth文件时路径不对或报错OSError:Nosuchfileordirect...
PyTorch中生成热力图需取中间层activation[0]切batch维,逐通道min-max归一化后mean(0),(act*255).byte()转uint8,再用PIL或cv2保存;注意通道顺序、值域、颜色空间对齐。 PyTorch里怎么把model(x)中间某层的输出变成热力图图片 直接...