由 Arm ML Tooling 維護
本文件概述了實驗性 API,用於結合各種技術來最佳化機器學習模型以進行部署。
總覽
協同最佳化是一個總括性的流程,包含各種技術,旨在產生一個在部署時,能在推論速度、模型大小和準確度等目標特性之間取得最佳平衡的模型。
協同最佳化的概念是建立在個別技術的基礎上,透過依序套用這些技術,以達成累積的最佳化效果。以下最佳化技術有多種可能的組合:
當嘗試將這些技術串聯在一起時,會出現一個問題:套用其中一種技術通常會破壞前一種技術的成果,從而破壞同時套用所有技術的整體效益;例如,叢集化不會保留剪枝 API 引入的稀疏性。為了解決這個問題,我們推出了以下實驗性的協同最佳化技術:
- 稀疏性保留叢集化
- 稀疏性保留量化感知訓練 (PQAT)
- 叢集保留量化感知訓練 (CQAT)
- 稀疏性與叢集保留量化感知訓練
這些技術提供了多種部署路徑,可用於壓縮機器學習模型,並在推論時充分利用硬體加速。下圖展示了多種部署路徑,可用於探索具有所需部署特性的模型,其中葉節點是可部署模型,表示這些模型已部分或完全量化,且採用 tflite 格式。綠色填充表示需要重新訓練/微調的步驟,虛線紅色邊框則突顯協同最佳化步驟。用於取得指定節點模型所使用的技術,已在對應的標籤中註明。
上圖省略了直接、僅量化(訓練後或 QAT)的部署路徑。
我們的想法是在上述部署樹狀結構的第三層達到完全最佳化的模型;然而,其他任何最佳化層級都可能令人滿意,並達到所需的推論延遲/準確度權衡,在這種情況下,就不需要進一步的最佳化。建議的訓練流程是反覆瀏覽適用於目標部署情境的部署樹狀結構層級,並查看模型是否符合推論延遲要求,如果不符合,則使用對應的協同最佳化技術進一步壓縮模型,並重複執行,直到模型完全最佳化(剪枝、叢集化和量化),如有需要。
下圖顯示範例權重核心在經過協同最佳化管線時的密度圖。
結果是一個量化的部署模型,其獨特值的數量減少,且稀疏權重的數量也相當多,具體取決於訓練時指定的目標稀疏性。除了顯著的模型壓縮優勢外,特定的硬體支援還可以利用這些稀疏、叢集化的模型來大幅縮短推論延遲。
結果
以下是我們在實驗 PQAT 和 CQAT 協同最佳化路徑時獲得的一些準確度和壓縮結果。
稀疏性保留量化感知訓練 (PQAT)
模型 | 項目 | 基準 | 剪枝模型 (50% 稀疏性) | QAT 模型 | PQAT 模型 |
---|---|---|---|---|---|
DS-CNN-L | FP32 Top1 準確度 | 95.23% | 94.80% | (Fake INT8) 94.721% | (Fake INT8) 94.128% |
INT8 完整整數量化 | 94.48% | 93.80% | 94.72% | 94.13% | |
壓縮率 | 528,128 → 434,879 (17.66%) | 528,128 → 334,154 (36.73%) | 512,224 → 403,261 (21.27%) | 512,032 → 303,997 (40.63%) | |
Mobilenet_v1-224 | FP32 Top 1 準確度 | 70.99% | 70.11% | (Fake INT8) 70.67% | (Fake INT8) 70.29% |
INT8 完整整數量化 | 69.37% | 67.82% | 70.67% | 70.29% | |
壓縮率 | 4,665,520 → 3,880,331 (16.83%) | 4,665,520 → 2,939,734 (37.00%) | 4,569,416 → 3,808,781 (16.65%) | 4,569,416 → 2,869,600 (37.20%) |
叢集保留量化感知訓練 (CQAT)
模型 | 項目 | 基準 | 叢集化模型 | QAT 模型 | CQAT 模型 |
---|---|---|---|---|---|
Mobilenet_v1 在 CIFAR-10 上 | FP32 Top1 準確度 | 94.88% | 94.48% | (Fake INT8) 94.80% | (Fake INT8) 94.60% |
INT8 完整整數量化 | 94.65% | 94.41% | 94.77% | 94.52% | |
大小 | 3.00 MB | 2.00 MB | 2.84 MB | 1.94 MB | |
Mobilenet_v1 在 ImageNet 上 | FP32 Top 1 準確度 | 71.07% | 65.30% | (Fake INT8) 70.39% | (Fake INT8) 65.35% |
INT8 完整整數量化 | 69.34% | 60.60% | 70.35% | 65.42% | |
壓縮率 | 4,665,568 → 3,886,277 (16.7%) | 4,665,568 → 3,035,752 (34.9%) | 4,569,416 → 3,804,871 (16.7%) | 4,569,472 → 2,912,655 (36.25%) |
針對依通道叢集化的模型,CQAT 和 PCQAT 的結果
以下結果是使用依通道叢集化技術取得的。這些結果說明,如果模型的卷積層是依通道叢集化的,那麼模型準確度會更高。如果您的模型有很多卷積層,那麼我們建議依通道叢集化。壓縮率保持不變,但模型準確度會更高。在我們的實驗中,模型最佳化管線為「叢集化 -> 叢集保留 QAT -> 訓練後量化,int8」。
模型 | 叢集化 -> CQAT,int8 量化 | 依通道叢集化 -> CQAT,int8 量化 |
---|---|---|
DS-CNN-L | 95.949% | 96.44% |
MobileNet-V2 | 71.538% | 72.638% |
MobileNet-V2 (已剪枝) | 71.45% | 71.901% |
範例
如需本文所述協同最佳化技術的端對端範例,請參閱 CQAT、PQAT、稀疏性保留叢集化和 PCQAT 範例筆記本。