1. 程式人生 > >TensorFlow 模型優化工具包正式推出

TensorFlow 模型優化工具包正式推出

來源 | TensorFlow 公眾號

我們非常激動地宣佈 TensorFlow 新增一個優化工具包,這是一套讓新手和高階開發者都可以用來優化機器學習模型以進行部署和執行的技術。

我們預期這些技術對優化任何準備部署的 TensorFlow 模型都會非常有用,但對於 TensorFlow Lite 開發者而言,這些技術尤為重要,因為他們在裝置上提供模型時會受到記憶體緊張、功耗約束及儲存空間限制等條件的制約。如果您尚未試用過 TensorFlow Lite,可以點選此處,瞭解更多資訊。 注:此處連結 https://www.tensorflow.org/lite/

在這裡插入圖片描述 優化模型以縮減尺寸、延時和功率,令其在精確度上的損耗可以忽略不計

我們新支援的第一項技術是 TensorFlow Lite 轉換工具的訓練後量化。對於相關機器學習模型,這項技術可以實現高達 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)

訓練後量化的益處

  • 使模型尺寸縮減 4 倍
  • 對於主要由卷積層組成的模型,可以使其執行速度提高 10–50%
  • 使基於 RNN 的模型速度提升 3 倍
  • 由於對記憶體和計算的要求下降,我們預計大部分模型的功耗都會有所降低

請參閱下圖,瞭解若干模型的尺寸縮減和執行速度加快情況(使用單核心 Android Pixel 2 手機測量)。

在這裡插入圖片描述 圖 1:模型尺寸對比:優化後的模型縮小了幾乎 4 倍

在這裡插入圖片描述 圖 2:延時對比:優化後的模型速度提升了 1.2 到 1.4 倍

在這裡插入圖片描述 圖 3:精確度對比:優化後模型的精確度下降可以忽略不計(MobileNet 除外)

訓練後量化的工作原理

在後臺,我們將引數(即神經網路權重)的精度從其訓練時的 32 位浮點數值降低到更小且更高效的 8 位整數值,以通過這種方式進行優化(也稱為量化)。如需瞭解更多詳情,請參閱訓練後量化指南。 注:訓練後量化指南連結 https://www.tensorflow.org/performance/post_training_quantization

這些優化可確保將所產生模型中精度降低的運算定義與混合使用固定和浮點數學的核心實現進行配對。這會使模型以較低精度快速執行最繁重的計算,但以較高精度執行最敏感的計算,因此在執行此類任務時通常只會造成很少甚至完全不會造成最終精確度損耗,而執行速度卻遠遠超過純浮點的方式。如果運算中沒有匹配的“混合”核心,或者工具包認為不必要,則模型會將這些引數重新轉換為較高的浮點精度執行。如需受支援的混合運算列表,請參閱訓練後量化頁面。 注:訓練後量化頁面連結 https://www.tensorflow.org/performance/post_training_quantization

未來工作

我們將繼續改進訓練後量化技術,同時開發能夠使模型優化更加簡單的其他技術。我們會將這些技術整合到相關的 TensorFlow 工作流程中,讓它們更加輕鬆易用。

訓練後量化是我們正在開發的優化工具包中的第一款產品。我們很期待收到開發者的使用反饋。

致謝