
TensorFlowで大量の画像や巨大な配列をpredictするとメモリーリークが生じることが多い。
model.fitでは問題ないのに、model.predictになるとOOMになってしまう報告が散見する。

根本的な解決ではないが、predictを明示的にCPUで行うようにしたところOOMは起きなくなった。
TensorFlowでは、tf.deviceを使うことで処理を行うデバイスを指定することができる。
そのため、model.fitはGPUで、model.predictはCPUで行うことが可能となる。
以下のように処理を行うことで、OOMを回避することができた。
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = ...
model.fit(...)
with tf.device("/cpu:0"):
pred = model.predict(...)


コメント