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