1、定義
算力的計量單位FLOPS(Floating-point operations per second),F(xiàn)LOPS表示每秒浮點的運算次數(shù)。具體使用時,F(xiàn)LOPS前面還會有一個字母常量,例如TFLOPS、PFLOPS。這個字母T、P代表次數(shù),T代表每秒一萬億次,P代表每秒一千萬億次。
除了運算次數(shù),衡量算力水平時還要看算力精度。例如,1000FLOPS的AI計算中心所提供的的算力,與1000FLOPS超級計算機提供的算力,雖然數(shù)值相同,但由于精度不同,實際算力水平也是天壤之別。
根據(jù)參與運算數(shù)據(jù)精度的不同,可把算力分為
- 雙精度浮點數(shù)(64位,F(xiàn)P64)
- 單精度浮點數(shù)(32位,F(xiàn)P32),占用4個字節(jié),共32bit位,其中1位為符號位,8位指數(shù)位,23位小數(shù)位
- 半精度浮點數(shù)(16位,F(xiàn)P16),占用2個字節(jié),共16位,其中1位為符號位,5位指數(shù)位,10位有效數(shù)字位(小數(shù)),與FP32相比,F(xiàn)P16的訪存消耗僅為1/2,也因此FP16是更適合在移動終端側進行AI計算的數(shù)據(jù)格式。
- 用5bit 表示指數(shù),10bit 表示小數(shù),占用2字節(jié);
- 8位整型數(shù)(INT8、INT4),占用1個字節(jié),INT8是一種定點計算方式,代表整數(shù)運算,一般是由浮點運算量化而來。在二進制中一個“0”或者“1”為一bit,INT8則意味著用8bit來表示一個數(shù)字。因此,雖然INT8比FP16精度低,但是數(shù)據(jù)量小、能耗低,計算速度相對更快,更符合端側運算的特點;
- 混合精度:簡單的講就是使用fp16進行乘法和存儲,只使用fp32進行加法操作,避免累加誤差;
在數(shù)據(jù)表示范圍上,F(xiàn)P32和FP16 表示的整數(shù)范圍是一樣的,小數(shù)部分表示不一樣,存在舍入誤差;FP32和FP16 表示的數(shù)據(jù)范圍不一樣,在大數(shù)據(jù)計算中,F(xiàn)P16存在溢出風險。
?
?以下為int8范圍為何是-128 至 127的解釋:
int8占1個字節(jié),1字節(jié)(byte)占8位(bit), 其中最高位代表符號位 1-負號;0-正號
那么最大數(shù)值的二進制為:
0 1 1 1 1 1 1 1
換算成10進制為 從低位到高位開始計算
0 ? ? ? 1 ? ? ? 1 ? ? ? 1 ? ? ? 1 ? ? ? 1 ? ? ? 1 ? ? ? 1
0*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
0 ? ? + 64 ? ?+ 32 ? ?+ 16 ? ?+ 8 ? ? + 4 ? ? + 2 ? ? + 1
= 127
最小數(shù)值的二進制應與最大數(shù)值相反, 10000000
換算成10進制為 從低位到高位開始計算
1???????0???????0???????0???????0???????0???????0???????0
1*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0
128???+ 0?????+ 0?????+ 0?????+ 0?????+ 0?????+ 0?????+ 0
= 128
?
其實還有一種很好理解的解釋
1.int8占1個字節(jié)(byte) 也就是8個二進制位(bit)
2.每個二進制位 可以存儲0 和 1 兩個數(shù) ,8個二進制位就有2^8 = 256種組合(可以存儲256個數(shù))
3.int8為有符號,所以正數(shù)和負數(shù)將平分256個數(shù)。256 / 2 = 128
4.負數(shù)為128個數(shù) 最小值為-128
5.正數(shù)為128個數(shù),0占一個數(shù) 最大值為+127
?
如果是uint8(8bit無符號-沒有負數(shù)) 2^8 = 256
0 占一個數(shù) ,所以最大是255
2、比較
低精度技術 (high speed reduced precision)。在training階段,梯度的更新往往是很微小的,需要相對較高的精度,一般要用到FP32以上。在inference的時候,精度要求沒有那么高,一般F16(半精度)就可以,甚至可以用INT8(8位整型),精度影響不會很大。同時低精度的模型占用空間更小了,有利于部署在嵌入式模型里面。
利用fp16 代替 fp32
優(yōu)點:
1)TensorRT的FP16與FP32相比能有接近一倍的速度提升,前提是GPU支持FP16(如最新的2070,2080,2080ti等)
2)減少顯存。
缺點:
1) 會造成溢出
3、測試
文章來源:http://www.zghlxwxcb.cn/news/detail-439596.html
參考文章:TensorRT模型轉換及部署,F(xiàn)P32/FP16/INT8精度區(qū)分_BourneA的博客-CSDN博客_tensorrt半精度文章來源地址http://www.zghlxwxcb.cn/news/detail-439596.html
到了這里,關于int8,F(xiàn)LOPS,F(xiàn)LOPs,TOPS 等具體含義的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!