權重叢集

由 Arm ML Tooling 維護

本文件概述了權重叢集,以協助您判斷它如何適用於您的使用案例。

總覽

叢集化或權重共享減少模型中獨特權重值的數量,從而為部署帶來好處。它首先將每層的權重分組為 N 個叢集,然後為屬於該叢集的所有權重共享叢集的質心值。

此技術透過模型壓縮帶來改進。未來的框架支援可以解鎖記憶體佔用空間的改進,這對於在資源有限的嵌入式系統上部署深度學習模型可能至關重要。

我們已在視覺和語音任務中試驗過叢集化。我們已看到模型壓縮最多可改進 5 倍,且準確性損失極小,如下面呈現的結果所示。

請注意,對於先於批次正規化層的卷積層和密集層,以及與每軸訓練後量化結合使用時,叢集化帶來的好處將會減少。

API 相容性矩陣

使用者可以使用以下 API 應用叢集化

  • 模型建構:僅限循序和函數式模型的 keras
  • TensorFlow 版本:適用於 1.14 以上版本和 2.x 版本的 TF 1.x。
    • 使用 TF 2.X 套件的 tf.compat.v1 和使用 TF 1.X 套件的 tf.compat.v2 不受支援。
  • TensorFlow 執行模式:圖形和 Eager 模式

結果

影像分類

模型 原始 叢集化
Top-1 準確度 (%) 壓縮後的 .tflite 檔案大小 (MB) 組態 叢集數量 Top-1 準確度 (%) 壓縮後的 .tflite 檔案大小 (MB)
MobileNetV1 70.976 14.97
選擇性 (最後 3 個 Conv2D 層) 16, 16, 16 70.294 7.69
選擇性 (最後 3 個 Conv2D 層) 32, 32, 32 70.69 8.22
完整 (所有 Conv2D 層) 32 69.4 4.43
MobileNetV2 71.778 12.38
選擇性 (最後 3 個 Conv2D 層) 16, 16, 16 70.742 6.68
選擇性 (最後 3 個 Conv2D 層) 32, 32, 32 70.926 7.03
完整 (所有 Conv2D 層) 32 69.744 4.05

這些模型在 ImageNet 上進行了訓練和測試。

關鍵字辨識

模型 原始 叢集化
Top-1 準確度 (%) 壓縮後的 .tflite 檔案大小 (MB) 組態 叢集數量 Top-1 準確度 (%) 壓縮後的 .tflite 檔案大小 (MB)
DS-CNN-L 95.233 1.46
完整 (所有 Conv2D 層) 32 95.09 0.39
完整 (所有 Conv2D 層) 8 94.272 0.27

該模型在 SpeechCommands v0.02 上進行了訓練和測試。

  1. 將 Keras 模型序列化為 .h5 檔案
  2. 使用 TFLiteConverter.from_keras_model_file() 將 .h5 檔案轉換為 .tflite
  3. 將 .tflite 檔案壓縮為 zip

範例

除了 Keras 範例中的權重叢集化之外,另請參閱以下範例

  • 叢集化在 MNIST 手寫數字分類資料集上訓練的 CNN 模型的權重:程式碼

權重叢集化實作基於《Deep Compression:使用剪枝、訓練後量化和霍夫曼編碼壓縮深度神經網路》論文。請參閱第 3 章,標題為「訓練後量化和權重共享」。