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

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

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

深度學(xué)習(xí)模型量化方法

OpenCV學(xué)堂 ? 來(lái)源:OpenCV學(xué)堂 ? 2024-07-15 11:01 ? 次閱讀

深度學(xué)習(xí)模型量化概述

深度學(xué)習(xí)模型量化是一種重要的模型輕量化技術(shù),旨在通過(guò)減少網(wǎng)絡(luò)參數(shù)的比特寬度來(lái)減小模型大小和加速推理過(guò)程,同時(shí)盡量保持模型性能。從而達(dá)到把模型部署到邊緣或者低算力設(shè)備上,實(shí)現(xiàn)降本增效的目標(biāo)。

01定義

模型量化是指將神經(jīng)網(wǎng)絡(luò)的浮點(diǎn)算法轉(zhuǎn)換為定點(diǎn)算法,通常涉及將浮點(diǎn)數(shù)參數(shù)轉(zhuǎn)換為低位數(shù)的整數(shù),例如從32位浮點(diǎn)數(shù)(FP32)到8位整數(shù)(INT8)。這一技術(shù)通過(guò)減少模型中參數(shù)的位數(shù)來(lái)降低模型的存儲(chǔ)需求和計(jì)算復(fù)雜性。

02主要類型

靜態(tài)量化:

在模型訓(xùn)練后進(jìn)行,不涉及重新訓(xùn)練。它通常用于不需要細(xì)粒度調(diào)優(yōu)的場(chǎng)景。

動(dòng)態(tài)量化:

在模型推理時(shí)進(jìn)行,對(duì)權(quán)重進(jìn)行量化,但保留中間激活的浮點(diǎn)數(shù)表示。它適用于那些需要保持較高推理精度的應(yīng)用。

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

QAT - Quantization Aware Training, 在訓(xùn)練過(guò)程中將量化考慮在內(nèi),通過(guò)模擬低精度的效果來(lái)訓(xùn)練模型。這種方法可以最大限度地減少量化對(duì)模型精度的影響。

03量化方法

均勻量化:

所有權(quán)重與激活值被量化到均勻間隔的離散值上。這簡(jiǎn)化了量化的實(shí)現(xiàn),是一種普遍使用的量化方法。

非均勻量化:

考量到分布的不均勻性,通過(guò)對(duì)數(shù)或其他方式量化,目的是最小化量化前后的信號(hào)失真。

對(duì)稱與非對(duì)稱量化:

對(duì)稱量化在正負(fù)數(shù)值上使用相同的量化間隔,非對(duì)稱量化則允許正負(fù)數(shù)值有不同的量化間隔。

常用量化框架

當(dāng)前工業(yè)界常用的主流量化工具與框架主要有以下三種!

01PyTorch(torch.quantization)

支持訓(xùn)練后量化。PyTorch的量化支持主要包括三種方式:訓(xùn)練后動(dòng)態(tài)量化(Post Training Dynamic Quantization)、訓(xùn)練后靜態(tài)量化(Post Training Static Quantization)以及量化感知訓(xùn)練(Quantization Aware Training, QAT)。

訓(xùn)練后量化

1. 訓(xùn)練后動(dòng)態(tài)量化

概述:訓(xùn)練后動(dòng)態(tài)量化是指在模型訓(xùn)練完成后,僅對(duì)模型的權(quán)重進(jìn)行量化,而激活(activations)在推理過(guò)程中進(jìn)行量化。這種方式適用于那些對(duì)精度要求不是特別高,但需要快速部署的場(chǎng)景。

特點(diǎn):

簡(jiǎn)單易用:不需要重新訓(xùn)練模型,只需要對(duì)訓(xùn)練好的模型進(jìn)行量化。 性能提升:與浮點(diǎn)數(shù)模型相比,量化后的模型在推理速度上會(huì)有顯著提升,同時(shí)模型大小也會(huì)減小。 示例代碼:

import torch 
from torch import nn 
from torch.quantization import quantize_dynamic 




class DemoModel(nn.Module): 
    def __init__(self): 
        super(DemoModel, self).__init__() 
        self.conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=1) 
        self.relu = nn.ReLU() 
        self.fc = nn.Linear(2, 2) 


    def forward(self, x): 
        x = self.conv(x) 
        x = self.relu(x) 
        x = self.fc(x) 
        return x 


model_fp32 = DemoModel() 
model_int8 = quantize_dynamic( 
    model=model_fp32, 
    qconfig_spec={nn.Linear},  # 僅對(duì)Linear層進(jìn)行量化 
    dtype=torch.qint8 
)

2. 訓(xùn)練后靜態(tài)量化

概述:訓(xùn)練后靜態(tài)量化是指對(duì)模型訓(xùn)練完成后,不僅對(duì)權(quán)重進(jìn)行量化,還對(duì)激活進(jìn)行量化。這種方式需要收集一些代表性的數(shù)據(jù)來(lái)標(biāo)定(calibrate)量化參數(shù),以確保量化后的模型精度盡可能接近原始模型。由于同時(shí)量化了權(quán)重和激活,因此量化后的模型精度通常比動(dòng)態(tài)量化更高。需要收集代表性的數(shù)據(jù)來(lái)標(biāo)定量化參數(shù)。

示例流程:

1. 準(zhǔn)備標(biāo)定數(shù)據(jù)集。

2. 加載并準(zhǔn)備模型(設(shè)置eval模式,并附加量化配置)。

3. 使用標(biāo)定數(shù)據(jù)集對(duì)模型進(jìn)行標(biāo)定,以收集權(quán)重和激活的分布信息。

4. 將標(biāo)定后的模型轉(zhuǎn)換為量化模型。

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

雖然QAT不屬于訓(xùn)練后量化的范疇,但它是另一種重要的量化方式,值得提及。QAT是在模型訓(xùn)練過(guò)程中插入偽量化模塊,模擬量化效應(yīng),從而提高模型對(duì)量化操作的適應(yīng)能力。這種方式可以在一定程度上彌補(bǔ)靜態(tài)量化在精度上的損失。

02OpenVINO NCCF

OpenVINO NCCF(Neural Network Compression Framework)量化框架是OpenVINO工具套件中的一個(gè)重要組成部分,旨在幫助開發(fā)者通過(guò)量化技術(shù)優(yōu)化深度學(xué)習(xí)模型的性能。OpenVINO NCCF是一個(gè)用于深度學(xué)習(xí)模型壓縮的框架,它提供了多種壓縮算法,包括量化、剪枝、蒸餾等,以幫助開發(fā)者減小模型大小、提高推理速度和降低功耗。量化作為其中的一種重要技術(shù),通過(guò)將模型中的浮點(diǎn)數(shù)參數(shù)轉(zhuǎn)換為整數(shù),實(shí)現(xiàn)了模型的壓縮和加速。

OpenVINO NCCF量化流程

OpenVINO NCCF量化流程通常包括以下幾個(gè)步驟:

模型準(zhǔn)備:

首先,需要有一個(gè)訓(xùn)練好的深度學(xué)習(xí)模型,該模型可以是PyTorch、TensorFlow等框架下的模型。

模型轉(zhuǎn)換:

將訓(xùn)練好的模型轉(zhuǎn)換為OpenVINO的中間表示(IR)格式。這一步是可選的,但轉(zhuǎn)換為IR格式可以更好地利用OpenVINO的優(yōu)化功能。

量化配置:

配置量化參數(shù),包括量化精度(如INT8、FP16等)、量化策略(如對(duì)稱量化、非對(duì)稱量化等)以及量化目標(biāo)設(shè)備(如CPU、GPU等)。

量化執(zhí)行:

使用OpenVINO NCCF提供的量化工具或API對(duì)模型進(jìn)行量化。這一步通常包括前向傳播以收集統(tǒng)計(jì)信息、計(jì)算量化參數(shù)以及應(yīng)用量化參數(shù)到模型權(quán)重和激活中。

模型評(píng)估:

對(duì)量化后的模型進(jìn)行評(píng)估,以驗(yàn)證量化對(duì)模型精度的影響。如果精度損失在可接受范圍內(nèi),則可以繼續(xù)使用量化后的模型;否則,需要調(diào)整量化參數(shù)并重新執(zhí)行量化。

模型部署:

將量化后的模型部署到目標(biāo)設(shè)備上,進(jìn)行實(shí)際的推理任務(wù)。

OpenVINO NCCF量化優(yōu)勢(shì)

高精度保持:

OpenVINO NCCF提供了多種量化策略和算法,可以幫助開發(fā)者在保持模型精度的同時(shí)實(shí)現(xiàn)顯著的壓縮和加速。

多硬件支持:

OpenVINO NCCF支持多種硬件平臺(tái),包括Intel CPU、GPU、FPGA等,使得量化后的模型可以在不同的硬件上實(shí)現(xiàn)高效的推理。

易用性:

OpenVINO NCCF提供了豐富的API和工具,使得開發(fā)者可以輕松地集成和使用量化功能,無(wú)需深入了解底層的量化算法和優(yōu)化技術(shù)。

ResNet18的圖像分類模型FP32與INT8量化版本推理速度比較:

cca197ba-3cc6-11ef-a4c8-92fbcf53809c.png

在OpenVINO的官方文檔和社區(qū)中,可以找到關(guān)于NCCF量化的詳細(xì)示例和教程。這些示例通常包括模型準(zhǔn)備、轉(zhuǎn)換、量化、評(píng)估和部署等整個(gè)流程,為開發(fā)者提供了寶貴的參考和指導(dǎo)。

03TensorRT量化框架

TensorRT量化是深度學(xué)習(xí)模型優(yōu)化的一種重要手段,它通過(guò)將模型中的參數(shù)(如權(quán)重)從浮點(diǎn)數(shù)(如FP32)轉(zhuǎn)換為整數(shù)(如INT8)來(lái)減少模型的存儲(chǔ)和計(jì)算成本,從而達(dá)到模型壓縮和運(yùn)算加速的目的。

TensorRT量化的基本概念

NVIDIA的TensorRT是一個(gè)高性能的深度學(xué)習(xí)推理優(yōu)化器,它支持多種深度學(xué)習(xí)框架(如TensorFlow、PyTorch等)的模型,并提供了一系列的優(yōu)化技術(shù),包括量化、層融合、動(dòng)態(tài)張量等,以加速深度學(xué)習(xí)模型的推理速度。

TensorRT量化的目標(biāo) 減少模型大小:

通過(guò)量化,可以將模型的參數(shù)從浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),從而顯著減少模型的存儲(chǔ)需求。

加速推理速度:

在支持INT8等低精度整數(shù)運(yùn)算的硬件上,使用量化后的模型可以顯著提高推理速度。

降低功耗:

在一些嵌入式或移動(dòng)設(shè)備上,使用量化后的模型可以降低功耗,延長(zhǎng)設(shè)備的使用時(shí)間。

TensorRT量化的實(shí)現(xiàn)方式

TensorRT支持多種量化方式,主要包括隱式量化和顯式量化兩種:

隱式量化:

在TensorRT的早期版本中,隱式量化是主要的量化方式。它不需要修改模型結(jié)構(gòu)或訓(xùn)練代碼,只需要在模型推理過(guò)程中使用TensorRT提供的量化工具進(jìn)行量化。隱式量化通常適用于訓(xùn)練后量化(PTQ)場(chǎng)景。

顯式量化:

從TensorRT 8.0版本開始,顯式量化得到了全面支持。顯式量化允許在模型訓(xùn)練過(guò)程中插入量化指令(如QDQ操作),并在模型推理過(guò)程中使用TensorRT進(jìn)行量化。顯式量化可以提供更高的量化精度和更好的性能優(yōu)化。

TensorRT量化的校準(zhǔn)方法

在TensorRT中,量化過(guò)程中需要使用校準(zhǔn)數(shù)據(jù)集來(lái)確定量化參數(shù)(如縮放因子和零點(diǎn))。TensorRT支持多種校準(zhǔn)方法,包括熵校準(zhǔn)和最小最大值校準(zhǔn)等:

熵校準(zhǔn):

熵校準(zhǔn)是一種動(dòng)態(tài)校準(zhǔn)算法,它使用KL散度(KL Divergence)來(lái)度量推理數(shù)據(jù)和校準(zhǔn)數(shù)據(jù)之間的分布差異。在校準(zhǔn)過(guò)程中,TensorRT會(huì)分析每個(gè)張量的分布,并選擇合適的量化參數(shù)以最小化KL散度。

最小最大值校準(zhǔn):

最小最大值校準(zhǔn)使用最小最大值算法來(lái)計(jì)算量化參數(shù)。在校準(zhǔn)過(guò)程中,TensorRT會(huì)統(tǒng)計(jì)校準(zhǔn)數(shù)據(jù)中的最小值和最大值,并根據(jù)這些值來(lái)計(jì)算量化參數(shù)。

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

    關(guān)注

    1

    文章

    3473

    瀏覽量

    49885
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5550

    瀏覽量

    122379
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    809

    瀏覽量

    13721

原文標(biāo)題:深度學(xué)習(xí)模型量化方法與框架介紹

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

收藏 0人收藏

    評(píng)論

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

    如何排除深度學(xué)習(xí)工作臺(tái)上量化OpenVINO?的特定層?

    無(wú)法確定如何排除要在深度學(xué)習(xí)工作臺(tái)上量化OpenVINO?特定層
    發(fā)表于 03-06 07:31

    深度學(xué)習(xí)模型是如何創(chuàng)建的?

    具有深度學(xué)習(xí)模型的嵌入式系統(tǒng)應(yīng)用程序帶來(lái)了巨大的好處。深度學(xué)習(xí)嵌入式系統(tǒng)已經(jīng)改變了各個(gè)行業(yè)的企業(yè)和組織。
    發(fā)表于 10-27 06:34

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

    ,即使使用具有一定低位寬的數(shù)據(jù),深度學(xué)習(xí)推理也不會(huì)降低最終精度。目前據(jù)說(shuō)8位左右可以提供穩(wěn)定的準(zhǔn)確率,但最新的研究表明,已經(jīng)出現(xiàn)了即使降低到4位或2位也能獲得很好準(zhǔn)確率的模型學(xué)習(xí)方法
    發(fā)表于 02-17 16:56

    模型驅(qū)動(dòng)深度學(xué)習(xí)的標(biāo)準(zhǔn)流程與學(xué)習(xí)方法解析

    模型驅(qū)動(dòng)的深度學(xué)習(xí)方法近年來(lái),深度學(xué)習(xí)在人工智能領(lǐng)域一系列困難問題上取得了突破性成功應(yīng)用。
    的頭像 發(fā)表于 01-24 11:30 ?5078次閱讀
    <b class='flag-5'>模型</b>驅(qū)動(dòng)<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的標(biāo)準(zhǔn)流程與<b class='flag-5'>學(xué)習(xí)方法</b>解析

    針對(duì)線性回歸模型深度學(xué)習(xí)模型,介紹了確定訓(xùn)練數(shù)據(jù)集規(guī)模的方法

    學(xué)習(xí)模型的表現(xiàn)會(huì)按照冪定律持續(xù)提升。例如,有人曾用深度學(xué)習(xí)方法對(duì)三億張圖像進(jìn)行分類,發(fā)現(xiàn)模型的表現(xiàn)隨著訓(xùn)練數(shù)據(jù)規(guī)模的增長(zhǎng)按對(duì)數(shù)關(guān)系提升。
    的頭像 發(fā)表于 05-05 11:03 ?6475次閱讀

    深度學(xué)習(xí)模型壓縮與加速綜述

    目前在深度學(xué)習(xí)領(lǐng)域分類兩個(gè)派別,一派為學(xué)院派,研究強(qiáng)大、復(fù)雜的模型網(wǎng)絡(luò)和實(shí)驗(yàn)方法,為了追求更高的性能;另一派為工程派,旨在將算法更穩(wěn)定、高效的落地在硬件平臺(tái)上,效率是其追求的目標(biāo)。復(fù)雜
    的頭像 發(fā)表于 06-08 17:26 ?5450次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b>壓縮與加速綜述

    基于深度學(xué)習(xí)的視頻質(zhì)量評(píng)價(jià)方法模型研究

    視頻質(zhì)量評(píng)價(jià)(VQA)是以人眼的主觀質(zhì)量評(píng)估結(jié)果為依據(jù),使用算法模型對(duì)失真視頻進(jìn)行評(píng)估。傳統(tǒng)的評(píng)估方法難以做到主觀評(píng)價(jià)結(jié)果與客觀評(píng)價(jià)結(jié)果相一致?;?b class='flag-5'>深度學(xué)習(xí)的視頻質(zhì)量評(píng)價(jià)
    發(fā)表于 03-29 15:46 ?81次下載
    基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的視頻質(zhì)量評(píng)價(jià)<b class='flag-5'>方法</b>及<b class='flag-5'>模型</b>研究

    結(jié)合基擴(kuò)展模型深度學(xué)習(xí)的信道估計(jì)方法

    結(jié)合基擴(kuò)展模型深度學(xué)習(xí)的信道估計(jì)方法
    發(fā)表于 06-30 10:43 ?62次下載

    模型為什么是深度學(xué)習(xí)的未來(lái)?

    與傳統(tǒng)機(jī)器學(xué)習(xí)相比,深度學(xué)習(xí)是從數(shù)據(jù)中學(xué)習(xí),而大模型則是通過(guò)使用大量的模型來(lái)訓(xùn)練數(shù)據(jù)。
    的頭像 發(fā)表于 02-16 11:32 ?2292次閱讀

    YOLOv8模型ONNX格式INT8量化輕松搞定

    深度學(xué)習(xí)模型量化支持深度學(xué)習(xí)模型部署框架支持的一種輕
    的頭像 發(fā)表于 07-18 09:34 ?4254次閱讀
    YOLOv8<b class='flag-5'>模型</b>ONNX格式INT8<b class='flag-5'>量化</b>輕松搞定

    深度學(xué)習(xí)模型優(yōu)化與調(diào)試方法

    深度學(xué)習(xí)模型在訓(xùn)練過(guò)程中,往往會(huì)遇到各種問題和挑戰(zhàn),如過(guò)擬合、欠擬合、梯度消失或爆炸等。因此,對(duì)深度學(xué)習(xí)
    的頭像 發(fā)表于 07-01 11:41 ?1474次閱讀

    深度學(xué)習(xí)中的模型權(quán)重

    深度學(xué)習(xí)這一充滿無(wú)限可能性的領(lǐng)域中,模型權(quán)重(Weights)作為其核心組成部分,扮演著至關(guān)重要的角色。它們不僅是模型學(xué)習(xí)的基石,更是
    的頭像 發(fā)表于 07-04 11:49 ?3571次閱讀

    深度學(xué)習(xí)中的時(shí)間序列分類方法

    的發(fā)展,基于深度學(xué)習(xí)的TSC方法逐漸展現(xiàn)出其強(qiáng)大的自動(dòng)特征提取和分類能力。本文將從多個(gè)角度對(duì)深度學(xué)習(xí)在時(shí)間序列分類中的應(yīng)用進(jìn)行綜述,探討常用
    的頭像 發(fā)表于 07-09 15:54 ?1788次閱讀

    深度神經(jīng)網(wǎng)絡(luò)模型量化的基本方法

    深度神經(jīng)網(wǎng)絡(luò)模型量化深度學(xué)習(xí)領(lǐng)域中的一種重要優(yōu)化技術(shù),旨在通過(guò)減少模型參數(shù)的精度(即從高精度浮
    的頭像 發(fā)表于 07-15 11:26 ?1126次閱讀

    AI大模型深度學(xué)習(xí)的關(guān)系

    AI大模型深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進(jìn),相輔相成。以下是對(duì)兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大
    的頭像 發(fā)表于 10-23 15:25 ?2507次閱讀

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品