実現したいこと
ConvLSTMの学習に必要なメモリ数 の内訳(=モデルの大きさ + データセットの大きさ)を知り,それに必要なGPUのスペックを見積もるため,モデルの大きさとデータセットの大きさを算出する方法を知りたい
前提
ConvLSTMモデルを学習させたいが,画像データの入力を大きくするとメモリの上限まで達しエラーが起きてしまい,データセットの容量を非常に小さくしないと学習できなかった.
精度向上のために必要であればGPUの買い替えをするのだがその前段階として,必要なモデルのメモリサイズとデータセットの占める割合を求めたい.求めた後に金額とメモリ,得られる性能を考えながらモデルやデータセットの拡張を行いそれに見合うGPUを選定する予定です.
発生している問題・エラーメッセージ
ResourceExhaustedError: Graph execution error:
ConvLSTMモデル
python
1 Layer (type) Output Shape Param # 2================================================================= 3 input_14 (InputLayer) [(None, None, 60, 120, 1 0 4 )] 5 6 conv_lstm2d_45 (ConvLSTM2D) (None, None, 60, 120, 64 416256 7 ) 8 9 batch_normalization_32 (Bat (None, None, 60, 120, 64 256 10 chNormalization) ) 11 12 conv_lstm2d_46 (ConvLSTM2D) (None, None, 60, 120, 64 295168 13 ) 14 15 batch_normalization_33 (Bat (None, None, 60, 120, 64 256 16 chNormalization) ) 17 18 conv_lstm2d_47 (ConvLSTM2D) (None, None, 60, 120, 64 33024 19 ) 20 21 conv3d_9 (Conv3D) (None, None, 60, 120, 1) 1729 22 23================================================================= 24Total params: 746,689 25Trainable params: 746,433 26Non-trainable params: 256
試したこと
他サイトを参照したところ,
必要メモリ量 =(ニューロンの数×バッチサイズ+パラメータ数)× 2(data&grad)×4(byte)
と表記があり,今回の自身の条件に当てはめたところ
必要メモリ量 =( 2'318'400 × 5 + 746'689 )× 2 × 8 = 197'419'024 ≒197Mb
と求めた.
しかし,データセットの大きさによる必要なメモリ量の見積もりができずchatGPTに質問やサイトを探すも発見できなかった.
補足情報
条件
- tensorflow 2.10.0
- keras 2.10.0
- 使用機器 NVIDIA GeForce GTX 1070 8GB
入力形状例(サンプル数,画像フレーム数,縦,横,チャンネル数)
-
サンプル数 4
-
画像フレーム数 50
-
解析度 120×60
-
カラーチャンネル数 1(白黒)
-
データ型 float64
-
バッチサイズ 5
参考にしたサイト

あなたの回答
tips
プレビュー