文獻閱讀(57)

  • 題目:An Energy-Efficient Sparse Deep-Neural-Network Learning Accelerator With Fine-Grained Mixed Precision of FP8–FP16
  • 時間:2019
  • 期刊:JSSC
  • 研究機構:KAIST

1 縮寫 & 引用

  • FGMP: fine-grained mixed precision
  • FF: feed forward
  • BP: back propagation
  • WG: weight gradient update
  • EMA: external memory access
  • FMA: fused multiply add
  • ILB: input load balance
  • LRF: local register file

2 abstract & introduction

之前有很多論文是 inference端的低位寬量化和稀疏性的利用,但是沒有人做訓練,因爲訓練需要浮點數運算,他把這個trick用在了DNN訓練上
本篇論文的主要貢獻有:

  1. FP8和FP16之間的混合精度,保證了精度,也能實現更高的吞吐
  2. 能利用DNN的稀疏性,進行DNN的訓練
  3. 輸入負載的平衡

正常的訓練一共有三個部分

  • FF:前向傳播
  • BP:後向傳播
  • WG:根據後向傳播的值更新權重

3 細粒度混合精度

在這裏插入圖片描述根據浮點數指數部分的值,如果在一定範圍之內,就用fp8來存儲,否則用fp16存儲,根據一個閾值來確定
實際是用“混合乘加器”,可以同時算兩個fp8或者一個fp16,內部的很多電路都是公用的,只比標準的fp16乘法器多13%的面積開銷

4 稀疏深度學習計算單元

DL core包含這幾部部分:

  • 4個PE_LINE:一個PE_LINE包含12個PE和一個本地路由器
  • 列緩衝區col-buf:存儲權重
  • 片上存儲DMEM:存儲特徵圖
  • local aggregation 單元
    在這裏插入圖片描述
  1. 一個PE_LINE有12個PE,所以一次可以完成12個乘加,輸入共享同一個輸入特徵圖像素,和12個不同的kernel對應的數相乘,得到12個對應不同output channel的部分和。
  2. 一個輸入特徵圖像素之後,再取相同一列,相同input channel,下一行的輸入特徵圖像素,權重不變,這又能產生12個部分和
  3. 假設一共有Row行,那麼就能產生12xRow個部分和,一個PE內部就需要存儲Row個部分和,之前權重一直不變
  4. 然後輸入下一個input channel,同一列,第一行的像素值,權重也要換成對應input channel的數
  5. 一共有4個PE_LINE,那麼每個PE_LINE都負責1/4的input channel,這樣如果負載不平衡的時候,四個PE_LINE之間還能平衡一點
  6. 4個PE_LINE對應位置的PE,比如說PE_LINE0、PE_LINE1、PE_LINE2、PE_LINE3的PE0的結果累計起來
    在這裏插入圖片描述

5 跳零MAC運算

跳零操作有兩個層次:

  1. 上一節說過,每個PE_LINE內部輸入特徵圖像素都是廣播到12個PE的,那麼如果輸入特徵圖像素是零,就跳過他,存着對應的index就可以
  2. 如果一個tile內部,input channel都是零,那麼對應input channel的權重也不用load了
    在這裏插入圖片描述

6 輸入負載平衡

PE_LINE之間是按照input channel維度進行切分的,而input channel之間相互獨立,可以調整input channel來平衡負載
在這裏插入圖片描述


  • 題目:LNPU: A 25.3TFLOPS/W Sparse Deep-Neural-Network Learning Processor with Fine-Grained Mixed Precision of FP8-FP16
  • 時間:2019
  • 會議:ISSCC
  • 研究機構:KAIST
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章