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
1 2 |
import os os.environ["TF_FORCE_GPU_ALLOW_GROWTH"]= "true" |
理由は次に書きますが、
とりあえず上のを追記すれば動くはずです。
CUDA_ERROR_OUT_OF_MEMORYが発生する理由
Tensorlowの設計上の弱点としてGPUメモリを全部使おうとするという機能がこのエラーを引き起こします。
TensorFlowの問題点として、デフォルトでは起動時にGPU上の使用可能なメモリの全容量を割り当てるのです。
TF_FORCE_GPU_ALLOW_GROWTHという環境変数をtrueにすることで
そのような挙動をさせないことができます。
Tensorflow普段から使ってないとぶつかる人も多いかも。
じゃあね〜〜〜〜。