本發(fā)明屬于神經(jīng)網(wǎng)絡(luò)處理,特別涉及一種快速分析量化效果的方法。
背景技術(shù):
1、隨著模型預(yù)測(predication)越來越準確,網(wǎng)絡(luò)越來越深,神經(jīng)網(wǎng)絡(luò)消耗的內(nèi)存大小成為問題。工業(yè)界最終選擇了int8量化——fp32在推理(inference)期間被int8取代,而訓(xùn)練(training)仍然是fp32。量化過程可以分為兩部分:將模型從fp32轉(zhuǎn)換為int8,以及使用int8進行推理。
2、然而,在pc端進行模型量化的時候往往需要手動進行層融合,之后再插入量化節(jié)點,比如conv+bn+act(即卷積+batchnorm+激活),add+act(加法+激活)等,又因為神經(jīng)網(wǎng)絡(luò)大多是串行的,上下層之間會存在依賴關(guān)系,有時更是需要快速地定位出現(xiàn)問題的點。
3、此外,常用的技術(shù)術(shù)語包括:
4、1.float模型:指神經(jīng)網(wǎng)絡(luò)的原始模型,常規(guī)精度模型則一般表示模型權(quán)重數(shù)值格式為fp32(32位浮點,單精度),以下簡稱float模型;
5、3.模型量化是指將神經(jīng)網(wǎng)絡(luò)的浮點算法轉(zhuǎn)換為定點。低精度模型表示模型權(quán)重數(shù)值格式為fp16(半精度浮點)或者int8(8位的定點整數(shù)),但是目前低精度往往就指代int8。
6、4.余弦相似度,又稱為余弦相似性,是通過計算兩個向量的夾角余弦值來評估他們的相似度。余弦值越接近1,表明兩個向量的夾角越接近0度,則兩個向量越相似。在n維空間中如果有兩個向量,向量a(a1,a2,a3,....,an),向量b(b1,b2,b3,....bn),根據(jù)點積公式可得:
7、
8、4.最大絕對誤差,兩個神經(jīng)網(wǎng)絡(luò)輸出層tensor的絕對值得差值求出一個最大值。
技術(shù)實現(xiàn)思路
1、為了解決上述問題,本申請的目的在于:提出一種切實有效方法來分析量化后的網(wǎng)絡(luò)各層的和原始float相比,以便快速地查看量化后的模型效果以及定位出現(xiàn)問題的層。
2、具體地,本發(fā)明提供一種快速分析量化效果的方法,所述方法包括:s1.進行浮點模型的訓(xùn)練,得到一個精度滿意的浮點模型,即訓(xùn)練一定的次數(shù)直到模型收斂,即loss基本不變,精度不再上升;
3、s2.準備校正集,進行統(tǒng)計得到量化需要的minmax,去確定浮點數(shù)的動態(tài)范圍;
4、s3.按以下量化方法將權(quán)重張量的每個值從fp32轉(zhuǎn)換為低bit的模型,涉及的量化公式如下:
5、
6、
7、
8、xquantized=xfloat÷xscale+xzero_point?????(4)
9、其中,表示計算得到的浮點范圍的最小值,表示計算得到的浮點范圍的最大值,表示計算想要量化的范圍的最小值,表示計算想要量化的范圍的最大值,xscale表示縮放系數(shù),xzero_point表示浮點的0點對應(yīng)到量化后的數(shù)值,最后公式(4)則表示浮點值xfloat經(jīng)過量化后得到量化值xquantized的計算方法;
10、s4.給定同一個輸入對模型的每一層的輸出tensor計算float和低bit的余弦相似度和最大絕對誤差值:
11、cosine_sim=np.dot(ai,bi)/(np.sqrt(np.sum(ai*ai))*np.sqrt(np.sum(bi*bi))),mabs_error=np.max(np.abs(ai-bi))
12、其中ai和bi分別是第i層float模型的運行結(jié)果和低bit模型的運行的結(jié)果,這個理論上大小一致即說明量化前后沒有損失;
13、因為有時候光看余弦相似度不能具有絕對的代表性,所以還加入了最大絕對誤差作為同步參考,當(dāng)二者的余弦相似度高,且最大絕對誤差小時,說明二者很相近,這時能夠?qū)崿F(xiàn)雙重保障。
14、用所述方法對于大部分量化為低bit精度無損的模型能夠得到每一層的余弦相似度cosine_sim都在99%以上,由于余弦相似度cos_sim值分范圍在0-1,越接近1表示二者的差距越??;最大絕對誤差是越小表明像素值越接近。
15、所述低bit是8bit。
16、所述方法根據(jù)已經(jīng)收斂的全精度模型直接進行8bit模型的轉(zhuǎn)換,在轉(zhuǎn)換的過程中計算每一層32bit和8bit的余弦相似度以及絕對誤差,兩個同時作為參考察看各層量化后的情況,所述查看的過程指的就是比較每層計算得到的余弦相似度以及最大絕對誤差,如有異常,則采用以下方法及時定位開始出現(xiàn)問題的層,解決之后再依次往后進行,即假設(shè)當(dāng)觀察到某一層,cosine_sim突然降得很低即小于90%,并且最大絕對誤差也變得很大即大于20,這個時候即當(dāng)打印出的數(shù)值,余弦相似度偏小,或者最大絕對誤差偏大時需要去檢查一下這一層對應(yīng)的算子是否存在量化問題導(dǎo)致出現(xiàn)的如上誤差,解決之后再重新進行步驟s4,計算并比較每層的余弦相似度或者最大絕對誤差,就會出現(xiàn)和前面類似的相似度較高的結(jié)果。
17、所述余弦相似度又稱為余弦相似性,是通過計算兩個向量的夾角余弦值來評估他們的相似度,余弦值越接近1,表明兩個向量的夾角越接近0度,則兩個向量越相似;在n維空間中如果有兩個向量,向量a(a1,a2,a3,....,an),向量b(b1,b2,b3,....bn),根據(jù)點積公式可得:
18、
19、由此,本申請的優(yōu)勢在于:
20、本方法簡單,在轉(zhuǎn)換的過程中計算每一層32bit和8bit的余弦相似度以及絕對誤差,兩個同時作為參考察看各層量化后的情況,如有異常也可采用此法及時定位開始出現(xiàn)問題的層,解決之后再依次往后走。
1.一種快速分析量化效果的方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的一種快速分析量化效果的方法,其特征在于,用所述方法對于大部分量化為低bit精度無損的模型能夠得到每一層的余弦相似度cosine_sim都在99%以上,由于余弦相似度cos_sim值分范圍在0-1,越接近1表示二者的差距越??;最大絕對誤差是越小表明像素值越接近。
3.根據(jù)權(quán)利要求1所述的一種快速分析量化效果的方法,其特征在于,所述低bit是8bit。
4.根據(jù)權(quán)利要求3所述的一種快速分析量化效果的方法,其特征在于,所述方法根據(jù)已經(jīng)收斂的全精度模型直接進行8bit模型的轉(zhuǎn)換,在轉(zhuǎn)換的過程中計算每一層32bit和8bit的余弦相似度以及絕對誤差,兩個同時作為參考察看各層量化后的情況,所述查看的過程指的就是比較每層計算得到的余弦相似度以及最大絕對誤差,如有異常,則采用以下方法及時定位開始出現(xiàn)問題的層,解決之后再依次往后進行,即
5.根據(jù)權(quán)利要求1所述的一種快速分析量化效果的方法,其特征在于,所述余弦相似度又稱為余弦相似性,是通過計算兩個向量的夾角余弦值來評估他們的相似度,余弦值越接近1,表明兩個向量的夾角越接近0度,則兩個向量越相似;在n維空間中如果有兩個向量,向量a(a1,a2,a3,....,an),向量b(b1,b2,b3,....bn),根據(jù)點積公式可得: