作者kaltu (ka)
看板DataScience
标题[问题] 大型(高记忆体)网路训练
时间Sat Nov 3 20:35:44 2018
作业系统:(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://webptt.com/cn.aspx?n=bbs/DataScience/M.1541248547.A.51F.html
1F:→ Mchord: 3D data还是做2D convolution的话,也只有第一层跟输出层 11/03 22:02
2F:→ Mchord: 参数量有影响 11/03 22:02
3F:→ kaltu: 那这样跟手动把3D volume切成stack of 2D slices然後直接用 11/03 23:59
4F:→ kaltu: 原始的2D网路有差别吗? 11/03 23:59
5F:推 AmibaGelos: slice共用网路的话是类似 但这样slice间没有做conv哦 11/04 00:12
6F:→ AmibaGelos: 好奇3d image有多大 128*128*128*64ch*4B就0.5G了orz 11/04 00:12
7F:推 yiefaung: 有一种方法是forward完把前面drop掉 每backward一层重新 11/04 17:24
8F:→ yiefaung: 算到那一层的forward 11/04 17:24
9F:推 yiefaung: 但基本上就是用运算量跟时间换空间 11/04 17:26
10F:推 michellehot: 把资料送给google用cloud tpu算吧 11/04 19:29
11F:→ michellehot: 花点钱省时间省空间 11/04 19:30
12F:→ michellehot: 另外感谢分享医学影像的资讯 11/04 19:31