模型縮小75%,TensorFlow推出模型優化工具包
來源:Tensorflow
編譯:Bot
編者按:幾個月前,Tensorflow釋出了一份名為《Quantizing deep convolutional networks for efficient inference》的白皮書,主要介紹團隊關於模型量化的相關工作,所謂量化,就是把32浮點數近似地用8位整數儲存和計算,這之後,模型佔用的儲存空間就會減小75%,能起到壓縮模型的效果。而現在,這項技術就快和大家見面了。
今天凌晨,TensorFlow官方釋出訊息稱將引入一個新的優化工具包,方便機器學習初學者和高階開發人員進行優化,方便模型的部署和執行。
它的名字是訓練後量化(post-training quantization),這是模型量化的一類,主要優點有:
- 模型佔用儲存空間縮小75%
- 如果是主要由卷積層組成的模型,執行速度提高10–50%
- 如果是基於RNN的模型,執行速度提高3倍
- 記憶體、算力要求的降低也意味著大多數模型的功耗會大幅降低
記憶體、算力、功耗,這是模型量化的主要優化物件,而在實踐中,最能從中收益的自然是在各種移動端裝置上使用機器學習模型的開發人員,尤其是TensorFlow Lite的使用者。
下圖展示了使用這個優化工具包後,幾種典型模型在儲存空間佔用上的變化(單核Android Pixel 2手機):

下圖是訓練後量化對模型執行的加速效果(單核Android Pixel 2手機):

通常情況下,模型壓縮會對原有準確率造成不同程度的影響,但訓練後量化的影響幾乎等同於無,它能在縮小尺寸、提高速度的前提下保持模型精度,如下圖所示(單核Android Pixel 2手機):

啟用模型量化
現在訓練後量化已被整合到TensorFlow Lite中,它的使用方法很簡單:首先構建一個TensorFlow模型,其次在conversion tool中找到模型量化的標誌“post_training_quantize”。假設模型儲存在saved_model_dir中,具體命令就是:
converter=tf.contrib.lite.TocoConverter.from_saved_model(saved_model_dir) converter.post_training_quantize=True tflite_quantized_model=converter.convert() open(“quantized_model.tflite”, “wb”).write(tflite_quantized_model)
具體操作可見github: ofollow,noindex">github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/tutorials/post_training_quant.ipynb
雖然目前開發者們只能在TensorFlow Lite中用到這個技術,但官方也稱將盡快把它整合到一般的TensorFlow工具中。
小結
除了訓練後量化,在之前提到的白皮書中,Tensorflow還提到了訓練時量化,它能使模型的準確率更高。而綜合來看,它們都是基於量化設計的技術,依靠把32浮點數近似地用8位整數儲存和計算來達到記憶體佔用更少、計算更少和功耗更少的目的。
隨著深層神經網路不斷在現實中落地,這種技術將適應現代科技裝置的發展步伐,為開發者和產品使用者帶來便利。