【问题标题】:when training simple code of pytorch, cpu ratio increased. GPU is 0% approximately训练 pytorch 的简单代码时,cpu 比率增加。 GPU 大约为 0%
【发布时间】:2019-06-20 14:40:06
【问题描述】:

我正在做Pytorch的教程。

代码已明确完成。但我有一个问题。

这与我的 CPU 使用率有关。 如果我参加培训,CPU 使用率将增加到 100%。 但 GPU 大约为 0%。

我安装了CUDA 9.2cudnn。 我已经检查了关于torch.cuda.is_available()==True的按摩。

没问题,还是我的设置有误?

【问题讨论】:

  • 您能否添加您是否尝试先将单个张量移动到 GPU,并查看是否可以(手动)在开始训练之前在 GPU 上执行操作?您是否确保所有内容都可用于 GPU,并且您的模型也在正确的设备上定义?另外,您是否安装了 pytorch-cpu 而不是“完全成熟”的安装?
  • @dennlinger 感谢您的评论。我像这样添加我的代码: device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") inputs, labels = data # 假设我们在一台 CUDA 机器上,这应该打印一个CUDA device: # print(device) inputs, labels = inputs.to(device), labels.to(device) net.to(device) // 这清楚吗?现在cpu比例是23%,gpu是3% :(
  • 请将您的代码添加为问题的编辑,而不是添加到 cmets 中,以获得更好的可见性。

标签: python visual-studio-2017 gpu pytorch


【解决方案1】:

1.. 您是否将模型和输入张量显式上传到 GPU 上,显示如下 https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#training-on-gpu

例如,

# Configure your device
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# Upload your model onto GPU
net.to(device)
# Upload your tensor onto GPU
inputs, labels = inputs.to(device), labels.to(device)

2.. 您也可以使用“gpustat”来检查 GPU 使用情况。 https://github.com/wookayin/gpustat

安装后,可以在终端输入“gpustat”
如果你的代码在 GPU 上运行,GPU 的使用会增加。

3.. 并检查您是否已将以下 CUDA 路径添加到您的 bashrc 文件中。
以下 CUDA 路径是 Ubuntu Linux 上的一般路径,
但该路径可能因操作系统或您的设置而异。

你可以通过输入 vim ./.bashrc 打开 bashrc 文件
如果您使用 Ubuntu Linux,则当您的当前目录位于主目录时。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

4.. 还要检查您的图形驱动程序是否已安装 如果您使用 Ubuntu Linux,请在终端上键入 nvidia-smi。

【讨论】:

  • 感谢您的评论 :) 我使用了这样的命令 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu"),结果,我可以使用我的 GPU。但我留下了一个问题。我无法理解这样的命令输入,labels = inputs.to(device),labels.to(device)。你能给我解释一下吗?谢谢! 혹시 한국 분이신가요 ㅠㅠ? 저CUDA사용은만만。输入,标签= inputs.to(设备),labels.to(设备)이커맨드를사용하는이유와사용해야하는지하게하게하게이해하게해되서요ㅠㅠ혹시해주실있으시다....
  • @makeastir 안녕하세요。 기본적으로 연산은 CPU 랑 RAM 에서 처리됩니다。 수동으로矩阵(输入이미지같은)를 GPU 에올려야 GPU 에서 연산을 할수 있습니다。 그 부분이 input.to(device) 이고 net.to(device)를 써서 만들어놓은 模型 을 GPU 에 올리는 것도 똑같습니다。 device 부분은 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") 여기에서 설정된것이고요。 이게 기본 흐름이니까 이 흐름대로 세부적인건 설정해보시면 될거에요 gpustat 설치해서 확인해도 되고해도 되고>
  • 답변감사합니다。 pytorch.org의 教程만으로는 GPU 사용에 대한 이해가 부족한거 같아, 혹시 pytorch CUDA 사용에 도움이 될만한 사이트가 있을 답변 감사드립니다 :)
  • @makeastir GPU 사용법은 하나가 아니라 여러개가 될수도 있습니다。 Github 에서 horovod 라고 찾으시면 볼수 있는데 이런 외부 라이브러리도 있고요。单个gpu에서는그나마정형인방법으로서위에사용하는것이일반적인이고차후적적에를를사용할는分布式를사용또는사용한다든지든지식으로방법이있을있을있습니다。 그에 따라 코드도 조금 추가/수정 해야하고요。 기본적인것은 Pytorch 공식홈에서 보고 저도 필요할 때마다 pytorch gpu, pytorch multi gpu 라쳠 검색하면 나오는 자료듴 위의 답변이 도움이 되셨으면 다음에 또 답변 드릴 수 있도록 답변선택 부탁드립니다.
  • 답변 감사드립니다 도움이 됬습니다!
猜你喜欢
  • 2017-07-19
  • 2018-07-04
  • 2019-09-09
  • 2017-03-30
  • 2023-03-10
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
相关资源
最近更新 更多