1. ホーム
  2. Deep Learning

[Tensorflow-Error】CUDA_ERROR_OUT_OF_MEMORY:メモリが不足しています。

2022-02-12 11:12:49

Tensorflowでモデルを学習する際、以下のようなエラーが発生します。 

デバイスから 3.77G (4046333952 bytes) の割り当てに失敗しました。CUDA_ERROR_OUT_OF_MEMORY: メモリ不足です。

メモリオーバーフローの問題は報告されているものの、通常のトレーニングには影響がないのですが、やはりこの問題がどこから来たのか知りたいところです。

さっそく、セッションの初期化コードから見てみましょう。

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=1.0)

config = tf.ConfigProto(gpu_options=gpu_options, allow_soft_placement=False, log_device_placement=False)

session = tf.Session(config=config)

プロセスごとのgpu_memory_fraction。 はグラフィックカードが使用可能な割合を表し、コード内で1に設定すると、グラフィックカードが100%使用されていることを意味するため、トレーニングで上記のエラーが報告されます。

次に、セッションの初期化コードを修正します。

config = tf.ConfigProto(allow_soft_placement=False, log_device_placement=False) 

config.gpu_options.allow_growth = True 

session = tf.Session(config=config)

tf.ConfigProto() パラメータで、config の初期化後に gpu_options 設定を削除して config.gpu_options.allow_growth = True を追加します。このオプションにより、セッションは現在のメモリサイズに基づいて自動的にビデオメモリを割り当て、そのすべてを使用しないようにすることができます。このオプションにより、セッションは現在のメモリサイズに基づいて自動的にビデオメモリを割り当て、そのすべてを使用しないため、最大限の占有率を確保することができます。