1. ホーム
  2. tensorflow

デバイスから 18.41M (19300352 bytes) の割り当てに失敗しました。CUDA_ERROR_OUT_OF_MEMORY

2022-02-12 18:35:53
<パス

tensorflow training はデバイスから 18.41M (19300352 bytes) を割り当てることに失敗しました。cuda_error_out_of_memory

ubuntu 16.04 に tensorflow-gpu version 1.6.0 をインストールして、jupyter notebook で学習させると failed to allocate 18.41M (19300352 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY ネットでいろいろ調べてみると、GPUリソースの一部が以前のプログラムに取られていて、利用可能なリソースが18.41Mしかないことが判明しました。

通常、私たちは nvidia-smi を使ってGPUの使用状況を確認し、次に sudo kill 'ID' を実行して、GPU を占有するプロセスをシャットダウンします。 CUDA_ERROR_OUT_OF_MEMORY を実行すると、次のコマンドを使用できます。

sudo fuser -v /dev/nvidia* #Find the PID of the GPU resource being used
 sudo kill -9 ***(PID) # Unhog the video memory based on the corresponding PID

sudo fuser -v /dev/nvidia* #Find the PID of the GPU resource being used

の後に実行します。

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9)#0.9 means that 90% of the GPU resources can be used for training, which can be changed arbitrarily

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))


完全に完全にオフになるまでオフになっているかどうか確認し、その後、普通にトレーニングにGPUを使用できるようにします。
トレーニングに使用するGPUリソースの量を設定するには、次のコマンドを使用します。

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9)#0.9 means that 90% of the GPU resources can be used for training, which can be changed arbitrarily

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))