[問題] 大型(高記憶體)網路訓練

看板DataScience作者 (ka)時間6年前 (2018/11/03 20:35), 編輯推噓4(408)
留言12則, 5人參與, 6年前最新討論串1/1
作業系統:(ex:mac,win10,win8,win7,linux,etc...) Ubuntu 問題類別:(ex:ML,SVM,RL,DL,RNN,CNN,NLP,BD,Vis,etc...) CNN 使用工具:(ex:python,Java,C++,tensorflow,keras,MATLAB,etc...) PyTorch 問題內容: 想問大家在train超大型網路時連一個batch都塞不進VRAM的狀況 有沒有什麼心得或技巧? 目前的狀況是想把cycleGAN改成3D的好用醫學影像來訓練 因為cycleGAN的cycle consistency對醫學應用來說非常有趣 但是cycleGAN本身的架構就是由4個中大型CNN組成 原作者公開的implementation 2D版本batch size=1的時候就會吃掉大約3GB的RAM 要換成3D的話trainable parameter直接暴增一個dimension 目前是用超小的patch size下去跑,不然的話… 只能指望用NVlink的Quadro GV100了 想到的蠢方法是用CPU跑 插八條32GB RAM就有256G了 但速度…… 困擾了很久,好像也沒什麼討論度 是不是這問題太蠢了所以沒什麼人討論workaround呢 還是真的只能用錢堆了 ----- Sent from JPTT on my Asus ASUS_Z01KDA. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.114.83 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1541248547.A.51F.html

11/03 22:02, 6年前 , 1F
3D data還是做2D convolution的話,也只有第一層跟輸出層
11/03 22:02, 1F

11/03 22:02, 6年前 , 2F
參數量有影響
11/03 22:02, 2F

11/03 23:59, 6年前 , 3F
那這樣跟手動把3D volume切成stack of 2D slices然後直接用
11/03 23:59, 3F

11/03 23:59, 6年前 , 4F
原始的2D網路有差別嗎?
11/03 23:59, 4F

11/04 00:12, 6年前 , 5F
slice共用網路的話是類似 但這樣slice間沒有做conv哦
11/04 00:12, 5F

11/04 00:12, 6年前 , 6F
好奇3d image有多大 128*128*128*64ch*4B就0.5G了orz
11/04 00:12, 6F

11/04 17:24, 6年前 , 7F
有一種方法是forward完把前面drop掉 每backward一層重新
11/04 17:24, 7F

11/04 17:24, 6年前 , 8F
算到那一層的forward
11/04 17:24, 8F

11/04 17:26, 6年前 , 9F
但基本上就是用運算量跟時間換空間
11/04 17:26, 9F

11/04 19:29, 6年前 , 10F
把資料送給google用cloud tpu算吧
11/04 19:29, 10F

11/04 19:30, 6年前 , 11F
花點錢省時間省空間
11/04 19:30, 11F

11/04 19:31, 6年前 , 12F
另外感謝分享醫學影像的資訊
11/04 19:31, 12F
文章代碼(AID): #1RtPOZKV (DataScience)
文章代碼(AID): #1RtPOZKV (DataScience)