中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于CUDA?out?of?memory的解決方法是什么

發布時間:2023-02-22 11:26:32 來源:億速云 閱讀:115 作者:iii 欄目:開發技術

今天小編給大家分享一下基于CUDA out of memory的解決方法是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    CUDA out of memory的解決

    我的輸入樣本維度是(1000,12,24,72),一開始我是這么輸入數據的:

    trainer.train(x_train, t_train, x_val, t_val)

    發現必溢出,后來我取出其中400個樣本輸入:

    trainer.train(x_train[:400], t_train[:400], x_val, t_val)

    發現不溢出了,訓練正常,然后我把400刪掉,但沒刪冒號:

    trainer.train(x_train[:], t_train[:], x_val, t_val)

    竟然也沒有溢出!!!雖然訓練速度降了,但是也能正常訓練,我不是很懂原理是啥,好神奇!

    但是樣本量一大起來,即使用冒號法還是可能會溢出。比方說我后來把4000個樣本作為x/t_train:

    >>>x_train.shape
    (4000,12,24,72)
    >>>t_train.shape
    (4000,24)
    >>>trainer.train(x_train[:], t_train[:], x_val, t_val)
    RuntimeError:CUDA out of memory...

    之所以說“可能”會溢出,是因為確實是有小概率能正常訓練的,但是大部分情況還是會out of memory…

    再附上兩個我昨天看到的兩種不同的解決方案。

    一個是減少帶梯度的中間變量(即非葉子節點)。簡言之,能一行代碼搞定的,盡量不要寫成多行,即使寫成多行,也要盡可能減少新變量的建立。

    另一個是在eval的時候,讓所有的變量都不帶梯度。只需要添加一行代碼:

    with torch.no_grad():
        outputs = Net_(inputs)

    在with語句里的所有變量requires_grad都是False。

    CUDA error: out of memory問題

    本人遇到的問題是在訓練是正常,一到驗證時就會出現cuda error: out of memory的問題

    解決思路溯尋

    1.首先就是考慮減少batch_size和num_worker,對于我的情況不奏效

    2.然后找到pin_memory發現是設置的True,改為false,仍舊不管用

    3.包括把

     # Empty GPU cache
            if torch.cuda.is_available():
                torch.cuda.empty_cache()

    放到報錯位置的前后,不奏效

    4.后來再聚焦問題關鍵,是一到驗證就會出問題,所以專門查攻略,我初步懷疑是因為驗證沒有參與反向傳播,梯度累積,內存爆了,但當時代碼中有with torch.no_grad(): ,所以并沒有發現關鍵,知道看到別人里面 forword是放在with torch.no_grad()后面的,所以最后

    with torch.no_grad():
                    # Forward pass
                    loss, np_probs, hv_logits = self.forward(images, targets)

    以上就是“基于CUDA out of memory的解決方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    建昌县| 甘孜县| 威信县| 涿州市| 阿拉尔市| 侯马市| 石林| 张家界市| 四川省| 高尔夫| 禄丰县| 嘉禾县| 胶州市| 梅州市| 伊吾县| 大洼县| 分宜县| 陆良县| 江孜县| 时尚| 峨边| 仁布县| 丹棱县| 衡山县| 虞城县| 蚌埠市| 宁都县| 乐亭县| 育儿| 贵州省| 桂阳县| 枣强县| 德昌县| 远安县| 横山县| 凌云县| 克山县| 盐边县| 梨树县| 上林县| 思茅市|