2018年7月4日水曜日

FP16とFP32で重みの型を変えた話



実験がツラい中の人です.

今回は前々から組んでいたFCNの高速化に関するネタ.
Chainerで何も設定せずにモデルを作成すると重みやバイアスのデータはfloat32で作られるのですが,設定を変更することで重みやバイアスのデータ型をfloat16に変更することができます.今回はデータ型を変更した時の推論にかかる時間への影響について考えてみます.





FP16 : 0.096[sec]
FP32 : 0.069[sec]
(30回平均)
あれ,FP16のほうが遅い...
FP16とFP32が同じぐらい時間がかかるなら,SIMDとかやらずに単純に計算しただけって解釈できるのですが,FP16が遅いってことは...

高速化もされていないなら...命令セット周りか...
どうやらFP16から型変換して演算→結果をFP16に直すってことらしい.

..FP16サポートしてよ...

おまけ モデルのサイズ
Chainerではモデルの保存ができますが,この時のデータサイズを比較すると...
FP32 : 12KB
FP16 : 7KB
こちらは至極当然といった感じ.
(NPZ形式での値,モデルの構成を変えるといろいろ変わると思われます.)



0 件のコメント:

コメントを投稿