如果设置 CUDA VISIBLE DEVICE,则会出现训练错误 [关闭]
Posted
技术标签:
【中文标题】如果设置 CUDA VISIBLE DEVICE,则会出现训练错误 [关闭]【英文标题】:Get Training error if setting CUDA VISIBLE DEVICE [closed] 【发布时间】:2020-10-06 12:22:26 【问题描述】:我正在使用 PyTorch 和 Cuda 10.1。如果我在训练中设置 CUDA VISIBLE DEVICE,损失总是 NAN,如果我不设置 CUDA VISIBLE DEVICE,一切正常。有谁知道问题出在哪里?
【问题讨论】:
请分享您的代码 【参考方案1】:CUDA_VISIBLE_DEVICES 是存储在 CUDA 文件中的操作系统级别变量,我相信。它控制机器的哪些 GPU 可用于执行 CUDA 计算。它必须在运行代码之前设置。
如果您想控制 pytorch 是否使用 GPU 以及使用哪些 GPU,您应该使用内置的 pytorch.cuda
包进行设备管理。
import torch
n_gpus = torch.cuda.device_count()
if n_gpus > 0:
device = torch.device("cuda:0") # first device as indexed by pytorch cuda
print("cuda:0 is device ".format(torch.cuda.get_device_name(device))) # prints name of device
if n_gpus > 1: # if you have more than one device, and so on
device2 = torch.device("cuda:1")
print("cuda:1 is device ".format(torch.cuda.get_device_name(device2)))
# from here, decide which device you want to use and
# transfer files to this device accordingly
model.to(device)
x.to(device2)
# etc.
您想要使用 CUDA_VISIBLE_DEVICES 的唯一原因是如果您有多个 GPU,并且您需要其中一些可用于 Cuda / Pytorch 任务,而其他 GPU 可用于非 cuda 任务,并且担心关于当注册为 pytorch 设备时,torch.cuda 包在 GPU 上消耗的少量 GPU 内存。对于大多数应用程序来说,这不是必需的,您应该只使用 pytorch 的设备管理。
【讨论】:
【参考方案2】:也许有一些张量不匹配,这些张量转移到 gpu 上,有些在 cpu 上,cuda 无法使用那个张量。
【讨论】:
以上是关于如果设置 CUDA VISIBLE DEVICE,则会出现训练错误 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow:将 CUDA_VISIBLE_DIVICES 设置为不同的值时,GPU util 的巨大差异