如何解決PyTorch程序占用較高CPU問題
PyTorch程序占用較高CPU問題
在使用服務器運行PyTorch程序時,使用TOP命令查看CPU狀態(tài),發(fā)現(xiàn)CPU占用率竟然達到2000%,已經(jīng)影響到其他人正常使用服務器。
解決辦法
在main程序中加以下代碼:
torch.set_num_threads(1)
設置最多使用1個CPU核。
問題解決~
pytorch訓練占用cpu過高,num_works和set_num_threads設置均無效,發(fā)現(xiàn)是數(shù)據(jù)擴增問題
這是我使用pytorch訓練模型的時候,出現(xiàn)cpu占用過多的情況,無關pytorch版本
dataloader
的 num_work=1
的時候單線程cpu占用量2800,也就是一半的cpu,我服務器一共28*2個邏輯cpu
dataloader
的 num_work=8
的時候8個線程cpu占用500-700,合計2800
使用網(wǎng)上教程的如下指令,沒有任何效果
cpu_num = 1 os.environ["OMP_NUM_THREADS"] = str(cpu_num) os.environ["OPENBLAS_NUM_THREADS"] = str(cpu_num) os.environ["MKL_NUM_THREADS"] = str(cpu_num) os.environ["VECLIB_MAXIMUM_THREADS"] = str(cpu_num) os.environ["NUMEXPR_NUM_THREADS"] = str(cpu_num) torch.set_num_threads(cpu_num)
最后發(fā)現(xiàn)是數(shù)據(jù)擴增惹的禍,我是用的數(shù)據(jù)擴增庫是albumentations,其中所使用的基于opencv的各種數(shù)據(jù)變換占用了太多的cpu,因此只需要限制opencv的線程數(shù)目則可:
import cv2 import albumentations cv2.setNumThreads(1) # 0也可以
再設置 dataloader
的 num_work=2
的情況
雖然不清楚這里為什么有3個,但目的達成了,而且訓練速度和cpu占用2800的時候一樣。
在albumentations的github網(wǎng)址也有相關聯(lián)的一小段說明,但不是本篇文章遇到的問題, cv2.ocl.setUseOpenCL(False)
對于本篇文章問題可以不加。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vscode和Anaconda安裝以及相關環(huán)境配置指南
Anaconda是一個開源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學平臺,可以對python的科學包做到有效管理,這篇文章主要給大家介紹了關于vscode和Anaconda安裝以及相關環(huán)境配置指南的相關資料,需要的朋友可以參考下2023-11-11Python實現(xiàn)抓取網(wǎng)頁并且解析的實例
這篇文章主要介紹了Python實現(xiàn)抓取網(wǎng)頁并且解析的功能實例,主要以解析百度問答為例說明其原理與方法,需要的朋友可以參考下2014-09-09Python實現(xiàn)多線程并發(fā)請求測試的腳本
這篇文章主要為大家分享了一個Python實現(xiàn)多線程并發(fā)請求測試的腳本,文中的示例代碼簡潔易懂,具有一定的借鑒價值,需要的小伙伴可以了解一下2023-06-06