修剪非必要權重

這份文件提供模型修剪的總覽,協助你判斷模型修剪是否適用於你的用途。如要立即進一步瞭解程式碼,請參閱使用 Keras 進行修剪教學課程,以及 API 說明文件。如需進一步瞭解 Keras API 的使用方式、深入探討修剪作業,以及閱讀其他進階使用模式的說明文件,請參閱訓練稀疏模型指南。

總覽

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

這項技術透過壓縮模型而帶來了改善。在未來,這項技術的架構支援將可改善延遲狀況。我們發現,在盡量不犧牲準確率的前提下,模型壓縮率最多可提升 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 進行修剪的教學課程外,請一併參閱下列範例:

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

提示

  1. 請盡可能先從預先訓練模型或權重開始。如果無法這麼做,請先建立一個未修剪的預先訓練模型再開始修剪。
  2. 請勿太常修剪模型,以便讓模型有時間進行復原。工具包會提供預設的頻率。
  3. 請實驗看看從步驟 0 開始逐步將預先訓練模型修剪至最終的稀疏度。
  4. 修剪模型時,學習率不宜過高或過低。請將修剪時間表當做超參數。

如需背景資訊,請參閱修剪與否:探索模型壓縮的修剪效果 [文件]。