新买回来的不带水冷公版GPU,在满负载运行的时候,温度从室温马上飙升到85度,而且模型训练不是几分钟完事,很有可能要长期保持在高温状态下运行,让如此昂贵的GPU一直发烧真是让人太心疼!

首先得到知乎上一位朋友的文章启发,文章点击这里:从零开始组装深度学习平台(GPU散热)。这篇文章写的是在ubuntu X server环境下,通过修改nvidia-settings来修改GPU风扇速度,因为默认的nvidia-settings设置是,即使GPU在计算的时候温度已经达到85度,风扇速度最高不会超过70%,这样就无法很好地为GPU进行散热,因此需要手动修改GPU风扇速度。

注,以下设置都是针对linux系统的GPU设置,windows的朋友请搜索相关文章。

一、如果你有显示器(X server)

可以完全按照上面提到的这篇文章来设置:从零开始组装深度学习平台(GPU散热),这里贴出关键步骤为:

  1. 修改/etc/X11/xorg.cong文件 sudo nano /etc/X11/xorg.conf

  2. 在Section "Device"里面加入 Option "Coolbits" "4"

    Section "Device"Identifier      "Device0"Driver          "nvidia"VendorName      "NVIDIA"Option          "Coolbits" "4"
    EndSection
  3. 重启电脑sudo reboot

  4. 输入:nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=100"

这里GPUTargetFanSpeed=100就是风扇的速度, 100就是风扇运行在100%的速度, 也可以改成其它速度. 注意在新的NVIDIA驱动, GPUCurrentFanSpeed 被改成了 GPUTargetFanSpeed. 另外GPUFanControlState=1表示让用户可以手动调节GPU风扇速度。

感谢原文知乎作者:张三

二、如果你没有显示器

一般在ubuntu上搭建完深度学习环境后,许多朋友习惯把ubuntu的X桌面服务禁用掉,然后通过另一台windows系统的电脑通过ssh来连接GPU机器使用。这个时候X server已经被禁用掉,开机也自动启动命令行模式,上面第一种做法就不适用于这种情况了。原因是,nvidia-settings只能在X桌面环境下运行,若你想强行使用这个设置就会报错:

因此正常情况下,是不可能通过修改这个设置来改变风扇速度的。

但有没有其它方法修改呢?有!你需要骗过系统,让它你有显示器,这就是常说的headless模式。

主要的解决方法是参考了这篇文章:fan speed without X (headless) : powermizer drops card to p8,这篇文章提供了修改风扇速度的脚本,在ubuntu下运行脚本即可实时调节风扇速度,从而为GPU降温。

这里提供详细步骤:

1.克隆这个github仓库到本地目录/opt:https://github.com/boris-dimitrov/set_gpu_fans_public

cd /opt
git clone https://github.com/boris-dimitrov/set_gpu_fans_public

在这个仓库包括上图几个文件,主要起作用的是cool_gpu这个文件,我们把文件夹克隆下来之后,运行cool_gpu就可以调节风扇速度了。

2.修改文件夹名字为set-gpu-fans,因为作者疏忽,在cool_gpu代码中此文件夹被命名为“set-gpu-fans”,然而git clone下来的文件夹名字是“set_gpu_fans_public”。

sudo mv set_gpu_fans_public set-gpu-fans

3.创建一个符号链接,让系统知道这个代码在哪里:

ln -sf ~/set-gpu-fans /opt/set-gpu-fans

4.定位到set-gpu-fans文件夹,输入以下命令:

cd /opt/set-gpu-fans
sudo tcsh
./cool_gpu >& controller.log &
tail -f controller.log

这个命令是运行cool_gpu降温代码,启动后会看到这些实时变化的提示:

在开始计算测试前,我们看看目前GPU的温度:

这里用的是2卡进行计算测试,我们可以看到,2卡的Perf(性能)一项已经被调整为“P2”(其它卡仍为P8),2卡的温度为35度,而且三个风扇的速度均为55%。“P2”指的是nvidia的显卡power state,从P0到P12,最高性能状态为P0,运行计算是为P2,最低功耗(最低性能)为P12。

启动模型训练,我们可以看到程序正在不断地自动调节温度:

当运行训练模型一段时间后,最终的温度状态如下图:

风扇被全部调节到80%的速度,温度稳定在65度!对比文章开头的数据,显卡温度从84度降到65度,整整下降了20度!

三、一点要注意的

在上面第二部分的文章出来之前,网上还流传着另一篇文章,那篇可以说是最原始的版本,上面第二部分的代码正是基于该篇原始版本文章改进的,链接地址在这里:Set fan speed without an X server.

但这篇文章的原始代码存在一个严重问题:虽然能够强制改变风扇速度,但GPU会被降频工作,power state会被强制降为P8,导致运算性能严重下降!

可能是那篇文章发表时间比较早,不大适用现在最新的显卡和驱动,因此才有了上面第二部分的改进版本,所以大家不要使用原始版本的代码,否则GPU会被限制性能。


作者:人工智豪链接:http://www.jianshu.com/p/ab956df5e40c來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

深度学习训练时GPU温度过高?几个命令,为你的GPU迅速降温。相关推荐

  1. 深度学习——训练时碰到的超参数

    深度学习--训练时碰到的超参数 文章目录 深度学习--训练时碰到的超参数 一.前言​ 二.一些常见的超参数 学习率(Learning rate) 迭代次数(iteration) batchsize e ...

  2. 深度学习训练时GPU利用率忽高忽低如何解决?

    在windowas上进行深度学习的时候,可能会出现GPU负载忽高忽低的现象,(突然98,突然50...) 这种情况很有可能是 读数据或者数据预处理的时间过长,读数据部分可以尝试把全部或者部分数据放在内 ...

  3. 深度学习训练时GPU利用率忽高忽低问题

    gpu利用率经常在0-99%之间跳动,找了一圈原因,可能是以下几点: 1. 数据预处理:CPU预处理太长,GPU空闲跟不上 解决办法: 可能是读数据或者数据预处理的时间过长,读数据部分可以尝试把全部或 ...

  4. GPU深度学习训练时出现train_loss一直不变且val_loss不变的问题

    清除pycharm缓存 pycharm缓存位置:C:\Users\A\.PyCharm2018.3\system\caches

  5. 深度学习训练技巧总结

    参考: 1 技巧链接一!重要 技巧链接二!重要 技巧链接三!重要 模型训练技巧最直接的就是几个超参数的设置 根据图片大小来选择网络和超参数 如果图片不是很大比如3030,这种情况下做分类就不能用VGG ...

  6. 深度学习训练中为什么要将图片随机剪裁(Random Crop)

    ​概述 这篇文章是用Markdown重写的以前发布的文章.图像分类中,深度学习训练时将图片随机剪裁(random crop)已经成为很普遍的数据扩充(data augmentation)方法,随机剪裁 ...

  7. 【深度学习】PyTorch深度学习训练可视化工具visdom

    PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...

  8. 使用NasNet模型与keras做深度学习训练时报错

    使用NasNet模型与keras做深度学习训练时采用以下代码 一.代码片: inputs = Input((224, 224, 3)) base_model = NASNetMobile(includ ...

  9. 深度学习训练的时候gpu占用0_26秒单GPU训练CIFAR10,Jeff Dean也点赞的深度学习优化技巧...

    选自myrtle.ai 机器之心编译机器之心编辑部 26 秒内用 ResNet 训练 CIFAR10?一块 GPU 也能这么干.近日,myrtle.ai 科学家 David Page 提出了一大堆针对 ...

最新文章

  1. 找回丢失的mysql root 用户密码
  2. linux下常用软件下载
  3. SQL提取时间段内数据
  4. qml 鼠标点击_QML ListView在鼠标点击时不会响应
  5. SpringMVC框架搭建
  6. MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
  7. java中访问权限的设置
  8. 「leetcode」491.递增子序列【回溯算法】详细图解!
  9. OmegaXYZ知识图谱应用Github仓库(长期更新)
  10. 在Eclipse上用JAVA连接数据库
  11. 阉割版BeagleBone Black从SD卡运行Debain操作系统
  12. 7位双极性序列 matlab,matlab仿真-bpsk调制
  13. 操作系统-信号量机制的一些习题
  14. 奋斗在制造业----CAE行业感想
  15. PHP在线横幅广告店标LOGO制作网站源码
  16. 重庆大学科幻协会发展史
  17. vue引入wangEditor
  18. poj:Freda的越野跑 求正序对数
  19. Cookie命名的由来
  20. kaggle实战——What Causes Heart Disease?

热门文章

  1. 图解Js event对象offsetX, clientX, pageX, screenX, layerX, x区别
  2. js获取event中元素的data-值
  3. 关于jdbc中Statement
  4. strace工具简介
  5. python 打包成为exe关于pyinstaller
  6. WinXP优化之路探讨
  7. 那些看过有收获或者回味无穷的电影
  8. win7关闭休眠功能,清除Hiberfil.sys
  9. 【杂项】 Cheat Engine抓游戏基址
  10. 邮件归档与备份的区别