0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎么使用蒸餾法對(duì)低精度推理出浮點(diǎn)網(wǎng)絡(luò)進(jìn)行高保真的轉(zhuǎn)換?

Dbwd_Imgtec ? 來(lái)源:Imagination Tech ? 作者:Szabolcs Cséfalvay ? 2021-06-19 14:42 ? 次閱讀

神經(jīng)網(wǎng)絡(luò)加速器快速、低功耗推理的一個(gè)主要挑戰(zhàn)是模型的大小。近年來(lái),隨著模型尺寸的增加,推理時(shí)間和每次推理能耗的相應(yīng)增加,神經(jīng)網(wǎng)絡(luò)向更深的神經(jīng)網(wǎng)絡(luò)發(fā)展,激活和系數(shù)也在增加。這在資源受限的移動(dòng)和汽車(chē)應(yīng)用中尤為重要。

低精度推理有助于通過(guò)降低 DRAM 帶寬(這是影響設(shè)備能耗的一個(gè)重要因素)、計(jì)算邏輯成本和功耗來(lái)降低推理成本。在這種情況下,下面的問(wèn)題自然而然地出現(xiàn)了:編碼神經(jīng)網(wǎng)絡(luò)權(quán)重和激活的最佳位深度是多少?有幾個(gè)建議的數(shù)字格式可以減少位深度,包括Nvidia的TensorFloat,谷歌的8位非對(duì)稱(chēng)定點(diǎn)(Q8A)和bfloat16。

但是,雖然這些格式是朝著正確方向邁出的一步,但不能說(shuō)它們是最佳的:例如,大多數(shù)格式都為要表示的每個(gè)值存儲(chǔ)一個(gè)指數(shù),當(dāng)多個(gè)值在同一區(qū)間時(shí),這些指數(shù)可能是多余的。

更重要的是,他們沒(méi)有考慮神經(jīng)網(wǎng)絡(luò)的不同部分通常有不同的位深度要求這一事實(shí)。有些圖層可以用較低的位深度編碼,而其他圖層(如輸入和輸出層)需要更高的位深度。MobileNet v3就是一個(gè)例子,它可以從 32 位浮點(diǎn)轉(zhuǎn)換為大多數(shù)在 5-12 位區(qū)間內(nèi)的位深度(見(jiàn)圖 1)。

我們稱(chēng)使用不同的位深度來(lái)編碼原始浮點(diǎn)網(wǎng)絡(luò)的不同部分為可變位深度 (VBD) 壓縮。當(dāng)然,權(quán)重的位深度編碼和網(wǎng)絡(luò)準(zhǔn)確度也是需要權(quán)衡的。較低的位深度會(huì)導(dǎo)致更有效的推斷,但刪除過(guò)多的信息會(huì)損害準(zhǔn)確性,這意味著需要找到一個(gè)最佳的折中方案。VBD 壓縮的目標(biāo)是在壓縮和精度之間進(jìn)行平衡。

原則上,可以將其視為優(yōu)化問(wèn)題:我們希望用盡可能少的比特?cái)?shù)達(dá)到最佳精度的網(wǎng)絡(luò)。這是通過(guò)在損失函數(shù)中添加新的一項(xiàng)來(lái)實(shí)現(xiàn)的,該項(xiàng)表示網(wǎng)絡(luò)的大小,以便可以沿原始損失函數(shù)最小化,該函數(shù)可以大致表示為:總損失=網(wǎng)絡(luò)錯(cuò)誤+γ(網(wǎng)絡(luò)大?。┢渲笑檬且粋€(gè)權(quán)重因子,用于控制網(wǎng)絡(luò)大小和誤差之間的目標(biāo)權(quán)衡。

因此,要以這種方式壓縮網(wǎng)絡(luò),我們需要兩件事:精度的可微度量(錯(cuò)誤)和網(wǎng)絡(luò)大小的可微度量(壓縮位深度)。網(wǎng)絡(luò)大小項(xiàng)和網(wǎng)絡(luò)誤差項(xiàng)相對(duì)于比特?cái)?shù)的可微性非常重要,因?yàn)樗刮覀兡軌騼?yōu)化(學(xué)習(xí))比特深度。

可微網(wǎng)絡(luò)規(guī)模

對(duì)于可微量化,我們可以使用任何具有可微位深度參數(shù)的函數(shù),該參數(shù)將一個(gè)或多個(gè)浮點(diǎn)值映射為硬件可表示的壓縮數(shù)字格式。例如,我們可以使用 Google Q8A 量化的可變位深度版本(其中可表示范圍不是以零為中心):

d76f1e1a-d02c-11eb-9e57-12bb97331649.png

其中:

?x?是 x 四舍五入到最近的整數(shù)(使用目標(biāo)硬件平臺(tái)的舍入模式)

B 是位深度。

E 是浮點(diǎn)表示的指數(shù)。

α是不對(duì)稱(chēng)參數(shù)。

在實(shí)踐中,量化參數(shù) B、E 和α用于壓縮多個(gè)權(quán)重,例如,單個(gè)參數(shù)用于壓縮整個(gè)神經(jīng)網(wǎng)絡(luò)層(激活或權(quán)重張量)或?qū)觾?nèi)的通道。我們還可以通過(guò)將不對(duì)稱(chēng)參數(shù)設(shè)置為 0 來(lái)使用對(duì)稱(chēng)量化(有效地將其轉(zhuǎn)換為縮放的 B位無(wú)符號(hào)整數(shù)格式):d7900cd8-d02c-11eb-9e57-12bb97331649.png為了實(shí)現(xiàn)對(duì)所有參數(shù)的反向傳播,我們使用直通估計(jì)器,將圓形函數(shù)的梯度作為 1。這使得公式中的所有操作都是可微的,使所有參數(shù)(包括位深度)都可學(xué)習(xí)!此時(shí),我們可以選擇要訓(xùn)練的參數(shù):1. 權(quán)重和最大壓縮位深度。2. 只有權(quán)重和指數(shù)(對(duì)于固定的位深度)。3. 只有量化參數(shù),它有幾個(gè)好處(如下所述),成本可能更低的壓縮比。在生成本文的結(jié)果時(shí)選擇了選項(xiàng) 3。

另一個(gè)需要考慮的方面是優(yōu)化位深度參數(shù) B(對(duì)于某些格式的指數(shù) E):任何硬件都需要 B 是整數(shù)。要找到整數(shù)解,我們有多種選擇:

將四舍五入與直通估計(jì)器一起應(yīng)用于 B 參數(shù)(例如,使用公式)。但是,這給優(yōu)化表面帶來(lái)了不連續(xù)性,雖然可以處理,但超出了本文的范圍。

d79c9da4-d02c-11eb-9e57-12bb97331649.png

這里選擇的替代方案是在訓(xùn)練的第一階段優(yōu)化浮點(diǎn)數(shù)B,“保守”地將其四舍五入到最近的整數(shù)?B?( 否則激活和權(quán)重張量的重要部分可能會(huì)被鉗制),將其固定為常量并繼續(xù)訓(xùn)練。這樣平均會(huì)損失大約 0.5 位的潛在壓縮,但保證不會(huì)發(fā)生不適當(dāng)?shù)牟眉簟?/p>

可微精度測(cè)度

為了測(cè)量網(wǎng)絡(luò)的準(zhǔn)確性,我們可以簡(jiǎn)單地使用網(wǎng)絡(luò)最初訓(xùn)練的相同損失函數(shù)。然而,在許多應(yīng)用中,目標(biāo)是壓縮一個(gè)已經(jīng)用32 位浮點(diǎn)訓(xùn)練的網(wǎng)絡(luò),這意味著我們可以用蒸餾損失代替。這意味著壓縮網(wǎng)絡(luò)的精度是根據(jù)原始網(wǎng)絡(luò)的輸出來(lái)衡量的。在這項(xiàng)工作中,選擇(輸出)logits之間的絕對(duì)差異作為蒸餾損失,但也可以采用其他措施。

使用的蒸餾損失定義為:

d7a9323a-d02c-11eb-9e57-12bb97331649.png

(等式1)

蒸餾損失有許多優(yōu)點(diǎn):

無(wú)標(biāo)簽訓(xùn)練:我們不需要標(biāo)簽數(shù)據(jù)來(lái)壓縮網(wǎng)絡(luò),因?yàn)槲覀冇迷季W(wǎng)絡(luò)的輸出取代了標(biāo)簽。這意味著我們可以壓縮網(wǎng)絡(luò),而無(wú)需訪問(wèn)(可能是專(zhuān)有的)原始數(shù)據(jù)集:我們只需要具有代表性的輸入和原始網(wǎng)絡(luò)。

通用性:神經(jīng)網(wǎng)絡(luò)壓縮機(jī)具有通用性:它不需要特定于網(wǎng)絡(luò)。

更少的訓(xùn)練數(shù)據(jù):由于我們只是訓(xùn)練量化參數(shù),過(guò)度擬合的范圍大大縮小,所以我們可以使用更少的訓(xùn)練數(shù)據(jù)。有時(shí)候一張圖片就足夠了!

軟目標(biāo):由于從輸入得到的蒸餾損失比標(biāo)簽包含更多的量化誤差信息,因此它允許更快、更準(zhǔn)確的收斂。

我們可以使用蒸餾損失將權(quán)重與量化參數(shù)一起訓(xùn)練。然而,在這種情況下,我們需要更多的訓(xùn)練數(shù)據(jù)來(lái)防止過(guò)度擬合。兩全其美的方法是以很小的學(xué)習(xí)率來(lái)訓(xùn)練權(quán)重,并提前停止。這樣,權(quán)重可以抵消量化誤差,而不會(huì)過(guò)度擬合數(shù)據(jù)集。

可微壓縮將通用的、可微的精度度量與可微量化相結(jié)合,得到可微壓縮的損失函數(shù):

d7a9323a-d02c-11eb-9e57-12bb97331649.png

(等式2)第一個(gè)項(xiàng)是誤差,第二項(xiàng)是網(wǎng)絡(luò)大小的成本。B 是網(wǎng)絡(luò)的平均位深度,可根據(jù)整個(gè)網(wǎng)絡(luò)的深度參數(shù)來(lái)計(jì)算:

d7e7c4e6-d02c-11eb-9e57-12bb97331649.png

(等式3)其中c_i是使用位深度參數(shù)B_i量化的網(wǎng)絡(luò)參數(shù)(權(quán)重或激活)的數(shù)量。請(qǐng)注意,此測(cè)量方式取決于批次大小。例如,如果對(duì)32個(gè)批次網(wǎng)絡(luò)進(jìn)行評(píng)估,則激活張量的大小實(shí)際上比使用1 批次大小的高出 32 倍。如果目標(biāo)是將網(wǎng)絡(luò)權(quán)重存儲(chǔ)在盡可能小的空間中,則此指標(biāo)中也可以忽略激活。

選擇量化粒度一些神經(jīng)網(wǎng)絡(luò)表示,如谷歌的Q8A格式,允許將不同的比例系數(shù)(與上面的指數(shù)E的2次冪相關(guān))應(yīng)用于權(quán)重張量(過(guò)濾器)的不同通道。這種更精細(xì)的粒度可提高給定壓縮級(jí)別的網(wǎng)絡(luò)精度。

通過(guò)對(duì)每個(gè)通道應(yīng)用單獨(dú)的 E 和α參數(shù),同時(shí)對(duì)整個(gè)張量使用相同的 B 參數(shù),可以通過(guò)可變位深度壓縮實(shí)現(xiàn)相同的目標(biāo)。然而,每個(gè)通道的量化會(huì)導(dǎo)致更慢的收斂,因此根據(jù)我們的經(jīng)驗(yàn),使用學(xué)習(xí)前張量參數(shù)的訓(xùn)練階段更快,然后將這些參數(shù)分解為每通道參數(shù),并讓它們?cè)诹硪粋€(gè)訓(xùn)練階段收斂。

這最終導(dǎo)致三個(gè)階段的訓(xùn)練計(jì)劃:

根據(jù)張量訓(xùn)練所有量化參數(shù)

切換到每通道指數(shù)和移位參數(shù)

將位深度舍入到整數(shù),并將其固定到常量,然后訓(xùn)練指數(shù)和移位參數(shù)α。此外,權(quán)重也以較小的學(xué)習(xí)率進(jìn)行訓(xùn)練。

結(jié)果對(duì)象分類(lèi)

壓縮分類(lèi)網(wǎng)絡(luò)的精確度。

圖像分割

應(yīng)用于分割網(wǎng)絡(luò)的不同壓縮方法之間的比較。第二個(gè)列基于啟發(fā)式算法,該算法試圖在不使用反向傳播的情況下確定固定位深度的最佳指數(shù)。

風(fēng)格轉(zhuǎn)換

最后一列使用上述啟發(fā)式給出10 比特時(shí)的完全空白輸出。

結(jié)論用于編碼神經(jīng)網(wǎng)絡(luò)權(quán)重和激活的位深度對(duì)推理性能有顯著影響。將大小精度權(quán)衡作為損失函數(shù)的一部分,可以在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中學(xué)習(xí)任意粒度的最佳比特深度。此外,當(dāng)優(yōu)化將 0 位分配給網(wǎng)絡(luò)的一部分時(shí),它會(huì)有效地從架構(gòu)中刪除該部分,作為一種架構(gòu)搜索,從而降低計(jì)算成本和帶寬成本。今后的工作將探索這方面的可微網(wǎng)絡(luò)壓縮。我們提出了一種基于微分量化和蒸餾的通用而靈活的方法,允許在不影響精度的情況下為各種任務(wù)優(yōu)化位數(shù)。我們的方法有幾個(gè)優(yōu)點(diǎn),包括訓(xùn)練時(shí)間短,重復(fù)使用訓(xùn)練過(guò)的網(wǎng)絡(luò),不需要標(biāo)簽,可調(diào)整的大小精度權(quán)衡和問(wèn)題無(wú)關(guān)的損失功能。通過(guò)這種方式,我們可以將網(wǎng)絡(luò)壓縮為有效的可變位深度表示,而不犧牲對(duì)原始浮點(diǎn)網(wǎng)絡(luò)的保真度。

[i] https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-精確格式/

[ii]https://www.tensorflow.org/lite/performance/quantization_spec

[iii]https://arxiv.org/abs/1905.12322

[iv] https://arxiv.org/abs/1308.3432

[v]https://arxiv.org/abs/1503.02531

作者:Szabolcs Cséfalvay

原文鏈接:https://www.imaginationtech.com/blog/low-precision-inference-using-distillation/

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • DRAM
    +關(guān)注

    關(guān)注

    40

    文章

    2284

    瀏覽量

    183011
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6087

    瀏覽量

    104459
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4718

    瀏覽量

    100067
  • 估計(jì)器
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    5525

原文標(biāo)題:使用蒸餾法對(duì)低精度推理的浮點(diǎn)網(wǎng)絡(luò)進(jìn)行高保真轉(zhuǎn)換

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    揭秘使用20位DAC生成超低噪聲、高保真波形的設(shè)計(jì)挑戰(zhàn)

    電子發(fā)燒友網(wǎng)站提供《揭秘使用20位DAC生成超低噪聲、高保真波形的設(shè)計(jì)挑戰(zhàn).pdf》資料免費(fèi)下載
    發(fā)表于 09-11 09:47 ?0次下載
    揭秘使用20位DAC生成超低噪聲、<b class='flag-5'>高保真</b>波形的設(shè)計(jì)挑戰(zhàn)

    LME49743四路高性能、高保真音頻運(yùn)算放大器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《LME49743四路高性能、高保真音頻運(yùn)算放大器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-19 11:00 ?0次下載
    LME49743四路高性能、<b class='flag-5'>高保真</b>音頻運(yùn)算放大器數(shù)據(jù)表

    INA1620高保真音頻運(yùn)算放大器和EMI濾波器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《INA1620高保真音頻運(yùn)算放大器和EMI濾波器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-17 10:39 ?0次下載
    INA1620<b class='flag-5'>高保真</b>音頻運(yùn)算放大器和EMI濾波器數(shù)據(jù)表

    LME49723雙通道高保真音頻運(yùn)算放大器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《LME49723雙通道高保真音頻運(yùn)算放大器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-17 09:54 ?0次下載
    LME49723雙通道<b class='flag-5'>高保真</b>音頻運(yùn)算放大器數(shù)據(jù)表

    LME49600高性能、高保真、大電流緩沖器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《LME49600高性能、高保真、大電流緩沖器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-17 09:18 ?0次下載
    LME49600高性能、<b class='flag-5'>高保真</b>、大電流緩沖器數(shù)據(jù)表

    高保真耳機(jī)放大器TPA6120A2數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《高保真耳機(jī)放大器TPA6120A2數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-19 10:57 ?3次下載
    <b class='flag-5'>高保真</b>耳機(jī)放大器TPA6120A2數(shù)據(jù)表

    毫米波雷達(dá)半精度浮點(diǎn)存儲(chǔ)格式分析

    本文介紹了TC3xx單片機(jī)雷達(dá)信號(hào)處理單元SPU支持的半精度浮點(diǎn)格式,將其和32bit整型數(shù)格式進(jìn)行比較,分析了兩者的動(dòng)態(tài)范圍及實(shí)際處理誤差,發(fā)現(xiàn)半精度
    的頭像 發(fā)表于 02-20 08:26 ?284次閱讀
    毫米波雷達(dá)半<b class='flag-5'>精度</b><b class='flag-5'>浮點(diǎn)</b>存儲(chǔ)格式分析

    便攜式音頻播放器/迷你小音響實(shí)現(xiàn)Hi-Fi高保真音質(zhì)

    便攜式音頻播放器/迷你小音響實(shí)現(xiàn)Hi-Fi高保真音質(zhì)
    的頭像 發(fā)表于 02-04 09:53 ?769次閱讀

    新型光電系統(tǒng)實(shí)現(xiàn)高保真信息傳輸

    擴(kuò)散體帶來(lái)了巨大的挑戰(zhàn),限制了自由空間中光學(xué)數(shù)據(jù)的高保真傳輸。自適應(yīng)光學(xué)提出了一種潛在的解決方案,可以動(dòng)態(tài)地校正隨機(jī)失真,但采用的空間光調(diào)制器和迭代反饋算法不可避免地增加了成本和復(fù)雜性。 加州大學(xué)洛杉磯分校(
    的頭像 發(fā)表于 01-26 06:33 ?277次閱讀
    新型光電系統(tǒng)實(shí)現(xiàn)<b class='flag-5'>高保真</b>信息傳輸

    精度和雙精度浮點(diǎn)數(shù)的區(qū)別

    精度和雙精度是計(jì)算機(jī)中表示浮點(diǎn)數(shù)的兩種不同的精度。在計(jì)算機(jī)中,浮點(diǎn)數(shù)用來(lái)表示帶有小數(shù)部分的實(shí)數(shù),而單
    的頭像 發(fā)表于 12-15 10:25 ?4317次閱讀

    HarmonyOS:使用MindSpore Lite引擎進(jìn)行模型推理

    使用 MindSpore Lite 推理引擎進(jìn)行模型推理的通用開(kāi)發(fā)流程。 基本概念 在進(jìn)行開(kāi)發(fā)前,請(qǐng)先了解以下概念。 張量 :它與數(shù)組和矩陣非常相似,是 MindSpore Lite
    發(fā)表于 12-14 11:41

    精度和雙精度浮點(diǎn)數(shù)的區(qū)別

    在計(jì)算機(jī)科學(xué)和數(shù)值計(jì)算中,浮點(diǎn)數(shù)是一種用于表示實(shí)數(shù)的數(shù)據(jù)類(lèi)型。浮點(diǎn)數(shù)有兩種精度級(jí)別:?jiǎn)?b class='flag-5'>精度和雙精度。這兩種
    的頭像 發(fā)表于 12-13 10:55 ?6098次閱讀

    全互補(bǔ)對(duì)稱(chēng)高保真甲乙類(lèi)功放制作(2)

    全互補(bǔ)對(duì)稱(chēng)高保真甲乙類(lèi)功放制作.
    發(fā)表于 10-25 15:08 ?3次下載

    全互補(bǔ)對(duì)稱(chēng)高保真甲乙類(lèi)功放制作(1)

    全互補(bǔ)對(duì)稱(chēng)高保真甲乙類(lèi)功放制作.
    發(fā)表于 10-25 15:06 ?8次下載

    TPU-MLIR量化敏感層分析,提升模型推理精度

    背景介紹TPU-MLIR編譯器可以將機(jī)器學(xué)習(xí)模型轉(zhuǎn)換成算能芯片上運(yùn)行的bmodel模型。由于浮點(diǎn)數(shù)的計(jì)算需要消耗更多的計(jì)算資源和存儲(chǔ)空間,實(shí)際應(yīng)用中往往采用量化后的模型(也稱(chēng)定點(diǎn)模型)進(jìn)行推理
    的頭像 發(fā)表于 10-10 10:17 ?1123次閱讀
    TPU-MLIR量化敏感層分析,提升模型<b class='flag-5'>推理</b><b class='flag-5'>精度</b>