AIX(artificial intelligence aXellerator)是韓國(guó)SK公司為語(yǔ)音識(shí)別提供的一個(gè)解決方案,應(yīng)用于微軟的開源語(yǔ)音識(shí)別框架Kaldi。AIX使用了Xilinx的FPGA平臺(tái),充分利用了FPGA能提供的外存訪問(wèn)帶寬和DSP資源。在自動(dòng)語(yǔ)言識(shí)別(ASR)中,在性能和功耗上超過(guò)了分別超過(guò)了最領(lǐng)先的CPU 10.2倍和流行的GPU20.1倍。
1. 硬件平臺(tái)和算法介紹
AIX使用了Xilinx Kintex Ultrascale KCU1500板卡,板卡包括一個(gè)KU115芯片,4塊4GB DDR4-2400的DRAM,每塊芯片有64個(gè)DQ引腳。最大可以支持76.8GB/s的帶寬。KU115芯片資源如下:
圖1.1 KU115資源
Kaldi是一個(gè)基于C++編寫的用于語(yǔ)音識(shí)別的開源工具,它依賴于兩個(gè)外部工具庫(kù):一個(gè)是openFst,另外一個(gè)是線性計(jì)算,包括矩陣乘法,以及矩陣和向量的操作。openFst基于有限狀態(tài)轉(zhuǎn)換器算法,可以用于語(yǔ)音和語(yǔ)言識(shí)別中。所以在ASR中包含了大量的矩陣乘法運(yùn)算。AIX主要的目的就是加速這些矩陣乘法運(yùn)算。
圖1.2 Kaldi庫(kù)
一個(gè)基本的語(yǔ)音識(shí)別算法過(guò)程如下:首先采集人的語(yǔ)音信號(hào),將語(yǔ)音信號(hào)分割成一段段向量,每個(gè)向量會(huì)有一些重疊。將每段語(yǔ)音信號(hào)經(jīng)過(guò)FFT等操作,轉(zhuǎn)換為MFCC或者倒譜,實(shí)際上就是做了一些向量的轉(zhuǎn)換操作。MFCC或者倒譜的表達(dá)能更好的提取語(yǔ)音特征。在論文中每個(gè)向量長(zhǎng)度為120。為了能夠表現(xiàn)不同向量之間的關(guān)系,將每個(gè)Ci向量最近鄰的2n個(gè)向量組合為一個(gè)整體,然后送到MLP進(jìn)行運(yùn)算。通過(guò)MLP提取特征,在進(jìn)行HMM操作進(jìn)行分類處理。AIX就是加速M(fèi)LP這部分操作,因?yàn)檫@部分占據(jù)了整個(gè)算法的大部分運(yùn)算,涉及到大量矩陣運(yùn)算。
圖1.3 ASR算法過(guò)程
2. DNN硬件架構(gòu)
圖2.1 AIX硬件架構(gòu)
在KU115上,AIX由兩個(gè)核組成,每個(gè)核的結(jié)構(gòu)是一樣的。這兩個(gè)核分別分布在芯片的兩個(gè)die上。每個(gè)核使用兩個(gè)DDR4,每個(gè)提供38.4GB/s的帶寬。核心計(jì)算單元是脈動(dòng)陣列結(jié)構(gòu),大小為64x40,總共使用了2560個(gè)DSP。語(yǔ)音向量從脈動(dòng)陣列左側(cè)進(jìn)入,權(quán)重?cái)?shù)據(jù)從上邊脈動(dòng)進(jìn)入,然后在每個(gè)DSP進(jìn)行乘法,每個(gè)DSP還進(jìn)行累加。最后可以輸出一個(gè)64X40大小的矩陣。因此進(jìn)入的語(yǔ)音向量,每次在緩存中獲得了40個(gè)120的語(yǔ)音向量后,進(jìn)行轉(zhuǎn)置操作,得到120X40的向量組合,然后脈動(dòng)送入陣列。完成矩陣乘法。這種算法在之前的文章《在DNN中FPGA都做了什么?》有詳細(xì)描述。這對(duì)語(yǔ)音向量的帶寬要求是一個(gè)FPGA時(shí)鐘周期40x16bit,權(quán)重為64x16bit。64的選擇可以適配DDR的帶寬38.4GB/s。這樣既充分利用了DSP資源,也更好的利用了DDR帶寬。這種方案適合處理矩陣乘矩陣,但是對(duì)于矩陣乘向量的DSP利用率就會(huì)很低了。因?yàn)闄?quán)重的IO帶寬較低。
圖2.2 矩陣x矩陣計(jì)算陣列
這個(gè)板卡是通過(guò)PCIE和主機(jī)連接,主機(jī)完成DNN之外的HMM,decoder等操作。開始主機(jī)通過(guò)PCIE將一定量的權(quán)重存儲(chǔ)到板卡的DDR中,然后AIX主動(dòng)去獲取權(quán)重?cái)?shù)據(jù)。權(quán)重?cái)?shù)據(jù)是不斷被復(fù)用的,因此初始時(shí)刻被加載到DDR中以后,就不需要再加載權(quán)重了。除非權(quán)重很多超過(guò)了DDR的存儲(chǔ)空間。主要更新的是語(yǔ)音向量,需要通過(guò)PCIE不斷下載到片上。當(dāng)片上向量隊(duì)列存儲(chǔ)了40個(gè)后,就可以進(jìn)行轉(zhuǎn)置送到脈動(dòng)陣列進(jìn)行運(yùn)算。
對(duì)于網(wǎng)絡(luò)中的其他操作,比如sigmoid,tangent,leakyRelu等,都是通過(guò)查找表完成的。查找表的方式可以更靈活的用于這些雜七雜八的運(yùn)算。這些運(yùn)算數(shù)學(xué)公式復(fù)雜,直接計(jì)算會(huì)耗費(fèi)很多邏輯,不如查找表簡(jiǎn)潔。缺點(diǎn)就是需要較大的存儲(chǔ)空間,空間是和數(shù)據(jù)精度有關(guān)的,精度越高消耗存儲(chǔ)空間越大。
3. 軟件架構(gòu)
為了能夠?qū)IX更好的融入到基于Kaldi的ASR計(jì)算中,需要很好的和數(shù)據(jù)中心的軟件端進(jìn)行匹配。因此提出三種軟件模型來(lái)解決這個(gè)問(wèn)題。
一個(gè)模型用于對(duì)AIX的配置,即在AIX計(jì)算前,需要準(zhǔn)備好權(quán)重和偏置數(shù)據(jù)。這種準(zhǔn)備工作是由NN converter軟件來(lái)做的,主要就是判定一個(gè)網(wǎng)絡(luò)中哪些層可以被AIX加速,然后將這部分權(quán)重發(fā)送給AIX。
另外一個(gè)是監(jiān)測(cè)模型。為了保證AIX的穩(wěn)定運(yùn)行,需要進(jìn)行大量的邊緣條件測(cè)試,因此監(jiān)測(cè)軟件來(lái)檢測(cè)一些異常情況。主要包括:功耗,溫度,資源利用,設(shè)備狀態(tài)。
最后一個(gè)是用于處理語(yǔ)音向量的軟件。為了保證實(shí)時(shí)處理語(yǔ)音數(shù)據(jù),每8個(gè)語(yǔ)音向量組成一個(gè)batch,然后一起寫入AIX。為了提高脈動(dòng)陣列的利用效率,語(yǔ)音緩存盡可能收集更多向量,然后開始計(jì)算。為了減小收集時(shí)間,軟件端提供了多個(gè)服務(wù)通道,同時(shí)準(zhǔn)備語(yǔ)音向量,并向AIX發(fā)送或者接收來(lái)自AIX的結(jié)果。由于處理不同語(yǔ)音向量是有順序的,為了保證結(jié)果也能夠保持順序不變。每個(gè)通道增加了鎖機(jī)制來(lái)保持向量的發(fā)送和接收順序。當(dāng)需要向AIX寫的時(shí)候,就產(chǎn)生一個(gè)有wlock的寫進(jìn)程,直到wlock被解鎖,這個(gè)進(jìn)程才開始往AIX發(fā)送數(shù)據(jù)。同理讀進(jìn)程也有一個(gè)rlock。這些鎖會(huì)保證進(jìn)程間的依賴和同步。
圖3.1 軟件架構(gòu)
圖3.2 NN converter的作用
4. 結(jié)果
現(xiàn)在看資源利用率:
圖4.1 資源利用率
AIX的性能和Intel的E5-2620和Nvidia的P100 GPU進(jìn)行了對(duì)比。同時(shí)考慮上功耗和語(yǔ)音識(shí)別時(shí)間,AIX都超過(guò)了CPU和GPU。
圖4.2 AIX和CPU以及GPU的性能對(duì)比
總結(jié)
AIX采用了脈動(dòng)陣列的架構(gòu),充分利用了矩陣乘法中數(shù)據(jù)的復(fù)用率。能夠最大限度利用內(nèi)存帶寬來(lái)獲得最大性能。
文獻(xiàn)
1. Minwook Ahn, S.J.H., Wonsub Kim, Seungrok Jung, Yeonbok Lee, Mookyoung Chung, Woohyung Lim, Youngjoon Kim, AIX A high performance and energy ef?cient inference accelerator on FPGA for a DNN-based commercial speech recognition. FPGA, 2019.
編輯:hfy
-
加速器
+關(guān)注
關(guān)注
2文章
800瀏覽量
37907 -
Xilinx
+關(guān)注
關(guān)注
71文章
2167瀏覽量
121574 -
語(yǔ)音識(shí)別
+關(guān)注
關(guān)注
38文章
1742瀏覽量
112692 -
AIX
+關(guān)注
關(guān)注
0文章
10瀏覽量
9858
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論