一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

TPU-MLIR之量化感知訓(xùn)練

jf_pJlTbmA9 ? 來(lái)源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-08-21 10:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Hello大家好,在之前的視頻中我們的講解主要集中在訓(xùn)練后量化,也就是PTQ,那么這期視頻我們就再來(lái)講一下另一種主要的量化類(lèi)型,量化感知訓(xùn)練,我們暫且不會(huì)涉及到QAT在TPU-MLIR中的應(yīng)用,只是先停留在理論層面進(jìn)行一個(gè)介紹。

我們?cè)趯W(xué)習(xí)PTQ的時(shí)候知道了量化其實(shí)就是一個(gè)尋找合適的量化參數(shù),將高位數(shù)據(jù)流映射為低位數(shù)據(jù)流的過(guò)程,實(shí)現(xiàn)模型輕量化并且提高推理效率,但在這個(gè)過(guò)程中模型的精度不可避免地會(huì)下降。

wKgaomTeygOAOMSWAAIpcf5KceA393.jpg

造成精度下降的原因有很多,其中主要有:

量化誤差的引入,就像右邊這張信號(hào)圖所示,我們?cè)诹炕瘯r(shí)做的取整操作其實(shí)就是用有限的離散取值去近似無(wú)限的連續(xù)取值,會(huì)不可避免的導(dǎo)致量化后的信號(hào)與量化前的信號(hào)有一定的偏差,當(dāng)這種偏差越大時(shí)量化誤差往往也就越大。

而且Weight 與activation tensor用INT8來(lái)表示則不可避免地也會(huì)出現(xiàn)一定的信息損失,例如我們之前提到的截?cái)嗾`差,并且模型在進(jìn)行Multiply-Accumulate操作中會(huì)采用INT32來(lái)接收累加的結(jié)果,然后將累加的結(jié)果再轉(zhuǎn)換回INT8,這個(gè)過(guò)程可能也會(huì)導(dǎo)致一定的截?cái)嗾`差。上一期視頻中我們介紹的校準(zhǔn)方法只能在截?cái)嗾`差與量化誤差之間做一個(gè)權(quán)衡,而不能完全消除它們。

還有就是我們量化推導(dǎo)那期視頻中提到過(guò)的用Multiplier與rShift代替Scale的表示也會(huì)產(chǎn)生些許誤差

wKgaomTeygWATqy0AAMmYISJkLs868.jpg

QAT就是通過(guò)end-to-end training微調(diào)訓(xùn)練后的模型參數(shù),讓模型對(duì)量化的魯棒性更強(qiáng),從而緩和造成的精度下降問(wèn)題,而且通過(guò)QAT,我們也能夠達(dá)成更低位,例如INT4的量化,從而進(jìn)一步輕量化模型與提高推理效率

實(shí)現(xiàn)方式就是在訓(xùn)練過(guò)程中進(jìn)行模擬量化,或者說(shuō)是插入FakeQuant偽量化算子,對(duì)weight與activation tensor進(jìn)行量化,然后再做反量化引入量化誤差進(jìn)行訓(xùn)練,所以在fine-tune的過(guò)程中模型還是以FP32精度進(jìn)行運(yùn)算的,并不是像推理過(guò)程中的低位運(yùn)算。之后我們通過(guò)反向傳播與梯度下降的方式微調(diào)模型權(quán)重。

對(duì)于量化參數(shù)的確定,weight tensor的量化參數(shù)通常采用絕對(duì)最大值除以127的方式確定,而activation tensor量化參數(shù)則根據(jù)QAT算法的不同可能也有所不同。早期的QAT算法采用滑動(dòng)平均的方式在訓(xùn)練過(guò)程中對(duì)量化取值范圍進(jìn)行統(tǒng)計(jì)更新,而近些年來(lái)主流的QAT算法直接將量化參數(shù)定位可學(xué)習(xí)參數(shù)在反向傳播過(guò)程中通過(guò)梯度下降進(jìn)行更新。

這樣的做法在實(shí)際實(shí)現(xiàn)過(guò)程中我們主要會(huì)遇到一個(gè)問(wèn)題,就是偽量化算子中的round函數(shù)梯度要怎么計(jì)算,我們既然在原模型插入了偽量化算子,又要對(duì)模型進(jìn)行重新訓(xùn)練,就不得不考慮反向傳播時(shí)怎么計(jì)算它的梯度。

首先我們之前有看過(guò)量化后的信號(hào)波形圖其實(shí)是一個(gè)離散的階梯函數(shù),這樣的函數(shù)是不可導(dǎo)的,或者說(shuō)它們的梯度是處處為0的,這就導(dǎo)致權(quán)重?zé)o法得到更新。所以我們需要想辦法去對(duì)它做近似操作。

一種傳統(tǒng)的方式是用Straight-Through Estimator在反向傳播過(guò)程中讓偽量化算子輸入的梯度等于輸出的梯度,或者說(shuō)使他梯度為1。

由這種方法延伸出了一系列的QAT算法,例如DoReFaNet,這個(gè)算法將activation和weight都?jí)嚎s在0,1之間進(jìn)行量化,后面會(huì)繼續(xù)講解基于STE的QAT算法,敬請(qǐng)期待。
審核編輯:彭菁

聲明:本文內(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)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4380

    瀏覽量

    64850
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3519

    瀏覽量

    50414
  • 數(shù)據(jù)流
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    14882
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    yolov5量化INT8出錯(cuò)怎么處理?

    [Success]: tpuc-opt yolov5l_bm1684_int8_sym_tpu.mlir --mlir-disable-threading --strip-io-quant=\"
    發(fā)表于 01-10 06:40

    TPU-MLIR開(kāi)發(fā)環(huán)境配置時(shí)出現(xiàn)的各種問(wèn)題求解

    按照 TPU-MLIR 開(kāi)發(fā)指南進(jìn)行環(huán)境配置: 2.1. 代碼下載? 代碼路徑: https://github.com/sophgo/tpu-mlir 克隆該代碼后, 需要在Docker中編譯
    發(fā)表于 01-10 08:02

    【算能RADXA微服務(wù)器試用體驗(yàn)】+ GPT語(yǔ)音與視覺(jué)交互:2,圖像識(shí)別

    BModel混合精度量化 ├── yolov8s_qtable_fp32 # TPU-MLIR編譯時(shí),用于BM1684的INT8 BModel混合精度量化
    發(fā)表于 07-14 23:36

    YOLOv6中的用Channel-wise Distillation進(jìn)行的量化感知訓(xùn)練

    1、YOLOv6中的用Channel-wise Distillation進(jìn)行的量化感知訓(xùn)練來(lái)自哪里  知識(shí)蒸餾 (KD)已被證明是一種用于訓(xùn)練緊湊密集預(yù)測(cè)模型的簡(jiǎn)單有效的工具。輕量級(jí)學(xué)
    發(fā)表于 10-09 16:25

    在“model_transform.py”添加參數(shù)“--resize_dims 640,640”是否表示tpu會(huì)自動(dòng)resize的?

    resize和letterbox的處理,在“TPU-MLIR入門(mén)快速指南.pdf”里的“使用TPU做前處理”里提到了“圖像裁剪”,沒(méi)看明白,能詳細(xì)解釋下的嗎?
    發(fā)表于 09-18 07:56

    Pytorch量化感知訓(xùn)練的詳解

    量化感知訓(xùn)練(Quantization Aware Training )是在模型中插入偽量化模塊(fake\_quant module)模擬量化
    的頭像 發(fā)表于 12-08 22:57 ?2876次閱讀

    適配PyTorch FX讓量化感知訓(xùn)練更簡(jiǎn)單

    近年來(lái),量化感知訓(xùn)練是一個(gè)較為熱點(diǎn)的問(wèn)題,可以大大優(yōu)化量化訓(xùn)練造成精度損失的問(wèn)題,使得訓(xùn)練過(guò)程
    的頭像 發(fā)表于 03-08 09:45 ?1554次閱讀

    如何給TPU-MLIR添加新的算子

    如何給TPU-MLIR添加新的算子
    的頭像 發(fā)表于 08-18 11:29 ?1058次閱讀
    如何給<b class='flag-5'>TPU-MLIR</b>添加新的算子

    TPU-MLIR中的融合處理

    TPU-MLIR中的融合處理
    的頭像 發(fā)表于 08-18 11:29 ?748次閱讀
    <b class='flag-5'>TPU-MLIR</b>中的融合處理

    如何使用TPU-MLIR進(jìn)行模型轉(zhuǎn)換

    TPU-MLIR精度驗(yàn)證
    的頭像 發(fā)表于 08-21 10:41 ?1131次閱讀
    如何使用<b class='flag-5'>TPU-MLIR</b>進(jìn)行模型轉(zhuǎn)換

    基于STE的QAT算法

    TPU-MLIR量化感知訓(xùn)練(下)
    的頭像 發(fā)表于 08-21 10:46 ?942次閱讀
    基于STE的QAT算法

    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 ?2028次閱讀
    <b class='flag-5'>TPU-MLIR</b><b class='flag-5'>量化</b>敏感層分析,提升模型推理精度

    如何適配新架構(gòu)?TPU-MLIR代碼生成CodeGen全解析!

    背景介紹TPU-MLIR的CodeGen是BModel生成的最后一步,該過(guò)程目的是將MLIR文件轉(zhuǎn)換成最終的Bmodel。本文介紹了CodeGen的基本原理和流程,并記錄了針對(duì)BM1684X等新架構(gòu)
    的頭像 發(fā)表于 11-02 08:34 ?2265次閱讀
    如何適配新架構(gòu)?<b class='flag-5'>TPU-MLIR</b>代碼生成CodeGen全解析!

    深入學(xué)習(xí)和掌握TPU硬件架構(gòu)有困難?TDB助力你快速上手!

    TDB介紹TDB(TPUDeBugger)是針對(duì)TPU-MLIR編譯出來(lái)的BModel設(shè)計(jì)的一系列調(diào)試工具集合,可以支持對(duì)BModel反匯編、結(jié)構(gòu)可視化、單步執(zhí)行仿真等功能,使用方法靈活。能夠
    的頭像 發(fā)表于 12-22 08:33 ?1314次閱讀
    深入學(xué)習(xí)和掌握<b class='flag-5'>TPU</b>硬件架構(gòu)有困難?TDB助力你快速上手!

    如何高效處理LMEM中的數(shù)據(jù)?這篇文章帶你學(xué)會(huì)!

    WeightReorder是TPU-MLIR的一個(gè)pass(參考TPU-MLIR編譯流程圖),其完成了對(duì)部分常量數(shù)據(jù)的Layout變化和合并。本文介紹其中ConvlotionKernel
    的頭像 發(fā)表于 01-19 08:33 ?1225次閱讀
    如何高效處理LMEM中的數(shù)據(jù)?這篇文章帶你學(xué)會(huì)!