給AI換個“大動力小心臟”之OCR異構加速
導語:OCR在通用文字識別等場景下有廣泛應用,基於FPGA異構加速的OCR識別相比CPU/GPU實現具有延時小、成本低的優勢。我們設計了多FPGA芯片協同的異構加速架構,能快速適配業務OCR模型變化,檢測識別整體性能為GPU P4 130%,處理延時僅為P4的1/10,CPU的1/30。
OCR技術,通俗來講就是從圖像中檢測並識別字符的一種方法,在證通用文字識別、書籍電子化、自動信息采集、證照類識別等應用場景中得到了廣泛應用。通用場景的OCR因此通用場景下的OCR技術一直都是人工智能領域挑戰性極強的研究領域,不需要針對特殊場景進行定制,可以識別任意場景圖片中的文字。
通用OCR技術包含兩大關鍵技術:文本檢測和文字識別。檢測模型的作用簡單來說就是確定圖片中哪裏有字,並把有字的區域框出來。文字識別是將文本檢測box作為輸入,識別出其中的字符。
近年來深度學習逐漸被應用到音頻、視頻以及自然語言理解等時序數據建模的領域。通過深度學習的端到端學習提升Sequence Learning的效果已經成為當前研究的熱點。基本思路是CNN與RNN結合:CNN被用於提取有表征能力的圖像特征,將RNN的序列化特性引入到文本檢測,增加了文本檢測候選區域的上下文信息,可以有效地提升文本檢測任務的性能。CNN+RNN的混合網絡將文本串識別領域的效果推到了一個新的高度。
圖1:CRNN網絡結構
*上圖引用自《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》。
我們以目前應用十分廣泛的CRNN模型為例,它是DCNN和RNN的組合,可以直接從序列標簽學習,不需要詳細的標註;比標準DCNN模型包含的參數要少很多。同時CRNN在圖像特征和識別內容序列之間嚴格保序,擅長識別字分割比較困難的文字序列。
架構包括三部分:
1) 卷積層,從輸入圖像中提取特征序列,將圖像進行空間上的保序壓縮,相當於沿水平方向形成若幹切片,每個切片對應一個特征向量;
2) 循環層,預測每一幀的標簽分布;采用雙層雙向的LSTM,進一步學習上下文特征,據此得到切片對應的字符類別。
3) Transcription層,利用CTC和前向後向算法求解最優的label序列。
依賴於FPGA的可編程性、高性能以及高通信帶寬,我們設計了一個多FPGA芯片協同的異構加速架構。單一芯片針對一種類型的模型進行深度定制優化,不同芯片之間通過負載均衡以及流水化來完成整個混合模型的加速過程。
圖2:OCR加速硬件架構
FPGA 0配置為通用的CNN加速架構
FPGA 1配置為通用的LSTM加速架構
對於計算量較小的FC使用CPU進行計算,保持模型靈活性
FPGA與服務器CPU通過PCIe Gen3進行數據通信,負載均衡由CPU進行控制
FPGA間通過AURORA輕量級協議進行數據交換,數據交換延時ns級,類似不同板卡間內存共享
平臺後續升級可支持服務器間的多任務並行/流水調度
為特定的深度學習模型進行底層深度架構優化,通過架構層面上的優化來充分發揮異構加速器件的性能,達到最大的計算收益。
針對CNN以及LSTM這兩類最常用的深度學習算法,我們設計了兩種加速架構;每種架構能夠通過“指令集+基本算子”的形式,能夠較為靈活的支持各類模型變種。
3.1 CNN計算引擎
CNN模型的核心計算是Kernel在input feature map滑窗進行3D卷積計算,Kernel數據復用率高,整體計算密度大。
CNN加速器當前版本基於Xilinx Ku115芯片設計,PE計算單元由4096個工作在500MHz的MAC dsp核心構成。KU115芯片由兩個DIE對堆疊而成,加速器平行放置了兩組處理單元PE。每個PE由4組32x16=512的MAC計算DSP核心組成的XBAR構成。
計算架構設計的關鍵在於提高數據復用率來提升DSP計算效率,實現模型權重復用和各layer feature map的復用。
其基本組織框架如下圖所示:
圖3:CNN計算引擎架構
3.2 LSTM計算引擎
LSTM模型的核心是向量*矩陣及對應各gate的激活函數。權重矩陣數據量大,同時時間序列上數據存在前後依賴關系,模型中可挖掘的的計算並行度小。
LSTM加速器當前版本基於Xilinx Ku115芯片設計,PE計算單元由4096個工作在300MHz的MAC dsp核心構成。對於核心PE單元,我們將其細分為64個bank,每一個bank由64個級聯的DSP組成,利用DSP特性完成向量乘法過程中的乘累加過程。
計算架構設計的關鍵在於降低訪存消耗。在控制部分,需要控制好ROW A和Col B的數據pipeline輸入,保證計算數據之間的匹配;在PE輸出端需要把控好激活函數的並行性,保證模型計算流水線的高效性。
其基本組織框架如下圖所示:
圖4:LSTM計算引擎架構
對於使用者而言,FPGA平臺性能、開發周期以及易用性究竟如何呢?
1.性能
CNN加速平臺,峰值計算性能為4Tops,模型inference latency為GPU P4的1/10。
LSTM模型中,峰值計算性能為2.4Tops,FPGA 2us內可以完成一次核心矩陣為1024*512的計算過程(8次1*1024與1024*512向量乘矩陣及相關的激活函數)。
2.易用性
FPGA加速器對底層加速過程進行封裝,向上對加速平臺的業務方提供易用SDK。業務方調用簡單的API函數即可完成加速操作,對業務自身邏輯幾乎無任何改動。
如果線上模型需要改動,只需調用模型初始化函數,將對應的模型指令集初始化FPGA即可,加速業務可以在幾秒內進行切換。
3.硬件加速開發周期
底層CNN加速平臺以及LSTM加速平臺,架構通過模型映射指令集的方式進行加速。
對於經典模型及標準layer自研的算法變種,現有加速架構已經可以支持,可以在一天內通過編譯器實現模型對應指令集,實現部署上線;
對於自研的特殊模型,例如不對稱卷積算子或LSTM特殊結構,需要根據實際模型結構在本平臺上進行相關算子叠×××發,開發周期可縮短在一到兩周之內進行支持。
目前OCR技術在證件識別、快遞單掃描、信息安全審核等領域有著廣泛的應用。架構平臺部FPGA團隊研發的OCR硬件加速解決方案,提供低成本、實時性AI計算加速,將持續助力公司內各業務發展。
在雲端,2017年初,我們在騰訊雲首發了國內第一臺FPGA公有雲服務器,我們將會逐步把基礎AI加速能力推出到公有雲上。
AI異構加速的戰場很大很精彩,為公司內及雲上業務提供最優的解決方案是架平FPGA團隊持續努力的方向。
本文轉自公眾號“騰訊架構師”
給AI換個“大動力小心臟”之OCR異構加速