CNNでの文書分類時のbackwardが環境によって遅くなる

405 views
Skip to first unread message

田中光一

unread,
Dec 27, 2016, 7:23:52 AM12/27/16
to Chainer Japanese User Group
こんばんは.
普段からChainerを使わせていただいております.田中と申します.

CNNで文書のポジネが分類を行おうとしているのですが,Chainerを使用するマシンによって速度が大幅に遅くなってしまいます.
速度が遅くなってしまう方はGPU,CPU共にスペックが上なので,スペックの問題ではないと思います.

スペックですが,速度について問題ない方のマシンスペックが,
CentOS7.1 GeForce GTX TITAN X 
問題ある方のマシンスペックが,
CentOS7.2 Tesla M40 
となっております.どちらもpyenv環境のPython3.4.3,Chainerのバージョンは1.19.0です.

Chainerで使用したモデルは下のURLと同じで,pretrainのベクトルに300次元のword2vecで学習したベクトルを用いています.

速度が遅い方について,コメントアウトしながら各記述部分の速度を確認したところ,trainingのloss.backward()で異常に時間がかかっているようでした.
両環境ともChainerのexampleのmnistやptbのコードは問題なく動き,かつ,速度も問題ない(極端に速度が遅くなったりしない)ので原因が特定できず困り果てております.

使用しているコードと両環境のnvprofも添付します.
fastが問題ない方で,slowが速度が遅い方のnvprofログです.

何卒よろしくお願いします.

slow.txt
fast.txt
t.py
Message has been deleted

田中光一

unread,
Dec 27, 2016, 7:48:44 AM12/27/16
to Chainer Japanese User Group
追記ですが,遅い方はnvidia-smi -l でGPU-Utilが100%になっているのでGPUリソースを使えていないということはなさそうでした.
また,精度については両者問題ありません.Teslaの方は速度がひたすらに遅いです.

田中光一

unread,
Jan 3, 2017, 8:02:15 PM1/3/17
to Chainer Japanese User Group
自己解決いたしました.
どうやらcuDNNの問題のようです.
遅い方はCuda7.5でcuDNN 5.0を使用していたのですが,早い方はCuda7.5でcuDNN 2.0でした.
遅い方のCuDNNを5.0から2.0に落として実行してみたところ実行速度の問題がなくなりました.
(Tensorflowでも似たようなissueがあるようでした.https://github.com/tensorflow/tensorflow/issues/1772

okuta

unread,
Jan 4, 2017, 7:53:58 PM1/4/17
to Chainer Japanese User Group
cuDNNですが、v5.1がリリースされています。
そちらの方は試されていますか?

5.0は何らかの理由で非推奨だった記憶があります。

2017年1月4日水曜日 10時02分15秒 UTC+9 田中光一:

田中光一

unread,
Jan 4, 2017, 8:18:36 PM1/4/17
to Chainer Japanese User Group
返信ありがとうございます.
v5.1を試してみましたが,遅くなってしまうようです.

2017年1月5日木曜日 9時53分58秒 UTC+9 okuta:
cuDNNですが、v5.1がリリースされています。
そちらの方は試されていますか?

5.0は何らかの理由で非推奨だった記憶があります。

okuta

unread,
Jan 5, 2017, 12:05:59 AM1/5/17
to Chainer Japanese User Group
検証ありがとうございます。


2017年1月5日木曜日 10時18分36秒 UTC+9 田中光一:

okuta

unread,
Jan 5, 2017, 7:48:23 PM1/5/17
to Chainer Japanese User Group
原因がおそらく分かりました。

cuDNNはv4以上では一時メモリの最大使用量に応じてアルゴリズムを選択する機能が追加されています。
使う一時メモリの量は次の関数で制御可能です。

Chainerではメモリ量の少ない環境でも動く用に少なめのテンポラリサイズを使っています。
田中さんの使っているGPUによりますが、1G程度の大きめのサイズを指定すると問題を切り分けやすくなるかと思います。

2017年1月5日木曜日 10時18分36秒 UTC+9 田中光一:
Reply all
Reply to author
Forward
0 new messages