深度學習訓練時GPU溫度過高?幾個命令,為你的GPU迅速降溫

2021-02-07 煉數成金前沿推薦

新買回來的不帶水冷公版GPU,在滿負載運行的時候,溫度從室溫馬上飆升到85度,而且模型訓練不是幾分鐘完事,很有可能要長期保持在高溫狀態下運行,讓如此昂貴的GPU一直發燒真是讓人太心疼!

首先得到知乎上一位朋友的文章啟發,文章點擊這裡:從零開始組裝深度學習平臺(GPU散熱)。

https://zhuanlan.zhihu.com/p/27682206

這篇文章寫的是在ubuntu X server環境下,通過修改nvidia-settings來修改GPU風扇速度,因為默認的nvidia-settings設置是,即使GPU在計算的時候溫度已經達到85度,風扇速度最高不會超過70%,這樣就無法很好地為GPU進行散熱,因此需要手動修改GPU風扇速度。

註:以下設置都是針對Linux系統的GPU設置,windows的朋友請搜索相關文章。

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

可以完全按照上面提到的這篇文章來設置:從零開始組裝深度學習平臺(GPU散熱 )

https://zhuanlan.zhihu.com/p/27682206

這裡貼出關鍵步驟為:

1. 修改/etc/X11/xorg.cong文件

sudo nano /etc/X11/xorg.conf

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

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

https://devtalk.nvidia.com/default/topic/831440/linux/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.

https://devtalk.nvidia.com/default/topic/789888/set-fan-speed-without-an-x-server-solved-/?offset=

但這篇文章的原始代碼存在一個嚴重問題:雖然能夠強制改變風扇速度,但GPU會被降頻工作,power state會被強制降為P8,導致運算性能嚴重下降!

可能是那篇文章發表時間比較早,不大適用現在最新的顯卡和驅動,因此才有了上面第二部分的改進版本,所以大家不要使用原始版本的代碼,否則GPU會被限制性能。

文章來源:AI科技大本營

《深入淺出Spring》立足於Spring的基本使用,以介紹Spring的設計思想與設計細節為主要目標,並輔助於Spring的源碼解讀。力求讓學員知其然,更知其所以然。最終可以靈活使用Spring框架,並且在軟體設計中貫徹Spring的設計思想。學會使用Spring可以讓我們在日常開發中事半功倍。點擊下方二維碼報名課程

相關焦點

  • 如何使用keras,python和深度學習進行多GPU訓練
    TensorFlow還是有使用的可能性,但它可能需要大量的樣板代碼和調整才能是你的網絡使用多個GPU進行訓練。在使用多GPU訓練的時,我更喜歡用mxnet後端(或甚至直接是mxnet庫)而不是keras,但這會引入更多配置進行處理。
  • 如何使用 Keras,Python 和深度學習進行多 GPU 訓練
    TensorFlow還是有使用的可能性,但它可能需要大量的樣板代碼和調整才能是你的網絡使用多個GPU進行訓練。在使用多GPU訓練的時,我更喜歡用mxnet後端(或甚至直接是mxnet庫)而不是keras,但這會引入更多配置進行處理。
  • 基於tensorflow的深度學習MultiGPU訓練實戰
    進行深度學習模型訓練的時候,一般使用GPU來進行加速,當訓練樣本只有百萬級別的時候
  • 深度學習模型訓練時如何優化GPU顯存?(附TF和Paddle優化方式)
    不知道大家在訓練深度學習模型時有沒有遇見過這種情況:設置的batch_size明明不大,譬如32或者16,但是怎麼一跑模型,GPU的顯存就佔滿了呢?原來我使用Tensorflow的訓練的時候發現是這樣,後來我使用PaddlePaddle的時候也是這樣,我以為是框架本身出了問題,但是仔細研究後才發現,其實這兩種框架都是在跑模型的時候,默認設置會把你的GPU顯存佔滿,需要手動去調整。
  • 深度學習GPU訓練神仙平臺,種草不虧!
    在現實的毒打下,我從GPU的所有者,逐漸轉變為租用者,此處感謝共享經濟的發展,以及國家對人工智慧行業的扶持,讓我感受到了真香。當然,租用過程中,踩過的坑也不少,比如三天兩頭斷電掉線、一夜之間數據失蹤、忘了關機巨額欠費等等,讓人不知該哭該笑,若你也經歷過,可以給個眼神。
  • Pytorch多GPU訓練
    舉個例子, 比如你在3個GPU上面跑代碼, 但是一個GPU最大只能跑3條數據, 但是因為0號GPU還要做一些數據的整合操作, 於是0號GPU只能跑2條數據, 這樣一算, 你可以跑的大小是2+3+3=8, 於是你可以設置下面的這樣的參數:batch_szie = 8gpu0_bsz = 2acc_grad = 1my_net = MyNet()my_net
  • pytorch多gpu並行訓練
    舉個例子, 比如你在3個GPU上面跑代碼, 但是一個GPU最大只能跑3條數據, 但是因為0號GPU還要做一些數據的整合操作, 於是0號GPU只能跑2條數據, 這樣一算, 你可以跑的大小是2+3+3=8, 於是你可以設置下面的這樣的參數:batch_szie = 8gpu0_bsz = 2acc_grad = 1my_net = MyNet()my_net =
  • 首個Titan RTX深度學習評測結果出爐:2019年你該選擇哪款GPU?
    近日,AI 硬體供應商 Lambda Labs 對 Titan RTX,以及 RTX 2080 Ti 等常見 GPU 在各種深度學習訓練任務上的訓練速度進行了測試。結果喜人,由於新一代的英偉達 GPU 使用了 12 納米製程的圖靈架構和 Tensor Core,在深度學習圖像識別的訓練上至少能比同級上代產品提升 30% 的性能,如果是半精度訓練的話最多能到兩倍。
  • 2020年深度學習最佳GPU一覽,看看哪一款最適合你!
    大數據文摘出品來源:lambdalabs編譯:張秋玥深度學習模型越來越強大的同時,也佔用了更多的內存空間,但是許多GPU卻並沒有足夠的VRAM來訓練它們。那麼如果你準備進入深度學習,什麼樣的GPU才是最合適的呢?下面列出了一些適合進行深度學習模型訓練的GPU,並將它們進行了橫向比較,一起來看看吧!
  • 你好AI丨2020 年深度學習最佳 GPU 一覽,看看哪一款最適合你!
    ,也佔用了更多的內存空間,但是許多GPU卻並沒有足夠的VRAM來訓練它們。那麼如果你準備進入深度學習,什麼樣的GPU才是最合適的呢?下面列出了一些適合進行深度學習模型訓練的GPU,並將它們進行了橫向比較,一起來看看吧!
  • 如何監控NVIDIA GPU 的運行狀態和使用情況
    這個任務的核心是在模型訓練過程中跟蹤和報告gpu的使用效率。有效的GPU監控可以幫助我們配置一些非常重要的超參數,例如批大小,還可以有效的識別訓練中的瓶頸,比如CPU活動(通常是預處理圖像)佔用的時間很長,導致GPU需要等待下一批數據的交付,從而處於空閒狀態。什麼是利用率?
  • 在 Linux 上監控 CPU 和 GPU 溫度 | Linux 中國
    也有相當一部分用戶在遇到像視頻編輯或圖形設計等(Kdenlive 和 Blender 是這類應用程式中很好的例子)資源消耗型計算任務時,也會使用 GNU/Linux。不管你是否是這些用戶中的一員或其他用戶,你也一定想知道你的電腦 CPU 和 GPU 能有多熱(如果你想要超頻的話更會如此)。如果是這樣,那麼繼續讀下去。
  • GPU 顯存不足怎麼辦?
    本文分為兩大部分,第一部分引入一個主題:如何估計模型所需顯存, 第二個主題:GPU顯存不足時的各種 Trick 。監控 GPU監控GPU最常用的當然是 nvidia-smi ,但有一個工具能夠更好的展示信息:gpustat 。
  • 【測評】GPU訓練機器學習模型哪家強?AWS、谷歌雲、IBM等6大平臺對比
    LeaderGPU,Amazon和Paperspace提供免費的深度學習機器圖像(Deep Learning Machine Images),這些圖像預安裝了Nvidia驅動程序,Python開發環境和Nvidia-Docker,基本上立即就能啟動實驗。這讓事情變得容易很多,尤其是對於那些只希望嘗試機器學習模型的初學者。
  • 為什麼深度學習和神經網絡需要GPU?
    研究深度學習和神經網絡大都離不開GPU,在GPU的加持下,我們可以更快的獲得模型訓練的結果。使用GPU和使用CPU的差別在哪裡?
  • 深度學習中如何更好地利用顯存資源?
    雖然GPU對深度學習計算有普遍明顯的加速作用,但其顯存也是有限的(如V100的最大顯存值也僅有32G),而深度學習模型的訓練和推理往往需要大量的顯存,
  • 2020年搞深度學習需要什麼樣的GPU:請上48G顯存
    眾所周知,當今業界性能最強(SOTA)的深度學習模型都會佔用巨大的顯存空間,很多過去性能算得上強勁的 GPU,現在可能稍顯內存不足。在 lambda 最新的一篇顯卡橫向測評文章中,開發者們探討了哪些 GPU 可以再不出現內存錯誤的情況下訓練模型。當然,還有這些 GPU 的 AI 性能。
  • 【經驗分享】GPU 顯存不足怎麼辦?
    本文分為兩大部分,第一部分引入一個主題:如何估計模型所需顯存, 第二個主題:GPU顯存不足時的各種 Trick 。監控 GPU監控GPU最常用的當然是 nvidia-smi ,但有一個工具能夠更好的展示信息:gpustat 。
  • 在 Ubuntu 16.04 中安裝支持 CPU 和 GPU 的 Google TensorFlow 神經網絡軟體
    這些神經網絡被訓練學習其所要執行的任務。由於訓練所需的計算是非常巨大的,在大多數情況下需要 GPU 支持,這時 TensorFlow 就派上用場了。啟用了 GPU 並安裝了支持 GPU 的軟體,那麼訓練所需的時間就可以大大減少。本教程可以幫助你安裝只支持 CPU 的和同時支持 GPU 的 TensorFlow。
  • 基於VMware Bitfusion的GPU共享技術使用場景討論
    背景GPU作為一種加速器晶片,在機器學習,特別是深度學習中得到廣泛的應用。在上課場景中,通常情況下,任課老師會根據課程需要事先安裝相應的軟體和工具;在實際課程中,學生每人獲得一個這樣的環境,使用課程中相關的算法進行模型的開發和訓練。在整個過程中,學生關注於機器學習的方法和算法,而不是環境的安裝、配置和故障處理。在科研場景中,科研人員(包括老師和研究生)根據科研任務和場景,開發相應的模型、算法和參數,並且利用GPU進行訓練和調整。