pytorch在CPU和GPU上加载模型

本文介绍如何在PyTorch中将模型从GPU加载到CPU或将模型从CPU加载到GPU的方法。此外,还详细说明了解决在多GPU环境下训练的模型加载时遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pytorch允许把在GPU上训练的模型加载到CPU上,也允许把在CPU上训练的模型加载到GPU上。

CPU->CPU,GPU->GPU

torch.load('gen_500000.pkl')

GPU->CPU

torch.load('gen_500000.pkl', map_location=lambda storage, loc: storage)

或:

torch.load('xxx.pkl', map_location='cpu')  # pytorch0.4.0及以上版本

CPU->GPU1

torch.load('gen_500000.pkl', map_location=lambda storage, loc: storage.cuda(1))

 

单机多GPU上训练的模型加载

在gpu或cpu上加载一个在多gpu上训练的模型时,会报类似如下错误:

Unexpected key(s) in state_dict: "module.pretrained.conv1.0.weight", "module.pretrained.conv1.1.weight"

这是因为在多gou上训练的模型在保存时候在参数名前多加了一个“module.”前缀,加载的时候把这个前缀去掉就行了:

model = get_model(args.model)
device = torch.device('cpu')
# device = torch.device('cuda:0')
state_dict = torch.load('xxx.pth', map_location=device)

from collections import OrderedDict
state_dict_new = OrderedDict()
for k, v in state_dict.items():
    name = k[7:]  # 去掉 `module.`
    state_dict_new[name] = v

model.load_state_dict(state_dict_new)

model.eval() #eval 模式

 

### 安装配置 PyTorch 以支持 Intel Arc 显卡 为了在带有 Intel Arc 显卡的系统上成功安装并配置 PyTorch,需遵循一系列特定的操作流程。这些操作不仅涉及软件环境的搭建,还包括必要的硬件准备。 #### 准备工作 确保已安装最新的显卡驱动程序对于发挥最佳性能至关重要[^3]。访问官方文档获取详细的安装指导可以有效避免潜在兼容性问题的发生。 #### 使用 Docker 部署 PyTorch 环境 利用 Docker 及其集成工具如 Docker Desktop WSL2,在 Windows 平台上创建一个稳定且高效的开发环境成为可能。这种方法的优势在于能够快速部署预构建镜像,并减少本地依赖冲突的风险。具体来说,通过调用 `docker run` 命令拉取含有针对 Intel GPU 优化过的 PyTorch 版本容器镜像,即可实现一键式设置完整的机器学习框架栈[^1]。 ```bash docker pull pytorch/pytorch:intel-xpu-latest ``` 上述命令会下载由社区维护、专门适配于 Intel XPU (包括 CPU GPU) 的最新版 PyTorch 镜像文件。 #### 手动安装 PyTorch 如果倾向于不借助虚拟化技术而直接在宿主机操作系统内部署,则可以选择手动方式完成整个过程。考虑到国内网络状况可能导致默认 Python 包索引源速度较慢甚至连接失败的情况,建议采用更加快捷稳定的第三方镜像站点作为替代方案来进行包管理器(`pip`)的相关操作[^2]。 ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/intel_xpu/ ``` 此指令指定了额外的 URL 来加速从 Intel 提供的仓库中检索适用于 Intel 架构的二进制分发包的过程。 #### 测试安装成果 最后一步是验证新安装好的库能否正常识别到系统的图形处理单元。可以通过执行一段简单的测试脚本来确认这一点: ```python import torch if __name__ == "__main__": device = 'xpu' if torch.xpu.is_available() else 'cpu' print(f'Device set to :{device}') # 创建张量并在指定设备上分配内存空间 tensor_example = torch.ones(5, device=device) print(tensor_example) ``` 当输出显示 Device 设置为 xpu 而不是 cpu 时,即表明已经成功启用了对 Intel Arc GPU 的支持。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值