深層学習モデルをトレーニングする際のミニバッチメモリの影響を計算する方法は?
Andrej Karphatyの次のメモに基づいて、モデルをトレーニングするためにGPUに必要なメモリ量を計算しようとしています:http ://cs231n.github.io/convolutional-networks/#computational-considerations 私のネットワークには、532,752のアクティベーションと19,072,984のパラメーター(重みとバイアス)があります。これらはすべて32ビットのfloat値であるため、それぞれが4バイトのメモリを消費します。 私の入力画像は180x50x1(幅x高さx奥行き)= 9,000 float 32値です。私は画像増強を使用しないので、その他のメモリはミニバッチサイズにのみ関連すると思います。128個の画像のミニバッチサイズを使用しています。 Andrejの推奨に基づいて、次のメモリサイズを取得します。 アクティベーション: 532,752 * 4 /(1024 ^ 2)= 2.03 MB パラメーター: 19,072,984 * 4 /(1024 ^ 2)* 3 = 218.27 MB その他: 128 * 9,000 * 4 /(1024 ^ 2)= 4.39 MB したがって、このネットワークをトレーニングするための合計メモリは224,69 MBになります。 TensorFlowを使用していますが、何かが足りないと思います。私はまだトレーニングを実行していませんが、(過去の経験に基づいて)使用中のメモリが計算した値よりもはるかに大きいことを確信しています。 ミニバッチの各画像について、TensorFlowが勾配を保持して、単一の重み/バイアス更新ステップで後で正規化できる場合、メモリは別の532,752 * 128の値を考慮する必要があると思います(各画像の勾配ミニバッチ)。その場合、128個のイメージ/ミニバッチでこのモデルをトレーニングするには、260.13 MBがさらに必要になります。 ディープラーニングモデルをトレーニングするためのメモリに関する考慮事項を理解するのに役立ちますか?上記の考慮事項は正しいですか?