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