Chainer学習時のCPUネックを減らしたい
環境
Windows10、i7-7700K、GeForce1080Ti
背景
最近少しずつスキルも上がって来たので大量の学習データを扱うことが増えてきました
学習に3日かかるとか、その間何もできない!
もっと早くできないのか?
と言うことで、何がネックなのかを調べたところ、、、
CPUネックでGPUがあまり使われていない!
原因を探してみる
学習自体はGPUを使ってくれているので、きっとそれ以前の学習データのロードまでのどこかではないか?
train_iter = chainer.iterators.SerialIterator(
Serial?
ということは、Multiもあるのか?
はい、ありました
https://docs.chainer.org/en/stable/reference/iterators.html
なんか4つもあります
chainer.iterators.SerialIterator :シングルスレッドでの逐次処理
chainer.iterators.MultiprocessIterator :マルチプロセス
chainer.iterators.MultithreadIterator :マルチスレッド
chainer.iterators.DaliIterator :Daliパイプライン(何それ?)
やったこと
SerialIterator → MultiprocessIterator
使用率を見た感じだと4コア8スレッドのCPUの場合、こんな感じなのかな
MultiprocessIterator 4コア8スレッドを使う
MultithreadIterator 1コア2スレッドを使う