最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch查看torch.Tensor和model是否在CUDA上的實(shí)例

 更新時(shí)間:2020年01月03日 08:35:42   作者:WYXHAHAHA123  
今天小編就為大家分享一篇pytorch查看torch.Tensor和model是否在CUDA上的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

今天訓(xùn)練faster R-CNN時(shí),發(fā)現(xiàn)之前跑的很好的程序(是指在運(yùn)行程序過(guò)程中,顯卡利用率能夠一直維持在70%以上),今天看的時(shí)候,顯卡利用率很低,所以在想是不是我的訓(xùn)練數(shù)據(jù)torch.Tensor或者模型model沒(méi)有加載到GPU上訓(xùn)練,于是查找如何查看tensor和model所在設(shè)備的命令。

import torch
import torchvision.models as models
model=models.vgg11(pretrained=False)
print(next(model.parameters()).is_cuda)#False

data=torch.ones((5,10))
print(data.device)#cpu

上述是我在自己的筆記本上(顯然沒(méi)有GPU)的打印情況。

上次被老板教授了好久,出現(xiàn)西安卡利用率一直很低的情況千萬(wàn)不能認(rèn)為它不是問(wèn)題,而一定要想辦法解決。比如可以在加載訓(xùn)練圖像的過(guò)程中(__getitem__方法中)設(shè)定數(shù)據(jù)增強(qiáng)過(guò)程中每個(gè)步驟的時(shí)間點(diǎn),對(duì)每個(gè)步驟的時(shí)間點(diǎn)進(jìn)行打印,判斷花費(fèi)時(shí)間較多的是哪些步驟,然后嘗試對(duì)代碼進(jìn)行優(yōu)化,因?yàn)閠orhc.utils.data中的__getitem__方法是由CPU上的一個(gè)num_workers執(zhí)行一遍的,如果__getitem__方法執(zhí)行太慢,則會(huì)導(dǎo)致IO速度變慢,即GPU在大多數(shù)時(shí)間都處于等待CPU讀取數(shù)據(jù)并處理成torch.cuda.tensor的過(guò)程,一旦CPU讀取一個(gè)batch size的數(shù)據(jù)完畢,GPU很快就計(jì)算結(jié)束,從而看到的現(xiàn)象是:GPU在絕大多數(shù)時(shí)間都處于利用率很低的狀態(tài)。

所以我總結(jié)的是,如果GPU顯卡利用率比較低,最可能的就是CPU數(shù)據(jù)IO耗費(fèi)時(shí)間太多(我之前就是由于數(shù)據(jù)增強(qiáng)的裁剪過(guò)程為了裁剪到object使用了for循環(huán),導(dǎo)致這一操作很耗時(shí)間),還有可能的原因是數(shù)據(jù)tensor或者模型model根本就沒(méi)有加載到GPU cuda上面。其實(shí)還有一種可能性很小的原因就是,在網(wǎng)絡(luò)前向傳播的過(guò)程中某些特殊的操作對(duì)GPU的利用率不高,當(dāng)然指的是除了網(wǎng)絡(luò)(卷積,全連接)操作之外的其他的對(duì)于tensor的操作,比如我之前的faster R-CNN顯卡利用率低就是因?yàn)镽PN中的NMS算法速度太慢,大約2-3秒一張圖,雖然這時(shí)候tensor特征圖在CUDA上面,而且NMS也使用了CUDA kernel編譯后的代碼,也就是說(shuō)NMS的計(jì)算仍然是利用的CPU,但是由于NMS算法并行度不高,所以對(duì)于GPU的利用不多,導(dǎo)致了顯卡利用率低,之前那個(gè)是怎么解決的呢?

哈哈,說(shuō)到底還是環(huán)境的問(wèn)題非常重要,之前的faster R-CNN代碼在python2  CUDA9.0 pytorch 0.4.0 環(huán)境下編譯成功我就沒(méi)有再仔細(xì)糾結(jié)環(huán)境問(wèn)題,直接運(yùn)行了,直到后來(lái)偶然換成python3 CUDA9.0 pytorch 0.4.1 環(huán)境才極大地提高了顯卡利用率,并且通過(guò)設(shè)置了幾十個(gè)打印時(shí)間點(diǎn)之后發(fā)現(xiàn),真的就是NMS的速度現(xiàn)在基本能維持在0.02-0.2數(shù)量級(jí)范圍內(nèi)。

下圖分別表示之前(顯卡利用率很低)時(shí)的NMS處理單張圖像所消耗的時(shí)間(之所以會(huì)有長(zhǎng)有短是因?yàn)槲抑С植煌直媛实膱D像訓(xùn)練),后面一張圖是GPU利用率一直能維持在很高的情況下NMS處理時(shí)間,由于數(shù)據(jù)增強(qiáng)部分的代碼完全沒(méi)有修改,故而換了環(huán)境之后我就沒(méi)有再打印數(shù)據(jù)增強(qiáng)每個(gè)步驟所消耗的時(shí)間了。

以上這篇pytorch查看torch.Tensor和model是否在CUDA上的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python找出9個(gè)連續(xù)的空閑端口

    Python找出9個(gè)連續(xù)的空閑端口

    這篇文章主要介紹了Python找出9個(gè)連續(xù)的空閑端口的方法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • django自定義非主鍵自增字段類型詳解(auto increment field)

    django自定義非主鍵自增字段類型詳解(auto increment field)

    這篇文章主要介紹了django自定義非主鍵自增字段類型詳解(auto increment field),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼

    Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 淺談FastAPI到底用不用async問(wèn)題

    淺談FastAPI到底用不用async問(wèn)題

    這篇文章主要介紹了FastAPI到底用不用async問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python實(shí)現(xiàn)數(shù)據(jù)可視化大屏布局的示例詳解

    Python實(shí)現(xiàn)數(shù)據(jù)可視化大屏布局的示例詳解

    數(shù)據(jù)可視化大屏展示需求無(wú)疑是對(duì)數(shù)據(jù)分析結(jié)果最好的詮釋,能夠使得別人能夠輕松的就理解我們的數(shù)據(jù)意圖。本文將通過(guò)pyecharts模塊來(lái)實(shí)現(xiàn),感興趣的可以了解一下
    2022-11-11
  • python字典dict中常用內(nèi)置函數(shù)的使用

    python字典dict中常用內(nèi)置函數(shù)的使用

    本文主要介紹了python字典dict中常用內(nèi)置函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python中eval帶來(lái)的潛在風(fēng)險(xiǎn)代碼分析

    Python中eval帶來(lái)的潛在風(fēng)險(xiǎn)代碼分析

    這篇文章主要介紹了Python中eval帶來(lái)的潛在風(fēng)險(xiǎn)代碼分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Python2隨機(jī)數(shù)列生成器簡(jiǎn)單實(shí)例

    Python2隨機(jī)數(shù)列生成器簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Python2隨機(jī)數(shù)列生成器,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python基于random模塊操作隨機(jī)數(shù)的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • 50行Python代碼實(shí)現(xiàn)人臉檢測(cè)功能

    50行Python代碼實(shí)現(xiàn)人臉檢測(cè)功能

    現(xiàn)在的人臉識(shí)別技術(shù)已經(jīng)得到了非常廣泛的應(yīng)用,支付領(lǐng)域、身份驗(yàn)證、美顏相機(jī)里都有它的應(yīng)用。下面小編給大家?guī)?lái)了基于50行Python代碼實(shí)現(xiàn)人臉檢測(cè)功能,一起看看吧
    2018-01-01
  • python列表元素拼接成字符串的4種方法

    python列表元素拼接成字符串的4種方法

    本文主要介紹了python列表元素拼接成字符串的4種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

金秀| 金塔县| 留坝县| 都江堰市| 临沂市| 永济市| 宣武区| 广元市| 韩城市| 巨鹿县| 南陵县| 宜阳县| 修文县| 汝南县| 高陵县| 合作市| 永修县| 刚察县| 麻城市| 大埔县| 高要市| 大洼县| 兴和县| 林西县| 邢台市| 汾西县| 临城县| 宜昌市| 五河县| 泸水县| 凤凰县| 淳安县| 米易县| 肥西县| 永福县| 廊坊市| 武山县| 日喀则市| 青神县| 颍上县| 黄冈市|