Tensorflow CUDA GPUでYOLOv3がメモリエラーになったとき

Yolov4が出たこともあり、最近は勢いを盛り返し始めたYolo(You only look once)ですね。
物体検出アルゴリズムであるYolov3をtensorflowで動かしていたときに出くわしたエラーの解決策の書きだめ。

広告

GPUで CUDA_ERROR_OUT_OF_MEMORY

EC2のGPUインスタンスで物体検出をしようとすると
なぜかCUDA_ERROR_OUT_OF_MEMORYが発生しました。

メモリはGPU8Gのg3s.xlargeを使っており
画像サイズもそこまで大きくないのになぜかエラーで停止する。

ローカルPCのCPU環境だと全く問題ない。

解決策

プログラムの先頭に下記を追記すればおk

理由は次に書きますが、
とりあえず上のを追記すれば動くはずです。

CUDA_ERROR_OUT_OF_MEMORYが発生する理由

Tensorlowの設計上の弱点としてGPUメモリを全部使おうとするという機能がこのエラーを引き起こします。
TensorFlowの問題点として、デフォルトでは起動時にGPU上の使用可能なメモリの全容量を割り当てるのです。

TF_FORCE_GPU_ALLOW_GROWTHという環境変数をtrueにすることで
そのような挙動をさせないことができます。

Tensorflow普段から使ってないとぶつかる人も多いかも。


じゃあね〜〜〜〜。