ディープ学習とそのフレームワークで比較的新しいです。現在、私はCaffeフレームワークを試していて、Vgg16_places_365を微調整しようとしています。Finetuning Caffeディープラーニングチェックに失敗しました:error == cudaメモリ不足になりました
私はAmazone EC2インスタンスg2.8xlargeを4つのGPU(それぞれ4GBのRAMを搭載)で使用しています。私が(単一GPUを使用して)私のモデルを訓練しようとすると、しかし、私はこのエラーを得た:私はいくつかの研究をした後
Check failed: error == cudaSuccess (2 vs. 0) out of memory
、私は、メモリの問題のうち、これを解決する方法の一つは、であることがわかりました私のtrain.prototxtのバッチサイズを減らす
Caffe | Check failed: error == cudaSuccess (2 vs. 0) out of memory。
最初に、バッチサイズを50に設定し、それを10まで繰り返しました(batch_size = 10のときに機能したため)。 モデルは訓練されており、かなり長い時間がかかりそうです。しかし、このドメインの新人として、私はsolver.prototxtで指定したラーニング・レート、ステップ・サイズ、最大反復さえも、このバッチ・サイズと別のパラメータとの関係について興味があります。
バッチのサイズがモデルの品質にどの程度影響しますか(精度など)。どのように他のパラメータを使用して品質を活用できるか。また、バッチサイズを小さくするか、マシンをスケールアップする代わりに、この問題を解決する別の方法がありますか?
素晴らしい回答と参考に感謝します。したがって、私が正しく理解できれば、一般的に、バッチサイズは、ウェイトを更新する前に見ているサンプルの数を決定します。言い換えれば、バッチサイズが小さいほど、トレーニング信号のノイズが大きくなります。もしそうならば、バッチサイズを減らすと、学習率を上げるべきですか? – bohr
また、前述の2つの選択肢について言えば、入力サイズを小さくするかモデルサイズを小さくすることです** - 私はこれについて少し心配しています。私が知る限り、いくつかのモデルの入力サイズは固定されており、ユニークなので、それを変更するとエラーになります。一方、私はvggやgooglenetのような既存のモデルを使用しているので、(計算の速度とモデルの品質の点で)どれくらい重要なのでしょうか、レイヤのいくつかを破棄したり、完全に接続された層? – bohr
はい、バッチサイズの理解は正しいです。しかし、バッチサイズを小さくすることは必ずしも学習率を上げることを意味するものではなく、その逆もあります。 2番目の質問:入力サイズを減らすことは、データセットが固定(たとえば画像サイズ)されていても、完全に接続されたレイヤーを再調整してサイズを変更した場合、VGGモデルでエラーが発生しないようにする完全に接続されたレイヤーのみが元の入力サイズに制限されます)。例えば、畳み込みレイヤーを維持しながら、完全に接続されたレイヤーのサイズを減らすことによって、モデルサイズを縮小することが可能です。 –