偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

提高深度學(xué)習(xí)模型效率的三種模型壓縮方法

譯文 精選
人工智能
模型壓縮是深度學(xué)習(xí)模型實時部署的關(guān)鍵組成部分,本文探討了提高深度學(xué)習(xí)模型效率的不同方法。

譯者 | 李睿

審校 | 重樓

近年來,深度學(xué)習(xí)模型在自然語言處理(NLP)和計算機視覺基準測試中的性能穩(wěn)步提高。雖然這些收益的一部分來自架構(gòu)和學(xué)習(xí)算法的改進,但數(shù)據(jù)集大小和模型參數(shù)的增長是重要的驅(qū)動因素。

下圖顯示了top-1 ImageNet分類精度作為GFLOPS的函數(shù),GFLOPS可以用作模型復(fù)雜性的指標。

擴大數(shù)據(jù)規(guī)模和模型復(fù)雜性增加似乎是主要趨勢,擁有數(shù)十億個甚至萬億個參數(shù)的模型并不罕見。雖然這些大型模型具有令人印象深刻的性能,但這些模型的龐大規(guī)模使得它不可能用于邊緣設(shè)備或延遲關(guān)鍵的應(yīng)用程序。

這正是模型壓縮發(fā)揮作用的地方。模型壓縮的目標是減少模型的參數(shù)數(shù)量和/或延遲,同時力求將對模型性能的負面影響降至最低。雖然有一些方法,但它們可以分為三大類:

  • 剪枝(Pruning)
  • 量化(Quantization)
  • 知識蒸餾(KD)

雖然還有其他方法(例如低秩張量分解),但本文不涵蓋這些方法。以下詳細討論這三種主要技術(shù)。

剪枝

通過剪枝,可以從神經(jīng)網(wǎng)絡(luò)中移除不太重要的權(quán)重(神經(jīng)元連接)或?qū)?,從而使模型變得更小。一個簡單的策略是,如果某個神經(jīng)元連接的權(quán)重低于某個閾值,則將其移除。這被稱為權(quán)重剪枝,它確保移除的是冗余的連接或者是對最終結(jié)果影響不大的連接。

同樣,可以根據(jù)神經(jīng)元重要性的一些指標來移除神經(jīng)元本身,例如輸出權(quán)重的L2范數(shù)。這被稱為神經(jīng)元剪枝,通常比權(quán)重剪枝更有效。

與節(jié)點剪枝相比,權(quán)值剪枝會導(dǎo)致稀疏網(wǎng)絡(luò),這在GPU等硬件上很難優(yōu)化。雖然它會減少內(nèi)存占用和FLOPS,但可能不會降低延遲。剪枝的思想也可以擴展到卷積神經(jīng)網(wǎng)絡(luò)(CNN),其中過濾器/內(nèi)核的相對重要性可以根據(jù)其L1/L2范數(shù)來確定,并且只能保留重要的過濾器。在實踐中,剪枝是一個迭代過程,將在剪枝和微調(diào)模型之間交替進行。

使用這種方法,可以在性能下降最小的情況下,將網(wǎng)絡(luò)參數(shù)減少50%以上,如下圖所示:

量化

基于量化的模型壓縮背后的主要思想是降低模型權(quán)重的精度,以減少內(nèi)存和延遲。通常情況下,深度學(xué)習(xí)模型在訓(xùn)練期間或訓(xùn)練后將其權(quán)重存儲為32位浮點數(shù)(FP32)。通過量化,這些權(quán)重通常被轉(zhuǎn)換為16位(FP16)或8位(INT8)精度,以便在運行時部署。

量化可以分為兩類:

訓(xùn)練后量化(PTQ)

這涉及到訓(xùn)練后權(quán)重和激活的量化,并通過一個稱為校準的過程來實現(xiàn)。該過程的目標是在最小化信息損失的同時,找出從原始到目標精度的映射。為了實現(xiàn)這一點,使用數(shù)據(jù)集中的一組樣本,并在模型上運行推理,跟蹤模型中不同激活的動態(tài)范圍,以確定映射函數(shù)。

量化感知訓(xùn)練(QAT)

使用較低精度權(quán)重和激活進行訓(xùn)練的主要問題是沒有正確定義梯度,因此無法進行反向傳播。為了使用QAT解決這個問題,該模型模擬了前向傳播過程中的目標精度,但使用后向傳播的原始精度來計算梯度。

雖然PTQ易于實施并且無需重新訓(xùn)練模型,但它可能會導(dǎo)致性能下降。另一方面,QAT與PTQ相比通常具有更高的準確性,但其實施起來不那么容易,并且會增加訓(xùn)練代碼的復(fù)雜性。

從數(shù)學(xué)的角度來看,給定權(quán)重/激活的量化和校準涉及確定兩個值:比例因子和零點。假設(shè)想要將FP32轉(zhuǎn)換為INT8:

Python 
1 # max_int for INT8 would be 255 and min_int 0
2 # max_float, min_float are deteremined in the calibration process
3 scale = (max_float - min_float) / (max_int - min_int)
4
5 # to allow for both positive and negative values to be quantized
6 zero_point = round((0 - min_float) / scale)
7
8 int8_value = round(fp32_value / scale) + zero_point

知識蒸餾(KD)

顧名思義,知識蒸餾(KD)試圖將原始模型(在這種情況下稱為教師模型)中的知識提煉或轉(zhuǎn)移到一個較小的模型(可以稱之為學(xué)生模型)中。實現(xiàn)這一目標的方法有多種,但最常見的方法是嘗試使教師模型的輸出或中間特征表示與學(xué)生模型相匹配。有趣的是,使用真實標簽和教師模型輸出的軟標簽組合訓(xùn)練的學(xué)生模型,其性能優(yōu)于僅使用真實標簽訓(xùn)練的學(xué)生模型,有時甚至能達到教師模型的性能。對于這種行為的一種假設(shè)是,由于軟標簽包含比真實標簽(硬標簽,例如zero-shot)更多的信息,它有助于學(xué)生模型更好地泛化。

知識蒸餾是一種更靈活的模型壓縮技術(shù),因為生成的模型可以具有與原始模型不同的架構(gòu),并且與剪枝或量化相比,具有更大的內(nèi)存和延遲減少潛力。然而,它也是訓(xùn)練最復(fù)雜的技術(shù),因為它涉及訓(xùn)練教師模型,然后設(shè)計和訓(xùn)練學(xué)生模型。

結(jié)論

在實踐中,通常將多種壓縮技術(shù)結(jié)合在一起(例如,知識蒸餾之后PTQ或剪枝)來實現(xiàn)所需的壓縮和準確性結(jié)果。
原文標題:Model Compression: Improving Efficiency of Deep Learning Models,作者:Inderjot Singh Saggu

責(zé)任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2023-11-19 23:36:50

2016-12-06 09:06:08

深度學(xué)習(xí)算法性能

2023-04-10 11:22:34

CIOIT運營成本

2013-05-07 09:39:14

軟件定義網(wǎng)絡(luò)SDNOpenFlow

2016-06-12 10:37:32

云計算私有云公有云

2020-09-23 10:20:02

深度學(xué)習(xí)GPU人工智能

2015-07-01 09:17:29

數(shù)據(jù)中心數(shù)據(jù)中心模型

2025-02-17 13:09:59

深度學(xué)習(xí)模型壓縮量化

2023-08-04 10:35:48

物聯(lián)網(wǎng)安全

2023-05-09 11:13:09

IO模型語言

2022-02-16 07:00:00

機器學(xué)習(xí)特征選擇過濾法

2022-04-18 16:13:44

物聯(lián)網(wǎng)可靠性物聯(lián)網(wǎng)IOT

2022-09-14 10:19:39

物聯(lián)網(wǎng)LOT

2020-06-23 09:52:31

運營效率首席信息官IT預(yù)算

2021-11-11 11:24:54

JavaScript模型事件

2025-03-19 10:22:09

JavaScript編程語言開發(fā)

2020-03-20 11:49:20

Linux命令技巧

2024-09-11 14:57:00

Redis消費線程模型

2025-02-24 08:00:28

2009-07-08 12:56:32

編寫Servlet
點贊
收藏

51CTO技術(shù)棧公眾號