本公開涉及計算機,尤其涉及一種神經(jīng)網(wǎng)絡(luò)模型量化方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、隨著深度學(xué)習(xí)技術(shù)在多個領(lǐng)域的快速應(yīng)用,具體包括語音、計算機視覺、自然語言處理等,出現(xiàn)了大量的基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型。這些模型一般參數(shù)量大而復(fù)雜、很難部署在車機、機器人等嵌入式設(shè)備中。
2、為了很好的解決這個矛盾,模型量化應(yīng)運而生,它可以在損失少量精度的前提下對模型進行壓縮,使得將這些復(fù)雜的模型應(yīng)用到車機、機器人等終端中變成了可能。目前通用的量化方案是將模型的權(quán)重以及權(quán)重的激活值由原來的浮點型數(shù)據(jù)類型(float32)量化為整型數(shù)據(jù)類型(int8),達到更小的存儲和更快的運行速度。
3、但是,由于神經(jīng)網(wǎng)絡(luò)模型一般層數(shù)較深且經(jīng)過多輪的數(shù)據(jù)迭代,模型的絕大部分權(quán)重都集中在一個比較小的范圍,且精度較高,現(xiàn)有的量化方案是由float32直接量化為int8,導(dǎo)致會有一個精度的突變,造成較大的量化損失。
技術(shù)實現(xiàn)思路
1、為了解決上述技術(shù)問題,本公開提供了一種神經(jīng)網(wǎng)絡(luò)模型量化方法、裝置、設(shè)備及存儲介質(zhì)。
2、第一方面,本公開實施例提供一種神經(jīng)網(wǎng)絡(luò)模型量化方法,包括:
3、采用32位精度的數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,得到第一神經(jīng)網(wǎng)絡(luò)模型;
4、對所述第一神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型;
5、對所述第二神經(jīng)網(wǎng)絡(luò)模型進行8位精度量化,得到第三神經(jīng)網(wǎng)絡(luò)模型。
6、在一些實施例中,所述采用32位精度的數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,得到第一神經(jīng)網(wǎng)絡(luò)模型,包括:
7、對神經(jīng)網(wǎng)絡(luò)模型進行初始化處理;
8、獲取多組32位精度的數(shù)據(jù)和預(yù)設(shè)的收斂范圍;
9、將每組32位精度的數(shù)據(jù)輸入初始化的神經(jīng)網(wǎng)絡(luò)模型中進行訓(xùn)練,分別得到每組32位精度的數(shù)據(jù)對應(yīng)的輸出結(jié)果;
10、對每組32位精度的數(shù)據(jù)對應(yīng)的輸出結(jié)果進行收斂,得到神經(jīng)網(wǎng)絡(luò)模型的收斂值;
11、根據(jù)所述神經(jīng)網(wǎng)絡(luò)模型的收斂值與所述預(yù)設(shè)的收斂范圍的偏差關(guān)系,對所述神經(jīng)網(wǎng)絡(luò)模型的參數(shù)進行更新,得到第一神經(jīng)網(wǎng)絡(luò)模型。
12、在一些實施例中,在所述根據(jù)所述神經(jīng)網(wǎng)絡(luò)模型的收斂值與所述預(yù)設(shè)的收斂范圍的偏差關(guān)系,對所述神經(jīng)網(wǎng)絡(luò)模型的參數(shù)進行更新,得到第一神經(jīng)網(wǎng)絡(luò)模型之前,所述方法還包括:
13、判斷所述神經(jīng)網(wǎng)絡(luò)模型的收斂值是否處于所述預(yù)設(shè)的收斂范圍內(nèi);
14、若所述神經(jīng)網(wǎng)絡(luò)模型的收斂值不處于所述預(yù)設(shè)的收斂范圍內(nèi),計算所述神經(jīng)網(wǎng)絡(luò)模型的收斂值與所述預(yù)設(shè)的收斂范圍的偏差關(guān)系。
15、在一些實施例中,所述根據(jù)所述神經(jīng)網(wǎng)絡(luò)模型的收斂值與所述預(yù)設(shè)的收斂范圍的偏差關(guān)系,對所述神經(jīng)網(wǎng)絡(luò)模型的參數(shù)進行更新,得到第一神經(jīng)網(wǎng)絡(luò)模型,包括:
16、基于所述預(yù)設(shè)的收斂范圍對所述神經(jīng)網(wǎng)絡(luò)模型的收斂值進行損失計算,得到所述神經(jīng)網(wǎng)絡(luò)模型的損失計算結(jié)果;
17、基于所述神經(jīng)網(wǎng)絡(luò)模型的損失計算結(jié)果,更新所述神經(jīng)網(wǎng)絡(luò)模型的模型參數(shù);
18、若更新后的所述神經(jīng)網(wǎng)絡(luò)模型的收斂值處于所述預(yù)設(shè)的收斂范圍內(nèi),則得到第一神經(jīng)網(wǎng)絡(luò)模型。
19、在一些實施例中,所述對所述第一神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型,包括:
20、將所述32位精度的數(shù)據(jù)映射為16位精度的數(shù)據(jù);
21、采用16位精度的數(shù)據(jù)對所述第一神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型。
22、在一些實施例中,在所述對所述第一神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型之前,所述方法還包括:
23、對所述第一神經(jīng)網(wǎng)絡(luò)模型進行32位精度和16位精度的混合精度訓(xùn)練,得到第四神經(jīng)網(wǎng)絡(luò)模型;
24、所述對所述第一神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型,包括:
25、對所述第四神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型。
26、在一些實施例中,所述對所述第一神經(jīng)網(wǎng)絡(luò)模型進行32位精度和16位精度的混合精度訓(xùn)練,得到第四神經(jīng)網(wǎng)絡(luò)模型,包括:
27、采用所述32位精度的數(shù)據(jù)對所述第一神經(jīng)網(wǎng)絡(luò)模型的歸一化層、激活層進行訓(xùn)練;
28、將所述32位精度的數(shù)據(jù)映射為16位精度的數(shù)據(jù),采用所述16位精度的數(shù)據(jù)對所述第一神經(jīng)網(wǎng)絡(luò)模型的卷積層、線性層進行訓(xùn)練;
29、對所述第一神經(jīng)網(wǎng)絡(luò)模型的輸出結(jié)果進行收斂,得到所述第一神經(jīng)網(wǎng)絡(luò)模型的收斂值;
30、基于預(yù)設(shè)的收斂范圍對所述第一神經(jīng)網(wǎng)絡(luò)模型的收斂值進行損失計算,得到所述第一神經(jīng)網(wǎng)絡(luò)模型的損失計算結(jié)果;
31、基于所述第一神經(jīng)網(wǎng)絡(luò)模型的損失計算結(jié)果,更新所述第一神經(jīng)網(wǎng)絡(luò)模型的模型參數(shù);
32、若更新后的所述第一神經(jīng)網(wǎng)絡(luò)模型的收斂值處于所述預(yù)設(shè)的收斂范圍內(nèi),則得到第四神經(jīng)網(wǎng)絡(luò)模型。
33、在一些實施例中,所述對所述第二神經(jīng)網(wǎng)絡(luò)模型進行8位精度量化,得到第三神經(jīng)網(wǎng)絡(luò)模型,包括:
34、統(tǒng)計所述第二神經(jīng)網(wǎng)絡(luò)模型中的權(quán)重值、激活值、最大值、最小值;
35、將所述第二神經(jīng)網(wǎng)絡(luò)模型中的權(quán)重值映射為8位精度的權(quán)重值,將所述第二神經(jīng)網(wǎng)絡(luò)模型中的激活值映射為8位精度的激活值,將所述第二神經(jīng)網(wǎng)絡(luò)模型中的最大值映射為8位精度的最大值,將所述第二神經(jīng)網(wǎng)絡(luò)模型中的最小值映射為8位精度的最小值;
36、將所述第二神經(jīng)網(wǎng)絡(luò)模型中的算子替換為量化算子,得到第三神經(jīng)網(wǎng)絡(luò)模型。
37、第二方面,本公開實施例提供一種神經(jīng)網(wǎng)絡(luò)模型量化裝置,包括:
38、第一訓(xùn)練模塊,用于采用32位精度的數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,得到第一神經(jīng)網(wǎng)絡(luò)模型;
39、第二訓(xùn)練模塊,用于對所述第一神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型;
40、量化模塊,用于對所述第二神經(jīng)網(wǎng)絡(luò)模型進行8位精度量化,得到第三神經(jīng)網(wǎng)絡(luò)模型。
41、第三方面,本公開實施例提供一種電子設(shè)備,包括:
42、存儲器;
43、處理器;以及
44、計算機程序;
45、其中,所述計算機程序存儲在所述存儲器中,并被配置為由所述處理器執(zhí)行以實現(xiàn)如第一方面所述的方法。
46、第四方面,本公開實施例提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行以實現(xiàn)如第一方面所述的方法。
47、第五方面,本公開實施例還提供了一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機程序或指令,該計算機程序或指令被處理器執(zhí)行時實現(xiàn)如上所述的神經(jīng)網(wǎng)絡(luò)模型量化方法。
48、本公開實施例提供的神經(jīng)網(wǎng)絡(luò)模型量化方法、裝置、設(shè)備及存儲介質(zhì),通過采用32位精度的數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,得到第一神經(jīng)網(wǎng)絡(luò)模型,對所述第一神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到第二神經(jīng)網(wǎng)絡(luò)模型,對所述第二神經(jīng)網(wǎng)絡(luò)模型進行8位精度量化,得到第三神經(jīng)網(wǎng)絡(luò)模型。本公開利用32位精度的數(shù)據(jù)訓(xùn)練出32位精度下的神經(jīng)網(wǎng)絡(luò)模型,進一步對32位精度下的神經(jīng)網(wǎng)絡(luò)模型進行16位精度訓(xùn)練,得到16位精度下的神經(jīng)網(wǎng)絡(luò)模型,先將32位精度下的神經(jīng)網(wǎng)絡(luò)模型通過多次訓(xùn)練,逐步訓(xùn)練為16位精度,再對16位精度下的神經(jīng)網(wǎng)絡(luò)模型進行8位精度量化,得到量化后8位精度的神經(jīng)網(wǎng)絡(luò)模型,相較于現(xiàn)有技術(shù)中直接將32位精度的神經(jīng)網(wǎng)絡(luò)模型量化為8位精度的神經(jīng)網(wǎng)絡(luò)模型,本公開由32位精度到16位精度,再到8位精度,精度是在逐漸降低的,不存在精度的突變,可以逐步降低模型參數(shù)的精度,從而可以減少模型量化的性能損失。