問題・質問
keras,tensorflow2.3を用いてモデル構造を試行錯誤中、あるモデルがメモリ(GPUメモリではなく、データセットとも別)を35GB消費していました。
モデルにスライスを多用しており、そのせいで計算グラフが肥大化しているのではないかと考えているのですが、検索してもそれらしい回答は得られませんでした。
そこで、kerasが使用するメモリ量は何に依存するのか、どういう処理をしてるかなど、大まかでもよいので教えていただけないでしょうか?
試したモデルについて
ちなみに試したモデルは、trainable_parm5000,untrainable_parm80,入力要素数50000,出力要素数100。Conv2D+BatchNorm+ReLuで1層とすると平均的には10層程度であり(要素によって通過する層が違います。)、下記のような処理を多用しています。
Python
1#メモリ大量消費の心当たりがある処理 2input_ = Input((10,100)) 3encoder = Model(x,y)#内部構造省略。3層程度です。 4a = [encoder(input_[:,x]) for x in range(input_.shape[1])]
メモリ使用量追跡
搭載メモリ16GB。
リソースモニターのメモリタブpython.exeを追跡しました。
データセット読み込み前:コミット0.58GB ワーキング0.23GB
データセット読み込み後:コミット2.72GB ワーキング2.37GB
モデルcompile後:コミット13.72GB ワーキング5.44GB
モデルtrain中:コミット2933GB ワーキング713GB
CPU使用率14%,GPU使用率1%,専用GPUメモリ使用率90%のため、GPUを認識していないわけでも、計算能力が足りていないわけでもないようです。
あなたの回答
tips
プレビュー