Vitis AI 是AMD 開發套件,用于在 AMD 硬件平臺上進行 AI 推斷。機器學習中的推斷是計算密集型流程,需要大量存儲器帶寬以滿足各種應用的低時延和高吞吐量要求。
Vitis AI Optimizer(優化器)支持對神經網絡模型進行最優化。當前,Vitis AI 優化器僅包含一項工具,稱為“pruner”(剪枝器)。Vitis AI 優化器用于移除神經網絡中的冗余內核,從而減少推斷的總體計算成本。由 Vitis AI 剪枝器所生成的剪枝后的模型隨后由 Vitis AI 量化器進行量化,然后部署到 AMD FPGA、SoC 或 ACAP 器件。
VAI優化器
本文檔涵蓋了以下設計進程:機器學習和數據研究——將機器學習模型從 PyTorch、TensorFlow 或其它熱門框架導入 Vitis AI,然后對其有效性進行最優化和評估。本文檔中適用于此設計進程的主題包括:
?第 2 章:剪枝
?第 3 章:處理 Vitis AI 優化器
由于版面有限,本文選取了剪枝章節中的部分內容進行分享。如果您希望獲取完整版用戶指南,請至文末掃描二維碼下載完整版進行瀏覽。
剪枝
神經網絡通常過度參數化,具有大量冗余。剪枝是消除冗余權重同時盡可能使準確度損失保持處于低位的進程。
低精度剪枝和高精度剪枝
行業研究帶來了多項有助于降低神經網絡推斷成本的技術。這些技術包括:
點擊查看詳細內容
迭代剪枝與單步剪枝的對比
下表中顯示了這兩種方法的對比。
迭代剪枝
剪枝器旨在減少模型參數數量,同時盡可能降低準確度損失。這是通過迭代方式來完成的,如下圖所示。剪枝導致準確度降低,重新訓練可恢復準確度。剪枝隨后重新訓練即構成一次迭代。在剪枝的首次迭代中,輸入模型是基線模型,并且已經過剪枝和精調。在后續迭代中,從先前迭代所獲取的精調后的模型會變為新的基線。此進程通常會重復數次,直至獲取期望的稀疏模型。迭代方法是必需的,因為在單次傳遞中無法在維持準確度的同時進行模型剪枝。如果一次迭代移除的參數過多,那么準確度損失可能過于劇烈,可能無法恢復。
利用迭代剪枝的進程,可以達到更高的剪枝率,同時模型性能不會出現顯著損失。
迭代剪枝
以下描述了迭代剪枝的 4 個主要階段:
分析:對模型執行敏感度分析,判定最優剪枝策略。
剪枝:減少輸入模型中的計算次數。
精調:重新訓練已剪枝的模型以恢復準確度。
變換:生成含更低權重的密集模型。
迭代剪枝工作流程
步驟1
分析原始基線模型。
步驟2
對模型進行剪枝。
步驟3
對剪枝后的模型進行精調。
步驟4
多次重復步驟 2 和 3,直至在準確度與稀疏度之間達成期望的平衡。
步驟5
將剪枝后的稀疏模型變換為最終密集加密的模型,以供在 Vitis AI 量化器中使用。
單步剪枝
單步剪枝會實現EagleEye1算法。它僅通過采用了一個簡單而又高效的評估組件,就得以在不同的已剪枝模型及其對應精調準確度之間引入強大的正關聯,這個組件名為自適應批量歸一化。它使您無需實際進行模型精調,即可獲取可能達成的準確度最高的子網絡。簡而言之,單步剪枝方法會搜索一群滿足所需模型大小的子網絡(即,生成的剪枝后模型),并選擇其中最有潛力的子網絡。隨后,通過對所選子網絡進行重新訓練來恢復準確度。
剪枝步驟如下所示: | |
1 | 搜索滿足所需剪枝率的子網絡。 |
2 | 從一群具有評估組件的子網絡中選擇潛在網絡。 |
3 | 對剪枝后的模型進行精調。 |
單步剪枝工作流程
注釋:
1.Bailin Li et al., EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning, arXiv:2007.02491
剪枝方法的選擇指南
Vitis AI 優化器中為 PyTorch 提供了 3 種剪枝方法。請參閱以下決策樹以選擇適合您的網絡的方法。
在PyTorch中選擇剪枝方法的流程圖
審核編輯 :李倩
-
神經網絡
+關注
關注
42文章
4808瀏覽量
102797 -
模型
+關注
關注
1文章
3487瀏覽量
49998
原文標題:Vitis AI 優化器用戶指南
文章出處:【微信號:賽靈思,微信公眾號:Xilinx賽靈思官微】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
使用AMD Vitis進行嵌入式設計開發用戶指南

TLV803EA29DPW-EVM 4針電壓監控器用戶指南

UCC28019A EVM 350W PFC轉換器用戶指南

bq24133EVM獨立同步開關模式電池充電控制器用戶指南

TMS320DM644x DMSoC ATA控制器用戶指南

評論