最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MegEngine 使用小技巧:量化

2023-04-25 17:40 作者:曠視天元MegEngine  | 我要投稿

常見神經(jīng)網(wǎng)絡(luò)模型所用的 Tensor 數(shù)據(jù)類型 一般是 float32 類型, 而工業(yè)界出于對特定場景的需求(極少的計算資源,極致的推理速度),需要把模型的權(quán)重和或激活值轉(zhuǎn)換為位數(shù)更少的數(shù)值類型(比 int8, float16) —— 整個過程被稱為量化(Quantization)。

通常以浮點模型為起點,經(jīng)過中間的量化處理后最終變成量化模型,在這個過程中一般會導(dǎo)致模型掉點。

目前業(yè)界緩解模型掉點的問題的技術(shù)主要有兩種,在 MegEngine 中都進行了支持:

  • 訓練后量化(Post-Training Quantization, PTQ);

  • 量化感知訓練(Quantization-Aware Training, QAT)。

更多量化基本流程:量化基本流程介紹 https://www.megengine.org.cn/doc/stable/zh/user-guide/model-development/quantization/index.html#quantization-intro

整體流程

以量化感知訓練為例,一般以一個訓練完畢的浮點模型為起點,稱為 Float 模型。 包含假量化算子的用浮點操作來模擬量化過程的新模型,我們稱之為 Quantized-Float 模型,或者 QFloat 模型。 可以直接在終端設(shè)備上運行的模型,稱之為 Quantized 模型,簡稱 Q 模型。

而三者的精度一般是 Float > QFloat > Q ,故而一般量化算法也就分為兩步:

  • 拉近 QFloat 和 Q,這樣訓練階段的精度可以作為最終 Q 精度的代理指標,這一階段偏工程;

  • 拔高 QFloat 逼近 Float,這樣就可以將量化模型性能盡可能恢復(fù)到 Float 的精度,這一階段偏算法。

典型的三種模型在三個階段的精度變化如下:

對應(yīng)到具體的 MegEngine 接口中,三階段如下:

  1. 基于 Module 搭建網(wǎng)絡(luò)模型,并按照正常的浮點模型方式進行訓練;

  2. 使用 quantize_qat 將浮點模型轉(zhuǎn)換為 QFloat 模型, 其中可被量化的關(guān)鍵 Module 會被轉(zhuǎn)換為 QATModule , 并基于量化配置 QConfig 設(shè)置好假量化算子和數(shù)值統(tǒng)計方式;

  3. 使用 quantize 將 QFloat 模型轉(zhuǎn)換為 Q 模型, 對應(yīng)的 QATModule 則會被轉(zhuǎn)換為 QuantizedModule , 此時網(wǎng)絡(luò)無法再進行訓練,網(wǎng)絡(luò)中的算子都會轉(zhuǎn)換為低比特計算方式,即可用于部署了。

此處為標準量化流程,實際使用時也可有靈活的變化。

ResNet 實例講解
下面我們以 ResNet18 為例來講解量化的完整流程。主要分為以下幾步:

  1. 修改網(wǎng)絡(luò)結(jié)構(gòu),使用已經(jīng)融合好的 ConvBn2d、ConvBnRelu2d、ElementWise 代替原先的 Module. 在正常模式下預(yù)訓練模型,并在每輪迭代保存網(wǎng)絡(luò)檢查點;

  2. 調(diào)用 quantize_qat 轉(zhuǎn)換模型,并進行量化感知訓練微調(diào)(或校準,取決于 QConfig);

  3. 調(diào)用 quantize 轉(zhuǎn)換為量化模型,導(dǎo)出模型用于后續(xù)模型部署。

詳細操作指南文檔見:ResNet 實例講解:https://www.megengine.org.cn/doc/stable/zh/user-guide/model-development/quantization/index.html#resnet:~:text=%E8%BF%9B%E8%A1%8C%E5%8A%A0%E8%BD%BD%E3%80%82-,ResNet%20%E5%AE%9E%E4%BE%8B%E8%AE%B2%E8%A7%A3,-%C2%B6

附:

「MegEngine 使用小技巧」系列文章,重點輸出 MegEngine 及周邊工具的使用技巧,如有催更或投稿,歡迎聯(lián)系我們哦~

技術(shù)交流 QQ 群:1029741705;Bot 微信:megengine-bot

更多 MegEngine 信息獲取,您可以:查看文檔https://www.megengine.org.cn/doc/stable/zh/

GitHub 項目: https://github.com/MegEngine

歡迎參與 MegEngine 社區(qū)貢獻,成為 Awesome MegEngineer:https://www.megengine.org.cn/community-AMGE,榮譽證書、定制禮品享不停。 作者:曠視天元MegEngine https://www.bilibili.com/read/cv23032882 出處:bilibili


MegEngine 使用小技巧:量化的評論 (共 條)

分享到微博請遵守國家法律
丹江口市| 金昌市| 海安县| 肥乡县| 剑河县| 佛山市| 新竹市| 资阳市| 湘西| 永和县| 平邑县| 辰溪县| 永兴县| 平塘县| 托克托县| 彰化县| 房产| 自治县| 民乐县| 新巴尔虎左旗| 鄂伦春自治旗| 苏尼特右旗| 阳信县| 共和县| 章丘市| 观塘区| 新绛县| 拉萨市| 吴江市| 同德县| 拉萨市| 长垣县| 饶阳县| 渑池县| 翁牛特旗| 灵石县| 河南省| 南城县| 新兴县| 富阳市| 中阳县|