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

解決pytorch GPU 計(jì)算過程中出現(xiàn)內(nèi)存耗盡的問題

 更新時(shí)間:2019年08月19日 17:03:33   作者:bob_chen_csdn  
今天小編就為大家分享一篇解決pytorch GPU 計(jì)算過程中出現(xiàn)內(nèi)存耗盡的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

Pytorch GPU運(yùn)算過程中會(huì)出現(xiàn):“cuda runtime error(2): out of memory”這樣的錯(cuò)誤。通常,這種錯(cuò)誤是由于在循環(huán)中使用全局變量當(dāng)做累加器,且累加梯度信息的緣故,用官方的說法就是:"accumulate history across your training loop"。在默認(rèn)情況下,開啟梯度計(jì)算的Tensor變量是會(huì)在GPU保持他的歷史數(shù)據(jù)的,所以在編程或者調(diào)試過程中應(yīng)該盡力避免在循環(huán)中累加梯度信息。

下面舉個(gè)栗子:

上代碼:

total_loss=0
for i in range(10000):
  optimizer.zero_grad()
  output=model(input)
  loss=criterion(output)
  loss.backward()
  optimizer.step()
  total_loss+=loss
  #這里total_loss是跨越循環(huán)的變量,起著累加的作用,
  #loss變量是帶有梯度的tensor,會(huì)保持歷史梯度信息,在循環(huán)過程中會(huì)不斷積累梯度信息到tota_loss,占用內(nèi)存

以上例子的修正方法是在循環(huán)中的最后一句修改為:total_loss+=float(loss),利用類型變換解除梯度信息,這樣,多次累加不會(huì)累加梯度信息。

局部變量逗留導(dǎo)致內(nèi)存泄露

局部變量通常在變量作用域之外會(huì)被Python自動(dòng)銷毀,在作用域之內(nèi),不需要的臨時(shí)變量可以使用del x來銷毀。

在設(shè)計(jì)Linear Layers 的時(shí)候,盡量讓其規(guī)模小點(diǎn)

對(duì)于nn.Linear(m,n)這樣規(guī)模的線性函數(shù),他的空間規(guī)模為O(mn),除此規(guī)模的空間來容納參數(shù)意外,還需要同樣規(guī)模的空間來存儲(chǔ)梯度,由此很容易造成GPU空間溢出。

相關(guān)的進(jìn)程管理bash cmd

nvidia-smi監(jiān)控GPU,

watch -n 1 nvidia-smi實(shí)時(shí)監(jiān)控GPU,

watch -n 1 lscpu實(shí)時(shí)監(jiān)控CPU,

ps -elf進(jìn)程查看,

ps -elf | grep python查看Python子進(jìn)程,

kill -9 [PID]殺死進(jìn)程PID。

Referance:

Pytorch documentations

以上這篇解決pytorch GPU 計(jì)算過程中出現(xiàn)內(nèi)存耗盡的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)將16進(jìn)制字符串轉(zhuǎn)化為ascii字符的方法分析

    Python實(shí)現(xiàn)將16進(jìn)制字符串轉(zhuǎn)化為ascii字符的方法分析

    這篇文章主要介紹了Python實(shí)現(xiàn)將16進(jìn)制字符串轉(zhuǎn)化為ascii字符的方法,結(jié)合實(shí)例形式分析了Python 16進(jìn)制字符串轉(zhuǎn)換為ascii字符的實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-07-07
  • python實(shí)現(xiàn)畫圖工具

    python實(shí)現(xiàn)畫圖工具

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)畫圖工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 解決tf.keras.models.load_model加載模型報(bào)錯(cuò)問題

    解決tf.keras.models.load_model加載模型報(bào)錯(cuò)問題

    這篇文章主要介紹了解決tf.keras.models.load_model加載模型報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python進(jìn)階之協(xié)程你了解嗎

    python進(jìn)階之協(xié)程你了解嗎

    這篇文章主要為大家詳細(xì)介紹了python進(jìn)階之協(xié)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • python使用selenium打開chrome瀏覽器時(shí)帶用戶登錄信息實(shí)現(xiàn)過程詳解

    python使用selenium打開chrome瀏覽器時(shí)帶用戶登錄信息實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了python使用selenium打開chrome瀏覽器時(shí)帶用戶登錄信息,本文以實(shí)例給大家來展示如何讓selenium在打開chrome瀏覽器的時(shí)候帶上用戶的登錄信息,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • 對(duì)pycharm 修改程序運(yùn)行所需內(nèi)存詳解

    對(duì)pycharm 修改程序運(yùn)行所需內(nèi)存詳解

    今天小編就為大家分享一篇對(duì)pycharm 修改程序運(yùn)行所需內(nèi)存詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python如何定義接口和抽象類

    Python如何定義接口和抽象類

    這篇文章主要介紹了Python如何定義接口和抽象類,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 最新評(píng)論

    南城县| 吴堡县| 嘉兴市| 伊通| 临颍县| 敦煌市| 聂拉木县| 渑池县| 莱阳市| 南平市| 札达县| 商水县| 桃园县| 海门市| 祁东县| 秦皇岛市| 曲靖市| 兰州市| 芮城县| 湛江市| 潞西市| 江山市| 遂溪县| 岚皋县| 泸水县| 台北县| 通道| 安塞县| 台北市| 长白| 北宁市| 柯坪县| 高尔夫| 中牟县| 吉林省| 武夷山市| 随州市| 拜泉县| 通州市| 琼结县| 南京市|