如何解決python訓練資料記憶體泄露問題?

來源:互聯網
上載者:User

標籤:

Python語言 越來越廣泛的應用於機器學習/ 深度學習領域,是目前最火的該領域程式設計語言,各大深度學習架構基本都支援 python 介面。在TensorFlow 訓練模型的過程中,一般資料載入分情景各有不同。1.  當資料量能直接全部載入記憶體時,當然最是方便,直接全部載入記憶體,然後訓練即可。2.  資料無法全部載入記憶體時,有多種方法。介紹其中 2 種用的多的,其一是邊訓練邊讀取(可以用多線程進行最佳化),其二是隨機打亂所有訓練資料的索引然後隨機播放部分資料進行訓練測試。第2 類情景中,有可能由於對 Python 的 GC 機制理解不深( Me… ),出現記憶體泄露。比如下面的第 12 行的列表就無法釋放,導致記憶體泄露,而 11 行則不會出現記憶體泄露。import numpy  as np import gc import psutil import osdef  get_memory_usage():process = psutil.Process(os.getpid())return process.memory_info().rss/(1024*1024)print ’before load, memory: %d MB’ % get_memory_usage()#dataset = [np.zeros((6000,6000),dtype=np.float32) for _ in range(30000)]dataset = [(np.zeros((6000,6000),dtype=np.float32),np.zeros((200,200),dtype=np.int32))  for _  in range(10000)] print ’after load, memory: %d MB’ % get_memory_usage()print ’before release, memory: %d MB’ % get_memory_usage() del datasetdataset =  Nonegc.collect() print ’after release, memory: %d MB’ % get_memory_usage()第11 行記憶體釋放結果:before  load,  memory: 25 MB after  load,  memory: 220 MB before  release,  memory: 220 MB after  release,  memory: 27 MB第12 行記憶體釋放結果:before  load,  memory: 23 MB after  load,  memory: 1406 MB before  release,  memory: 1406 MB after  release,  memory: 1170 MB可以看到第12 行記憶體泄露嚴重。出現這種記憶體泄露時,模型訓練基本只能訓練幾個 Epoch 就會出現 OOM 。大力出奇蹟這種問題當然最優的是從根源解決,即研究清楚Python 的 GC 機制,解決記憶體泄露。在時間比較緊或者問題比較麻煩時,有時粗暴快速的方法也不失為一種選擇。訓練模型的目標是根據訓練資料以及模型結構最佳化模型參數,因此只要達成目的,過程不重要。在這個例子中,可以直接每次只訓練1 個 Epoch ,然後重啟 Python 進程讀模數型進行 fine-tune 。與直接訓練若干個 Epoch 效果接近。# 訓練 50 個 epoch seq 50|xargs -i python train.py --model-path=./model

來源:網路

如何解決python訓練資料記憶體泄露問題?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.