studylog/北の雲

chainer/python/nlp

Chainerメモ13 type_checkをオフにして高速化

少し前から気になっていたのですが1.3.0よりtype_checkをオフにすることで処理を高速化できるようになっていました。


Function — Chainer 1.4.0 documentation

type_check_enable
When it is True, the function checks types of input arguments. Set CHAINER_TYPE_CHECK environment variable 0 to disable type check, or set the variable directly in your own program.


やってみました。このやり方でいいのかどうかは不安です。

import os
os.environ["CHAINER_TYPE_CHECK"] = "0" #ここでオフに  オンにしたかったら1にするかコメントアウト

#以下chainer関係のimportなど
import chainer 
省略...

#これがFalseになっていればOK
print(chainer.functions.Linear(1,1).type_check_enable) 

chainerのimportよりも上に書かないといけないようです。
下に書いちゃうと反映されないようで、print(chainer.functions.Linear(1,1).type_check_enable)がTrueになっちゃいます。

本当に速くなるのか

速くなりました。
LSTMを使ったRNN言語モデル構築コードで104%ほど。
処理によってどのくらい速くなるかは変わるはずですが、確かに速くなるようです。

1.開発時はtype_checkをオンに(デフォルトでオン)
2.とりあえず1epoch回してみるところまでオンでやる
3.問題なければオフにして速度重視で本番モデルを構築する
という流れでしょうか。

もしかしたら弊害もあるかもしれませんのでお仕事で使われている方はあまりこの記事を鵜呑みにせずちゃんと調査して欲しいです。
おわり。