本技術(shù)涉及模型量化,尤其涉及模型量化方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、為了保證模型效果,模型中的參數(shù)一般采用精度較高的數(shù)據(jù)類型和比特?cái)?shù)來(lái)表征模型參數(shù)(如利用32比特的浮點(diǎn)數(shù)據(jù)fp32表示模型參數(shù)),而以高精度實(shí)現(xiàn)表示模型參數(shù)的模型,其運(yùn)行時(shí)占用內(nèi)存空間較大,且對(duì)設(shè)備的計(jì)算性能要求也較高,而由于端側(cè)(如用戶側(cè))的設(shè)備性能限制,如今的模型若要應(yīng)用在端側(cè),一般需要對(duì)模型進(jìn)行模型量化,減少模型占用的空間,降低模型對(duì)設(shè)備性能的要求,才能保證模型在端側(cè)順利使用。
2、在模型量化過(guò)程中,模型精度會(huì)下降,雖然有部分方法通過(guò)跨層權(quán)重均衡與偏差吸收的方法解決了量化損失問(wèn)題,但是,由于偏差吸收不是等價(jià)變化,需要引入了量化感知訓(xùn)練來(lái)保證模型精度,需要對(duì)網(wǎng)絡(luò)中的權(quán)重進(jìn)行調(diào)整,這一過(guò)程會(huì)導(dǎo)致浮點(diǎn)模型的精度下降從而導(dǎo)致量化精度進(jìn)一步損失,實(shí)際使用效果難以保證。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種模型量化方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),旨在解決相關(guān)技術(shù)難以解決模型量化的量化損失問(wèn)題的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本技術(shù)提出一種模型量化方法,所述方法包括:
3、根據(jù)量化配置參數(shù)對(duì)目標(biāo)模型進(jìn)行模型量化,獲得第一量化模型,所述目標(biāo)模型為未經(jīng)過(guò)模型量化,以高精度實(shí)現(xiàn)表示模型參數(shù)的模型;
4、獲取所述第一量化模型對(duì)應(yīng)的整體量化損失及所述第一量化模型中各層網(wǎng)絡(luò)對(duì)應(yīng)的網(wǎng)絡(luò)量化損失;
5、若所述整體量化損失大于預(yù)設(shè)損失閾值,則根據(jù)所述網(wǎng)絡(luò)量化損失選取量化損失區(qū)域,所述量化損失區(qū)域?yàn)榈谝涣炕P椭袑?duì)應(yīng)的網(wǎng)絡(luò)量化損失最大的一層網(wǎng)絡(luò);
6、對(duì)所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)進(jìn)行算子拆分,獲得調(diào)整后的目標(biāo)模型,所述算子拆分為將目標(biāo)模型中量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)以輸出通道為基準(zhǔn)進(jìn)行拆分為多個(gè)算子,所述調(diào)整后的目標(biāo)模型為進(jìn)行過(guò)算子拆分的目標(biāo)模型;
7、基于所述量化配置參數(shù)對(duì)調(diào)整后的目標(biāo)模型進(jìn)行模型量化,獲得第二量化模型;
8、若所述第二量化模型對(duì)應(yīng)的整體量化損失小于或等于所述預(yù)設(shè)損失閾值,則將所述第二量化模型作為量化完成的模型。
9、在本技術(shù)一種可能的實(shí)現(xiàn)方式中,所述對(duì)所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)進(jìn)行算子拆分,獲得調(diào)整后的目標(biāo)模型,包括:
10、將所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)標(biāo)記為待拆分算子;
11、以輸出通道為基準(zhǔn),將所述待拆分算子拆分為多個(gè)子算子,所述子算子為輸出通道級(jí)的算子;
12、將所述多個(gè)子算子劃分為至少一個(gè)算子集合,所述算子集合中的子算子的量化精度差異小于預(yù)設(shè)差異閾值;
13、分別將各算子集合中的子算子進(jìn)行融合,獲得多個(gè)融合算子;
14、將所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)替換為所述多個(gè)融合算子,獲得調(diào)整后的目標(biāo)模型。
15、在本技術(shù)一種可能的實(shí)現(xiàn)方式中,所述將所述多個(gè)子算子劃分為至少一個(gè)算子集合,包括:
16、獲取各子算子對(duì)應(yīng)的量化系數(shù);
17、對(duì)所述多個(gè)子算子進(jìn)行遍歷,獲得當(dāng)前子算子,所述當(dāng)前子算子為未被遍歷到過(guò),且未被劃分至算子集合的子算子;
18、將所述多個(gè)子算子中,對(duì)應(yīng)的量化系數(shù)與所述當(dāng)前子算子對(duì)應(yīng)的量化系數(shù)之間差異小于或等于預(yù)設(shè)差異閾值的子算子作為目標(biāo)算子;
19、將所述當(dāng)前子算子及所述目標(biāo)算子劃分為一個(gè)算子集合;
20、檢測(cè)所述多個(gè)子算子中是否存在未被遍歷到過(guò),且未被劃分至算子集合的子算子;
21、若不存在,則結(jié)束對(duì)所述多個(gè)子算子的遍歷,獲得至少一個(gè)算子集合。
22、在本技術(shù)一種可能的實(shí)現(xiàn)方式中,所述將所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)替換為所述多個(gè)融合算子,獲得調(diào)整后的目標(biāo)模型,包括:
23、根據(jù)所述量化損失區(qū)域在所述目標(biāo)模型中標(biāo)記級(jí)聯(lián)網(wǎng)絡(luò),所述級(jí)聯(lián)網(wǎng)絡(luò)為目標(biāo)模型中與所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)的輸出層級(jí)聯(lián)的網(wǎng)絡(luò);
24、檢測(cè)對(duì)所述級(jí)聯(lián)網(wǎng)絡(luò)進(jìn)行算子拆分是否具備拆分收益,所述具備拆分收益為對(duì)所述級(jí)聯(lián)網(wǎng)絡(luò)進(jìn)行算子拆分后,基于該拆分后的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行模型量化,模型的整體量化損失降低;
25、若具備拆分收益,則將所述級(jí)聯(lián)網(wǎng)絡(luò)進(jìn)行拆分,獲得多個(gè)級(jí)聯(lián)融合算子,所述級(jí)聯(lián)融合算子與所述融合算子一一對(duì)應(yīng);
26、將目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)替換為所述多個(gè)融合算子,并將所述目標(biāo)模型中級(jí)聯(lián)網(wǎng)絡(luò)替換為所述多個(gè)級(jí)聯(lián)融合算子,獲得調(diào)整后的目標(biāo)模型。
27、在本技術(shù)一種可能的實(shí)現(xiàn)方式中,所述基于所述量化配置參數(shù)對(duì)調(diào)整后的目標(biāo)模型進(jìn)行模型量化,獲得第二量化模型之后,還包括:
28、若所述第二量化模型對(duì)應(yīng)的整體量化損失大于所述預(yù)設(shè)損失閾值,則根據(jù)所述第二量化模型中各層網(wǎng)絡(luò)對(duì)應(yīng)的網(wǎng)絡(luò)量化損失確定損失最高區(qū)域,所述損失最高區(qū)域?yàn)榈诙炕P椭袑?duì)應(yīng)的網(wǎng)絡(luò)量化損失最大的網(wǎng)絡(luò);
29、檢測(cè)所述損失最高區(qū)域是否處于已拆分區(qū)域中,所述已拆分區(qū)域?yàn)橐堰M(jìn)行過(guò)算子拆分的網(wǎng)絡(luò)區(qū)域;
30、若不處于已拆分區(qū)域中,則將所述損失最高區(qū)域作為新的量化損失區(qū)域,并返回所述對(duì)所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)進(jìn)行算子拆分,獲得調(diào)整后的目標(biāo)模型的步驟。
31、在本技術(shù)一種可能的實(shí)現(xiàn)方式中,所述檢測(cè)所述損失最高區(qū)域是否處于已拆分區(qū)域中之后,還包括:
32、若處于已拆分區(qū)域中,則將所述目標(biāo)模型中所述損失最高區(qū)域?qū)?yīng)的融合算子設(shè)置為高精度實(shí)現(xiàn),獲得設(shè)置后的目標(biāo)模型;
33、基于所述量化配置參數(shù)對(duì)設(shè)置后的目標(biāo)模型進(jìn)行模型量化,獲得第三量化模型;
34、若所述第三量化模型對(duì)應(yīng)的整體量化損失小于或等于所述預(yù)設(shè)損失閾值,則將所述第三量化模型作為量化完成的模型。
35、在本技術(shù)一種可能的實(shí)現(xiàn)方式中,所述基于所述量化配置參數(shù)對(duì)設(shè)置后的目標(biāo)模型進(jìn)行模型量化,獲得第三量化模型之后,還包括:
36、若所述第三量化模型對(duì)應(yīng)的整體量化損失大于所述預(yù)設(shè)損失閾值,則根據(jù)所述第三量化模型中各層網(wǎng)絡(luò)對(duì)應(yīng)的網(wǎng)絡(luò)量化損失確定待調(diào)整區(qū)域,所述待調(diào)整區(qū)域?yàn)榈谌炕P椭袑?duì)應(yīng)的網(wǎng)絡(luò)量化損失最大的網(wǎng)絡(luò);
37、將所述待調(diào)整區(qū)域作為新的量化損失區(qū)域,并返回所述對(duì)所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)進(jìn)行算子拆分,獲得調(diào)整后的目標(biāo)模型的步驟。
38、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種模型量化裝置,所述裝置包括:
39、第一量化模塊,用于根據(jù)量化配置參數(shù)對(duì)目標(biāo)模型進(jìn)行模型量化,獲得第一量化模型,所述目標(biāo)模型為未經(jīng)過(guò)模型量化,以高精度實(shí)現(xiàn)表示模型參數(shù)的模型;
40、損失獲取模塊,用于獲取所述第一量化模型對(duì)應(yīng)的整體量化損失及所述第一量化模型中各層網(wǎng)絡(luò)對(duì)應(yīng)的網(wǎng)絡(luò)量化損失;
41、區(qū)域選取模塊,用于若所述整體量化損失大于預(yù)設(shè)損失閾值,則根據(jù)所述網(wǎng)絡(luò)量化損失選取量化損失區(qū)域,所述量化損失區(qū)域?yàn)榈谝涣炕P椭袑?duì)應(yīng)的網(wǎng)絡(luò)量化損失最大的一層網(wǎng)絡(luò);
42、算子拆分模塊,用于對(duì)所述目標(biāo)模型中所述量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)進(jìn)行算子拆分,獲得調(diào)整后的目標(biāo)模型,所述算子拆分為將目標(biāo)模型中量化損失區(qū)域?qū)?yīng)的網(wǎng)絡(luò)以輸出通道為基準(zhǔn)進(jìn)行拆分為多個(gè)算子,所述調(diào)整后的目標(biāo)模型為進(jìn)行過(guò)算子拆分的目標(biāo)模型;
43、第二量化模塊,用于基于所述量化配置參數(shù)對(duì)調(diào)整后的目標(biāo)模型進(jìn)行模型量化,獲得第二量化模型;
44、量化判定模塊,用于若所述第二量化模型對(duì)應(yīng)的整體量化損失小于或等于所述預(yù)設(shè)損失閾值,則將所述第二量化模型作為量化完成的模型。
45、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種模型量化設(shè)備,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如上所述的模型量化方法的步驟。
46、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的模型量化方法的步驟。
47、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的模型量化方法的步驟。
48、本技術(shù)提出的一個(gè)或多個(gè)技術(shù)方案,至少具有以下技術(shù)效果:
49、由于是算子拆分再量化,而算子具有更好的量化表達(dá)能力,使得可以擁有接近逐通道量化的量化效果,從而提高了對(duì)模型進(jìn)行模型量化的量化效果,保證了可降低模型的整體量化損失。