修剪非必要權重

由 TensorFlow 模型最佳化維護

這份文件將概略說明模型修剪,協助您判斷模型修剪是否適用於您的用途。

總覽

以規模為基礎的權重修剪會在訓練過程中,逐步將模型權重歸零,以建立稀疏的模型。稀疏模型更易於壓縮,而且我們可在推論期間略過零的數值,改善延遲狀況。

這項技術透過壓縮模型而帶來了改善。在未來,這項技術的架構支援將可改善延遲狀況。我們發現,在盡量不犧牲準確率的前提下,模型壓縮率最多可提升 6 倍。

這項技術目前正在各種語音應用程式 (例如語音識別和文字轉語音) 中接受評估,並已在各種視覺和翻譯模型上進行實驗。

API 相容性矩陣

使用者可透過下列 API 套用修剪:

  • 模型建構:tf.keras 僅包含序列模型和函式模型
  • TensorFlow 版本:TF 1.x 適用於 1.14 以上版本和 2.x 版本。
    • 不支援使用 TF 2.X 套件的 tf.compat.v1 和使用 TF 1.X 套件的 tf.compat.v2
  • TensorFlow 執行模式:包括 Graph 和 Eager 模式
  • 分散式訓練:僅包含 Graph Execution 的 tf.distribute

我們之後會支援以下領域:

結果

圖片分類

模型 非稀疏的最高準確率 稀疏準確率 稀疏度
InceptionV3 78.1% 78.0% 50%
76.1%75%
74.6%87.5%
MobilenetV1 22471.04%70.84%50%

模型已在 Imagenet 上經過測試。

翻譯

模型 非稀疏 BLEU 稀疏 BLEU 稀疏度
GNMT EN-DE 26.77 26.86 80%
26.5285%
26.1990%
GNMT DE-EN 29.47 29.50 80%
29.2485%
28.8190%

模型使用 WMT16 德文和英文資料集,將 news-test2013 做為開發集,並將 news-test2015 做為測試集。

範例

除了使用 Keras 進行修剪的教學課程外,請一併參閱下列範例:

  • 使用修剪來訓練 CNN 模型,用於處理 MNIST 手寫數字分類工作:程式碼
  • 使用修剪來訓練 LSTM,用於處理 IMDB 情緒分類工作:程式碼

如需背景資訊,請參閱〈To prune, or not to prune: exploring the efficacy of pruning for model compression〉(修剪與否:探索模型壓縮的修剪效果) [論文]。