給AI換個「大動力小心臟」之OCR異構加速

4 人贊了文章

導語:OCR在通用文字識別等場景下有廣泛應用,基於FPGA異構加速的OCR識別相比CPU/GPU實現具有延時小、成本低的優勢。我們設計了多FPGA晶元協同的異構加速架構,能快速適配業務OCR模型變化,檢測識別整體性能為GPU P4 130%,處理延時僅為P4的1/10,CPU的1/30。

文字識別技術- OCR

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序列。

OCR加速架構

依賴於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團隊持續努力的方向。

本文轉自公眾號「騰訊架構師」


推薦閱讀:
相關文章