Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2015-11-28

Chainerで毎回時間がかかるCaffemodelの読み込みを速くする 09:17

 昨日は各層をビジュアル化できただけでウホホーイという感じでは合ったがいかんせん遅い。死ぬほど遅い。

 なぜにこんなに遅いのか。遅いのはMatplotlibもだが、まずCaffemodelの読み込みが遅い。

 もしかしてCaffeからChainerに変換するのに時間がかかっているのか。


 だとしたら、一度ChainerになったやつをPickleで保存してはどうか。

 ということでやってみた

>>>f = caffe.CaffeFunction("bvlc_reference_caffenet.caffemodel")

 これやるとこれだけで5,6分はかかる。RAMディスクをつくって試したりもしたが、それでも3分かかる。いくらなんでも遅すぎる。


 そこで読み込みが終わってから

>>>import Pickle
>>>pickle.dump(f, open('caffemodel', 'wb'), -1)

 と読み込んだfをそのままPickleでダンプしてみた。

 このダンプしたやつを読み込むと

>>>fn = pickle.load(open('caffemodel', 'rb'))
>>>

 一瞬。

 RAMディスクだと1秒未満。

 SSDでも数秒で読み込み完了。

 なあんだ。おどかしおって。


 ちなみにcPickleならもっと高速なことだろう。


 ここまでできたら、次はTensorFlowがやってるようなマルチGPUでのアンサンブル学習に挑戦してみたい。

 やはりこういう研究をするときに手元にTITAN X二枚刺し以上のマシンがあると便利だ。