@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
にて、TensorFlowの学習済み32ビットモデルを16ビットに量子化できるようになったようですね。TensorFlow Liteのロードマップには、16ビット量子化については書いてないのですがね。
モデルサイズが半分になるのは当たり前だけど、精度劣化も MobileNet V1/V2、MobileNet SSDでは、0.03 %以下だと。このレベルじゃ、誤差範囲じゃないんでしょうか?
16ビット量子化しても残念ながら、Google Edge TPUでは使えません。何故なら、Google Edge TPUは8ビットのみサポートしているので。
16ビット量子化をサポートしているのは、GPU。そう、GPUです。
TensorFlow Liteでは、GPU DeleGate をサポートしたので、その GPU DeleGate で動作するようです。
TensorFlow Lite の GPU DeleGate については、このブログでは下記のように4回書いています。
2019年1月21日のブログ、
2019年4月2日のブログ、
2019年4月8日のブログ、
2019年7月9日のブログ、
TensorFlowのモデルを TensorFlow Lite に変換するとき、
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.lite.constants.FLOAT16]
Tflite_quanit_model = converter.convert()
のようにして、
const TfLiteGpuDelegateOptions options = {
.metadata = NULL,
.compile_options = {
.precision_loss_allowed = 1, // FP16
.preferred_gl_object_type = TFLITE_GL_OBJECT_TYPE_FASTEST,
.dynamic_batch_enabled = 0, // Not fully functional yet
},
};
にオプションを設定すればいいのね。
TensorFlow Lite にどんどん機能追加されていきますね。