来週から運用開始する目途が立ちました。
機械学習を行う上で、リソース改善を行う必要がありましたので記録として残しておきます。
kerasのメモリ改善(メモリ解放)
学習を行っていると、メモリの空き容量がどんどん減っていきました。
機械学習はCPU/メモリを大量消費するイメージがあったので「こんなものか?」と思っていましたが、一度学習を終了させたのにメモリ使用量が減らない状態になりました。
色々調べてみたところ、明示的に開放してあげないと駄目な模様。
kerasで繰り返し学習するとメモリ使用量が増えちゃう問題を対策した
DBの更新速度(MySQL)
機械学習の結果をDBに保存するようにすると、書き込みの頻度が多くなる。
読み込みは問題無いのだが、学習結果を書き込むときに「update」を多用することが多くなりますが、マシン性能に比べて結構速度が遅い現象が発生。
クエリキャッシュを無効化したらそこそこ改善しました。
MySQL – ごく単純なUPDATEがなぜか遅い時がある
余分な処理を省くので、更新が多いシステムでは効果があると思います。
ただ、実際のシステムに組み込むのは結構リスキーな気もしているので、個人利用している場合に使える技という感じがしています。
クエリキャッシュを無効化するので、参照系は遅くなると思います。
通常のシステムでは更新よりも参照の方が多いので、あまり使用する機会は無いと思います。
更新処理が多いバッチサーバーなどであれば検討の余地が出てくるかもしれません。
コメント