0
雷鋒網(wǎng)按:本文作者胡智豪,原載于作者個人博客,雷鋒網(wǎng)經(jīng)授權(quán)發(fā)布。
新買回來的不帶水冷公版GPU,在滿負(fù)載運(yùn)行的時候,溫度從室溫馬上飆升到85度,而且模型訓(xùn)練不是幾分鐘完事,很有可能要長期保持在高溫狀態(tài)下運(yùn)行,讓如此昂貴的GPU一直發(fā)燒真是讓人太心疼!
首先得到知乎上一位朋友的文章啟發(fā):從零開始組裝深度學(xué)習(xí)平臺(GPU散熱)。具體地址:
這篇文章寫的是在ubuntu X server環(huán)境下,通過修改nvidia-settings來修改GPU風(fēng)扇速度,因為默認(rèn)的nvidia-settings設(shè)置是,即使GPU在計算的時候溫度已經(jīng)達(dá)到85度,風(fēng)扇速度最高不會超過70%,這樣就無法很好地為GPU進(jìn)行散熱,因此需要手動修改GPU風(fēng)扇速度。
注,以下設(shè)置都是針對linux系統(tǒng)的GPU設(shè)置,windows的朋友請搜索相關(guān)文章。
可以完全按照上面提到的文章《從零開始組裝深度學(xué)習(xí)平臺》操作,這里貼出關(guān)鍵步驟為:
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就是風(fēng)扇的速度, 100就是風(fēng)扇運(yùn)行在100%的速度, 也可以改成其它速度. 注意在新的NVIDIA驅(qū)動, GPUCurrentFanSpeed 被改成了 GPUTargetFanSpeed. 另外GPUFanControlState=1表示讓用戶可以手動調(diào)節(jié)GPU風(fēng)扇速度。
感謝原文知乎作者:張三
一般在ubuntu上搭建完深度學(xué)習(xí)環(huán)境后,許多朋友習(xí)慣把ubuntu的X桌面服務(wù)禁用掉,然后通過另一臺windows系統(tǒng)的電腦通過ssh來連接GPU機(jī)器使用。這個時候X server已經(jīng)被禁用掉,開機(jī)也自動啟動命令行模式,上面第一種做法就不適用于這種情況了。原因是,nvidia-settings只能在X桌面環(huán)境下運(yùn)行,若你想強(qiáng)行使用這個設(shè)置就會報錯:
因此正常情況下,是不可能通過修改這個設(shè)置來改變風(fēng)扇速度的。
但有沒有其它方法修改呢?有!你需要騙過系統(tǒng),讓它你有顯示器,這就是常說的headless模式。
主要的解決方法是參考了鏈接里這篇文章(fan speed without X : powermizer drops card to p8):
這篇文章提供了修改風(fēng)扇速度的腳本,在ubuntu下運(yùn)行腳本即可實(shí)時調(diào)節(jié)風(fēng)扇速度,從而為GPU降溫。
這里提供詳細(xì)步驟:
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這個文件,我們把文件夾克隆下來之后,運(yùn)行cool_gpu就可以調(diào)節(jié)風(fēng)扇速度了。
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. 創(chuàng)建一個符號鏈接,讓系統(tǒng)知道這個代碼在哪里:
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
這個命令是運(yùn)行cool_gpu降溫代碼,啟動后會看到這些實(shí)時變化的提示:
在開始計算測試前,我們看看目前GPU的溫度:
這里用的是2卡進(jìn)行計算測試,我們可以看到,2卡的Perf(性能)一項已經(jīng)被調(diào)整為“P2”(其它卡仍為P8),2卡的溫度為35度,而且三個風(fēng)扇的速度均為55%。“P2”指的是nvidia的顯卡power state,從P0到P12,最高性能狀態(tài)為P0,運(yùn)行計算是為P2,最低功耗(最低性能)為P12。
啟動模型訓(xùn)練,我們可以看到程序正在不斷地自動調(diào)節(jié)溫度:
當(dāng)運(yùn)行訓(xùn)練模型一段時間后,最終的溫度狀態(tài)如下圖:
風(fēng)扇被全部調(diào)節(jié)到80%的速度,溫度穩(wěn)定在65度!對比文章開頭的數(shù)據(jù),顯卡溫度從84度降到65度,整整下降了20度!
在上面第二部分的文章出來之前,網(wǎng)上還流傳著另一篇文章,那篇可以說是最原始的版本,上面第二部分的代碼正是基于該篇原始版本文章改進(jìn)的,鏈接地址在這里(Set fan speed without an X server):
但這篇文章的原始代碼存在一個嚴(yán)重問題:雖然能夠強(qiáng)制改變風(fēng)扇速度,但GPU會被降頻工作,power state會被強(qiáng)制降為P8,導(dǎo)致運(yùn)算性能嚴(yán)重下降!
可能是那篇文章發(fā)表時間比較早,不大適用現(xiàn)在最新的顯卡和驅(qū)動,因此才有了上面第二部分的改進(jìn)版本,所以大家不要使用原始版本的代碼,否則GPU會被限制性能。
雷鋒網(wǎng)相關(guān)閱讀:
一文詳解英偉達(dá)剛發(fā)布的 Tesla V100 究竟牛在哪?
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。