第二部:《深度學習》93/100 📌量化(Quantization)與剪枝(Pruning)✂ 壓縮不等於犧牲表現!

更新 發佈閱讀 11 分鐘

AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》

93/100 第十週:📌 部署、壓縮與邊緣 AI 應用(Edge AI & Deployment)📦

93.量化(Quantization)與剪枝(Pruning)✂ 壓縮不等於犧牲表現!.

_______________________________________

🎯 單元導讀:

當模型從實驗室走向真實世界,「效能」與「部署可行性」才是落地關鍵。

但大模型常有數千萬參數、幾百 MB 體積,要應用在手機、IoT 或嵌入式設備上:

✅ 必須「壓縮」

→ 量化(Quantization):減少位元精度

→ 剪枝(Pruning):移除不必要的神經元或連結

本課帶你全面理解這兩大技術與實務應用!

________________________________________

✳ 一、為什麼要壓縮模型?

原因 解釋

⏱️ 降低延遲 輕量模型計算快、反應快

📦 減少儲存與傳輸成本 模型變小,可部署於低記憶體裝置(IoT、手機)

⚡ 節省能耗 輕量模型省電、延長電池壽命

✅ 加速部署與載入 模型下載時間與初始化更快速

________________________________________

🧮 二、量化(Quantization):從 32-bit 到 8-bit!

➤ 什麼是量化?

將模型中的浮點參數(FP32)轉為較低精度(如 INT8、FP16),降低儲存與計算需求。

________________________________________

✅ 常見量化方式:

常見的模型量化方式包括三大類型:Post-Training Quantization(PTQ) 是在模型訓練完成後,直接將權重與運算轉為低精度格式,實作簡單但可能影響準確率;

Quantization-Aware Training(QAT) 則在訓練過程中模擬低精度行為,讓模型學會適應量化誤差,通常可維持較高準確度;而 動態與靜態量化 的差別在於是否於推論時再進行轉換(動態)或事先量測校準參數並固定轉換比例(靜態),靜態量化通常能達到更好的效能與穩定性。

這些量化策略有助於大幅減少模型體積與加快推論速度,是部署在邊緣裝置時常見的優化手段。

________________________________________

🧪 PyTorch 靜態量化範例:

python

import torch.quantization

model.eval()

model.qconfig = torch.quantization.get_default_qconfig('fbgemm')

torch.quantization.prepare(model, inplace=True)

torch.quantization.convert(model, inplace=True)

這段程式碼示範了使用 PyTorch 進行 Post-Training Static Quantization(靜態後訓練量化) 的流程:先將模型切換為 eval() 模式,接著設定量化配置為 'fbgemm'(適用於 x86 架構的高效量化後端),透過 prepare() 將模型插入觀測器以收集激活資訊,最後使用 convert() 將模型中的浮點權重與運算轉換為整數(INT8)格式,完成量化,能有效縮小模型體積並加速 CPU 上的推論執行。

________________________________________

✂ 三、剪枝(Pruning):把沒用的連結砍掉!

➤ 什麼是剪枝?

從訓練好的模型中移除「權重接近零」的參數或神經元連結,降低模型複雜度。

________________________________________

✅ 剪枝方式分類:

類型 說明

結構式剪枝(Structured) 移除整個神經元 / filter(對硬體友好)

非結構剪枝(Unstructured) 隨機移除稀疏權重(剪得更多但難部署)

動態剪枝 訓練中定期剪枝,逐步收斂

________________________________________

🧪 PyTorch 剪枝簡單示範:

python

import torch.nn.utils.prune as prune

prune.l1_unstructured(model.fc, name="weight", amount=0.3)

這行程式碼使用 PyTorch 的 torch.nn.utils.prune 模組,對模型的最後全連接層 model.fc 進行 L1 非結構化剪枝(L1 unstructured pruning),其作用是將 fc 層中 權重張量(weight)中 L1 範數最小的 30% 元素設為 0,以減少參數量並提高模型壓縮效果。

________________________________________

🧪 四、壓縮成效比較

·  原始 ResNet18:模型大小 45MB,推論時間 100ms,精度 71.5%

·  INT8 量化版:模型大小 11MB,推論時間 20ms,精度 70.2%(下降 -1.3%

·  剪枝+量化版:模型大小 7.5MB,推論時間 18ms,精度 69.8%(下降 -1.7%

 

✅ 精度略降,但部署效率大幅提升!

________________________________________

🚀 五、搭配部署平台的壓縮策略建議

應用平台 建議策略

📱 行動裝置 優先使用 QAT + 結構剪枝 + TFLite

🤖 邊緣設備 搭配 TensorRT INT8 + Filter 剪枝

🌐 Web API 使用 ONNX + 模型壓縮工具(如 NeuralMagic)

☁ 雲端部署 可允許較大模型,但仍建議剪枝加速推論

________________________________________

📚 六、小結與啟示:

✅ 模型壓縮 ≠ 模型退化,反而讓 AI 更能落地應用

✅ 量化讓模型更小、推論更快,尤其適合低功耗設備

✅ 剪枝能減少運算與記憶體使用量,搭配硬體可顯著加速

✅ 最佳實踐:量化 + 剪枝 + ONNX + TensorRT

________________________________________

💬 1. 若你需要部署模型在 STM32 等微控制器上,你會優先選擇剪枝還是量化?為什麼?

✅ 優先選擇量化。

因為 STM32 等微控制器資源極為有限(如記憶體只有幾百 KB,無浮點硬體加速),而 量化(尤其是 INT8)可將模型從 float32 壓縮為 1/4 大小,且能大幅減少運算與能耗,是實際部署在 MCU 上最直接有效的方法。

🔍 原因:

剪枝(Pruning)產生的是「稀疏矩陣」,但大部分微控制器 不具備稀疏矩陣乘法加速器,反而可能增加存取開銷。

相較之下,量化後模型格式(如 TFLite Micro)原生支援 INT8 運算,配合 CMSIS-NN 等庫可直接加速推理。

________________________________________

💬 2. 為什麼 Post-Training Quantization(PTQ)有時會導致精度下降?有什麼方法改善?

❌ PTQ 精度下降的原因:

無校準資料:PTQ 直接將 float32 → INT8,若缺乏代表性的輸入範例,縮放比例計算不準,導致訊號失真。

量化誤差:部分層(如 attention, batchnorm)對低精度非常敏感,容易影響最終輸出。

整數限制:INT8 無法表現浮點數的動態範圍,對小值與極端值特別不友善。

✅ 改善方式:

靜態量化 + 校準集:收集代表性輸入樣本,利用統計資訊計算每層的最佳量化參數。

Quantization-Aware Training(QAT):在訓練時模擬量化誤差,讓模型自己學會「適應失真」。

混合精度量化:對精度敏感的層保留 FP32,其餘使用 INT8。

________________________________________

💬 3. 剪枝時如何評估剪掉哪些參數才是「不重要的」?

✅ 評估「不重要參數」的方法通常根據 參數的貢獻度或影響力,以下是常見策略:

模型剪枝常見的方法主要依據權重的重要性進行判斷:

L1/L2 Magnitude Pruning 透過權重的絕對值或平方大小排序,將數值較小者視為不重要,是最常見也最直接的做法;敏感度分析則透過模擬移除參數後對模型性能的影響,找出對準確率影響最小的部分進行剪除;梯度導向剪枝(如 SNIP)則根據每個參數對損失函數的貢獻度(如 ∂L/∂w × w)來衡量其重要性;而結構化剪枝以 channel 或 filter 為單位進行剪除,利於實際硬體部署與加速,較適合需要推論效能最佳化的場景。這些方法可依應用需求與平台限制靈活選用。

🎯 **總結關鍵:**不重要 ≠ 值小,而是「移除後不影響模型表現」,需搭配實驗或準確率驗證評估整體剪枝策略。





留言
avatar-img
留言分享你的想法!
avatar-img
Hansen W的沙龍
9會員
274內容數
AIHANS沙龍是一個結合AI技術實戰、產業策略與自我成長的知識平台,主題涵蓋機器學習、生成式AI、創業經驗、財務規劃及哲學思辨。這裡不只提供系統化學習資源與實作案例,更強調理性思維與行動力的結合。無論你是AI初學者、創業者,還是追求人生升維的行者,都能在這裡找到前進的方向與志同道合的夥伴。
Hansen W的沙龍的其他內容
2025/09/22
ONNX 提供跨框架模型可攜性,支援多平台部署;TensorRT 專為 NVIDIA GPU 優化,透過層融合、混合精度加速推論。兩者結合能縮小模型體積、提升速度,適合邊緣與雲端高效應用。
2025/09/22
ONNX 提供跨框架模型可攜性,支援多平台部署;TensorRT 專為 NVIDIA GPU 優化,透過層融合、混合精度加速推論。兩者結合能縮小模型體積、提升速度,適合邊緣與雲端高效應用。
2025/09/22
本單元介紹 AI 模型部署流程與策略,涵蓋 Web API、行動端與邊緣 IoT 平台。重點包括模型壓縮、量化與知識蒸餾提升效能,工具如 TensorFlow Lite、ONNX、Triton、OpenVINO 等,並探討雲端與端上部署優缺點,強調混合式應用與工程化落地關鍵。
2025/09/22
本單元介紹 AI 模型部署流程與策略,涵蓋 Web API、行動端與邊緣 IoT 平台。重點包括模型壓縮、量化與知識蒸餾提升效能,工具如 TensorFlow Lite、ONNX、Triton、OpenVINO 等,並探討雲端與端上部署優缺點,強調混合式應用與工程化落地關鍵。
2025/09/22
本單元總結深度強化學習核心概念,涵蓋 Q-Learning、DQN、探索與利用、Actor-Critic、AlphaGo、MARL 與 Gym 實作,並以 CartPole 平衡木示範 DQN 訓練流程,強調從理論到實踐的完整學習路徑。
2025/09/22
本單元總結深度強化學習核心概念,涵蓋 Q-Learning、DQN、探索與利用、Actor-Critic、AlphaGo、MARL 與 Gym 實作,並以 CartPole 平衡木示範 DQN 訓練流程,強調從理論到實踐的完整學習路徑。
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
數據分析與解讀 隨著數據的爆炸式增長,能夠分析、解讀和應用數據的能力變得至關重要。這包括熟悉數據分析工具和技術,如統計學、數據挖掘、機器學習等。然而,僅靠短時間的數據分析並不足以提供深入見解。 要熟悉數據分析工具和技術,如統計學、數據挖掘和機器學習,可以從以下幾個方面入手: 基礎知識的學習
Thumbnail
數據分析與解讀 隨著數據的爆炸式增長,能夠分析、解讀和應用數據的能力變得至關重要。這包括熟悉數據分析工具和技術,如統計學、數據挖掘、機器學習等。然而,僅靠短時間的數據分析並不足以提供深入見解。 要熟悉數據分析工具和技術,如統計學、數據挖掘和機器學習,可以從以下幾個方面入手: 基礎知識的學習
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News