如何解決PyTorch程序占用較高CPU問(wèn)題
PyTorch程序占用較高CPU問(wèn)題
在使用服務(wù)器運(yùn)行PyTorch程序時(shí),使用TOP命令查看CPU狀態(tài),發(fā)現(xiàn)CPU占用率竟然達(dá)到2000%,已經(jīng)影響到其他人正常使用服務(wù)器。
解決辦法
在main程序中加以下代碼:
torch.set_num_threads(1)
設(shè)置最多使用1個(gè)CPU核。
問(wèn)題解決~
pytorch訓(xùn)練占用cpu過(guò)高,num_works和set_num_threads設(shè)置均無(wú)效,發(fā)現(xiàn)是數(shù)據(jù)擴(kuò)增問(wèn)題
這是我使用pytorch訓(xùn)練模型的時(shí)候,出現(xiàn)cpu占用過(guò)多的情況,無(wú)關(guān)pytorch版本
dataloader
的 num_work=1
的時(shí)候單線程cpu占用量2800,也就是一半的cpu,我服務(wù)器一共28*2個(gè)邏輯cpu
dataloader
的 num_work=8
的時(shí)候8個(gè)線程cpu占用500-700,合計(jì)2800
使用網(wǎng)上教程的如下指令,沒(méi)有任何效果
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ù)擴(kuò)增惹的禍,我是用的數(shù)據(jù)擴(kuò)增庫(kù)是albumentations,其中所使用的基于opencv的各種數(shù)據(jù)變換占用了太多的cpu,因此只需要限制opencv的線程數(shù)目則可:
import cv2 import albumentations cv2.setNumThreads(1) # 0也可以
再設(shè)置 dataloader
的 num_work=2
的情況
雖然不清楚這里為什么有3個(gè),但目的達(dá)成了,而且訓(xùn)練速度和cpu占用2800的時(shí)候一樣。
在albumentations的github網(wǎng)址也有相關(guān)聯(lián)的一小段說(shuō)明,但不是本篇文章遇到的問(wèn)題, cv2.ocl.setUseOpenCL(False)
對(duì)于本篇文章問(wèn)題可以不加。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)王者榮耀自動(dòng)刷金幣的完整步驟
這篇文章主要介紹了Python實(shí)現(xiàn)王者農(nóng)藥自動(dòng)刷金幣的完整步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01一個(gè)超級(jí)簡(jiǎn)單的python web程序
這篇文章主要介紹了一個(gè)超級(jí)簡(jiǎn)單的python web程序,需要的朋友可以參考下2014-09-09vscode和Anaconda安裝以及相關(guān)環(huán)境配置指南
Anaconda是一個(gè)開(kāi)源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學(xué)平臺(tái),可以對(duì)python的科學(xué)包做到有效管理,這篇文章主要給大家介紹了關(guān)于vscode和Anaconda安裝以及相關(guān)環(huán)境配置指南的相關(guān)資料,需要的朋友可以參考下2023-11-11Python使用QQ郵箱發(fā)送Email的方法實(shí)例
實(shí)際開(kāi)發(fā)過(guò)程中使用到郵箱的概率很高,那么如何借助python使用qq郵箱發(fā)送郵件呢?正好最近工作遇到這個(gè)需求,所以想著把方法分享出來(lái)方便大家,所以這篇文章主要介紹了Python使用QQ郵箱發(fā)送Email的實(shí)現(xiàn)方法,需要的朋友可以參考。2017-02-02Python實(shí)現(xiàn)抓取網(wǎng)頁(yè)并且解析的實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)抓取網(wǎng)頁(yè)并且解析的功能實(shí)例,主要以解析百度問(wèn)答為例說(shuō)明其原理與方法,需要的朋友可以參考下2014-09-09Python實(shí)現(xiàn)多線程并發(fā)請(qǐng)求測(cè)試的腳本
這篇文章主要為大家分享了一個(gè)Python實(shí)現(xiàn)多線程并發(fā)請(qǐng)求測(cè)試的腳本,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,需要的小伙伴可以了解一下2023-06-06python中實(shí)現(xiàn)k-means聚類算法詳解
這篇文章主要介紹了python中實(shí)現(xiàn)k-means聚類算法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11