近日,TensorFlow 推出了一款新的模型最佳化工具包。利用該該工具包中的技術可以將模型壓縮 75%,最大可將速度提升到原來的 3 倍。
新手和熟練的開發者都能利用這套工具包中的技術來最佳化待部署和執行的機器學習模型。預計該工具包中的技術將有助於最佳化所有 TensorFlow 模型以進行部署,但它對於那些為記憶體緊張、功率和儲存受限的裝置提供模型的 TensorFlow Lite 開發人員來說幫助最大。
TensorFlow Lite 相關資訊連結:https://www.tensorflow.org/mobile/tflite/。
最佳化模型以減少尺寸、延遲和功耗,使準確率損失不明顯
新增的第一項支援技術是對 TensorFlow Lite 轉換工具的訓練後量化(post-training quantization)。對於相關的機器學習模型,利用該技術可以將模型壓縮到原來的 1/4,並將速度提升到原來的 3 倍。
開發者可以透過量化模型減少能耗。這點對於在邊緣裝置中部署(不侷限於手機)非常有用。
實現訓練後量化
訓練後量化技術是 TensorFlow Lite 轉換工具的一部分。上手非常簡單:建立 TensorFlow 模型之後,開發者可以簡單地實現 TensorFlow Lite 轉換工具中的「post_training_quantize」標記。假設這一儲存的模型儲存在 saved_model_dir 中,則可以生成量化的 tflite flatbuffer:
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)
TensorFlow 提供了相關教程,深入解析如何做到這一點。未來的目標是將這種技術納入通用的 TensorFlow 工具中,以便將其部署在目前沒有 TensorFlow Lite 支援的平臺上。
教程連結:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/tutorials/post_training_quant.ipynb
訓練後量化的好處
模型縮小到原來的 1/4
主要由卷積層組成的模型執行速度提高了 10-50%。
基於 RNN 的模型得到了 3 倍的加速
由於減少了記憶體和計算需求,預計大多數模型將降低功耗。
下圖顯示一些模型尺寸減小,執行速度提高(使用單核的 Android Pixel 2 手機上進行的測量)。
圖 1:模型大小比較:最佳化後的模型差不多縮小到原來的 1/4。
圖 2:延時比較:最佳化後的模型速度是原來的 1.2—1.4 倍。
加速和模型尺寸減小對準確率的影響很小。一般對於手頭任務來說,已經較小的模型(如用於影像分類的 mobilenet v1)可能會損失更多的準確率。對於這些模型,TensorFlow 為其中的大部分提供預訓練的完全量化模型。
圖 3:準確率比較:除了 mobilenets,最佳化後的模型準確率下降不明顯。
TensorFlow 期望在未來繼續改進結果,所以請參見模型最佳化指南,瞭解最新的測量結果。地址:https://www.tensorflow.org/performance/model_optimization
訓練後量化如何起作用
TensorFlow 透過將引數(即神經網路權重)的精度從訓練時的 32 位浮點表示降至小得多且高效的 8 位浮點數表示,來進行最佳化(也稱為量化)。詳細資訊請參見訓練後量化指南。地址:https://www.tensorflow.org/performance/post_training_quantization
這些最佳化將確保結果模型中精度降低的操作定義與使用固定和浮點數學混合的核心實現配對。這將在較低精度下快速執行最重的計算,但在較高精度下執行最敏感的計算,因此通常會導致任務很少甚至沒有最終準確率損失,但與純浮點執行相比,速度顯著加快。對於沒有匹配的「混合」核心的操作,或者工具包認為有必要的操作,它會將引數重新轉換為更高的浮點精度來執行。有關支援混合操作的列表,請參見訓練後量化頁面。
未來展望
TensorFlow 將繼續改進訓練後量化及簡化模型最佳化過程的其它技術上的工作。這些將整合到 TensorFlow 相關工作流程中,使其更加容易使用。
訓練後量化是 TensorFlow 正在開發的最佳化工具包下的第一個產品,該團隊希望得到來自開發者的相關反饋。
原文連結:https://medium.com/tensorflow/introducing-the-model-optimization-toolkit-for-tensorflow-254aca1ba0a3