Kerasでmulti-gpuのときvalidationがとても遅いんだけど、GPUではなくCPUだけしか使ってないって本当?

シェアする

スポンサーリンク

結論

本当です。

どういうこと

Kerasでmulti-gpuを用いてモデルをtrainingしているとき、trainingにおいてはGPUが使用されるが、validationにおいてはGPUが使用されず、CPUのみでpredictしてるのでとても遅くなります。

なぜ

https://github.com/fizyr/keras-retinanet/issues/521#issuecomment-399421586

この回答が役に立つかもしれません。

個人的には、multi-gpuで学習させるときは、それ用のmodelをGPU上に展開している1ため、validationのためには別のmodelを使用する必要があり、残っているのはCPUしかないためだと理解しています。

本当の原因を理解するには、Kerasがどのようにmulti-gpuを実現しているかについて詳しく調べて見る必要がありそうです。しかし、今回のところはこれが正常な挙動だということで諦めることにします。

ちなみに、ネットで検索してみると、prediction on multiple gpusみたいな情報があったりするので、callbackに自作のvalidation処理として追加するのも良いかもしれません。

  1. 実際、multi_gpu_modelのsummaryを見てみると分かるのですが特殊ですよね
スポンサーリンク

シェアする

フォローする