從已訓練的模型中移除不必要的參數(權重、神經元或整個層),使其更小更快且不會顯著損失品質。就像修剪樹木:剪掉貢獻最少的枝條,樹仍然保持健康。結構化剪枝移除整個神經元或注意力頭。非結構化剪枝將個別權重歸零。
剪枝是與量化和蒸餾並列的模型壓縮技術。關鍵洞察:大多數神經網路是過度參數化的 — 許多權重對輸出貢獻很小。「樂透彩票假說」表明,在大型網路中存在一個小得多的子網路,可以匹配原始網路的效能。剪枝找到並保留那個子網路。
非結構化剪枝根據權重大小將個別權重設為零(最小的權重貢獻最少)。這會建立稀疏的權重矩陣。挑戰是:標準硬體無法有效處理稀疏計算,因此一個被剪枝 50% 的模型在 GPU 上不會快 2 倍 — 加速需要專門的稀疏計算函式庫或硬體。這限制了非結構化剪枝的實際效益。
結構化剪枝移除整個神經元、注意力頭或層。這產生一個較小的密集模型,在標準硬體上運行更快,無需稀疏計算支援。研究表明,許多注意力頭是冗餘的 — 在 Transformer 中移除 20–40% 的注意力頭通常對效能影響很小。某些注意力頭始終比其他的貢獻更大,而重要的注意力頭可以通過基於梯度的重要性分數來辨識。
這三種壓縮技術配合得很好:剪枝冗餘參數,將剩餘權重量化為更低精度,並可選擇從原始模型蒸餾以恢復品質損失。這個流程可以將模型縮小到原始大小的 10–20%,同時保留 95% 以上的能力。順序很重要:通常先剪枝,然後量化剪枝後的模型,再微調以恢復品質。