pytorch GPU cuda 使用 报错 整理

部署运行你感兴趣的模型镜像

1. 使用指定GPU(单卡)

1.1 方法1:os.environ[‘CUDA_VISIBLE_DEVICES’]

os.environ['CUDA_VISIBLE_DEVICES'] = '2'
model = Net().to('cuda')
data = data.to('cuda')

1.2 方法2:torch.device(‘cuda:2’)

device = torch.device('cuda:2')
model = Net().to(device)
data = data .to(device)

1.3 报错1:RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously reported

解决方法:方法1和方法2不要混着使用

1.4 torch.load报错:RuntimeError: CUDA out of memory…

解决方法:
1)显存不够只能换卡
2)即使使用方法2指定设备,torch.load也默认在0卡(保存卡)上加载。
所以,可以使用方法1指定gpu,或torch.load(path, map_location=lambda storage, loc: storage.cuda(2))使用这个代码会使加载的内容一直放在该gpu上; torch.load(path, map_location='cpu')使用cpu。

2. 使用指定GPU(多卡 DataParallel)

2.1 正常DP使用(未测试)

DP的使用很简单,使用DataParallel将模型包裹住即可,训练代码与单卡一致。
代码:

import torch
from torch.nn import DataParallel
model = Model()
model = DataParallel(model, device_ids = [0, 1])

2.2 pyg中DP的使用

注意:使用torch geometric(pyg)要用torch_geometric.nn里的DataListLoader!!!
代码:

device_ids = [0, 2, 3]
# 需指定主卡,默认是0卡,不指定device会报错:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:2 and cuda:0!
device = torch.device(f'cuda:{device_ids[0]}')
model = Net()
model = DataParallel(model, device_ids = device_ids)
model.to(device)
train_dataset = MyDataset(xx)
train_loader = DataListLoader(train_dataset, batch_size=bs, shuffle=True)

def run_a_train_epoch(model, data_loader):
    model.train()
    for _, data_list in enumerate(data_loader):
        pred = model(data_list).float()
        y = torch.tensor([data.y for data in data_list]).to(pred.device)

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

### 如何正确配置虚拟环境并成功安装 PyTorch 为了确保在虚拟环境中能够顺利安装和使用 PyTorch,以下是详细的指导: #### 虚拟环境的创建与管理 通过 Conda 工具可以方便地管理和隔离不同的开发环境。首先需要创建一个新的虚拟环境,并指定所需的 Python 版本: ```bash conda create -n my_env python=3.8 ``` 上述命令会创建名为 `my_env` 的新环境,并将其 Python 版本设定为 3.8[^2]。 激活该虚拟环境可以通过以下两种方式之一完成: ```bash conda activate my_env ``` 或者对于某些旧版 Anaconda 用户: ```bash source activate my_env ``` 当虚拟环境被成功激活后,在终端提示符前会出现 `(my_env)` 字样,这表明当前工作目录已切换至此特定环境之下。 #### 验证虚拟环境中的软件包列表 进入目标虚拟环境之后,可通过执行如下指令来查看目前所含有的所有库及其对应版本号: ```bash conda list ``` 这一操作有助于确认是否已经存在任何预设依赖项以及它们的具体情况。 #### CUDA 和 cuDNN 设置 如果计划利用 NVIDIA 显卡加速计算过程,则需注意匹配正确的 CUDA 及其附属组件 cuDNN 的版本号。例如,在 Ubuntu 系统上可编辑 `.bashrc` 文件加入路径变量定义: ```bash export PATH=/usr/local/cuda-10.2/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH ``` 随后重新加载配置文件使更改生效: ```bash source ~/.bashrc ``` 以上步骤确保操作系统能找到相应的 GPU 库位置以便支持后续深度学习框架调用硬件资源的需求[^5]。 #### 安装 PyTorch 并验证安装状态 根据官方推荐方法,最简便的方式是从官网获取适合个人系统的具体 pip 或 conda 命令行参数组合来进行安装。通常情况下,采用以下形式即可满足大多数需求场景下的基本功能实现: ```bash conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch ``` 这里特别指定了 cuda toolkit 的版本为 10.2 来保持一致性[^1]。 最后一步非常重要——测试刚刚完成部署后的实例能否正常运作。打开 Python 解释器尝试导入模块并打印版本信息作为初步检验手段: ```python import torch print(torch.__version__) ``` 如果没有报错且返回预期数值,则证明整个流程顺利完成。 #### 性能优化建议 即使完成了基础架构搭建,仍可能存在进一步提升空间。比如调整内存分配策略、监控实际运行效率等措施都可以帮助改善整体表现水平[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值