aix(artificial intelligence axellerator)是韩国sk公司为语音识别提供的一个解决方案,应用于微软的开源语音识别框架kaldi。aix使用了xilinx的fpga平台,充分利用了fpga能提供的外存访问带宽和dsp资源。在自动语言识别(asr)中,在性能和功耗上超过了分别超过了最领先的cpu 10.2倍和流行的gpu20.1倍。
1. 硬件平台和算法介绍
aix使用了xilinx kintex ultrascale kcu1500板卡,板卡包括一个ku115芯片,4块4gb ddr4-2400的dram,每块芯片有64个dq引脚。最大可以支持76.8gb/s的带宽。ku115芯片资源如下:
图1.1 ku115资源
kaldi是一个基于c++编写的用于语音识别的开源工具,它依赖于两个外部工具库:一个是openfst,另外一个是线性计算,包括矩阵乘法,以及矩阵和向量的操作。openfst基于有限状态转换器算法,可以用于语音和语言识别中。所以在asr中包含了大量的矩阵乘法运算。aix主要的目的就是加速这些矩阵乘法运算。
图1.2 kaldi库
一个基本的语音识别算法过程如下:首先采集人的语音信号,将语音信号分割成一段段向量,每个向量会有一些重叠。将每段语音信号经过fft等操作,转换为mfcc或者倒谱,实际上就是做了一些向量的转换操作。mfcc或者倒谱的表达能更好的提取语音特征。在论文中每个向量长度为120。为了能够表现不同向量之间的关系,将每个ci向量最近邻的2n个向量组合为一个整体,然后送到mlp进行运算。通过mlp提取特征,在进行hmm操作进行分类处理。aix就是加速mlp这部分操作,因为这部分占据了整个算法的大部分运算,涉及到大量矩阵运算。
图1.3 asr算法过程
2. dnn硬件架构
图2.1 aix硬件架构
在ku115上,aix由两个核组成,每个核的结构是一样的。这两个核分别分布在芯片的两个die上。每个核使用两个ddr4,每个提供38.4gb/s的带宽。核心计算单元是脉动阵列结构,大小为64x40,总共使用了2560个dsp。语音向量从脉动阵列左侧进入,权重数据从上边脉动进入,然后在每个dsp进行乘法,每个dsp还进行累加。最后可以输出一个64x40大小的矩阵。因此进入的语音向量,每次在缓存中获得了40个120的语音向量后,进行转置操作,得到120x40的向量组合,然后脉动送入阵列。完成矩阵乘法。这种算法在之前的文章《在dnn中fpga都做了什么?》有详细描述。这对语音向量的带宽要求是一个fpga时钟周期40x16bit,权重为64x16bit。64的选择可以适配ddr的带宽38.4gb/s。这样既充分利用了dsp资源,也更好的利用了ddr带宽。这种方案适合处理矩阵乘矩阵,但是对于矩阵乘向量的dsp利用率就会很低了。因为权重的io带宽较低。
图2.2 矩阵x矩阵计算阵列
这个板卡是通过pcie和主机连接,主机完成dnn之外的hmm,decoder等操作。开始主机通过pcie将一定量的权重存储到板卡的ddr中,然后aix主动去获取权重数据。权重数据是不断被复用的,因此初始时刻被加载到ddr中以后,就不需要再加载权重了。除非权重很多超过了ddr的存储空间。主要更新的是语音向量,需要通过pcie不断下载到片上。当片上向量队列存储了40个后,就可以进行转置送到脉动阵列进行运算。
对于网络中的其他操作,比如sigmoid,tangent,leakyrelu等,都是通过查找表完成的。查找表的方式可以更灵活的用于这些杂七杂八的运算。这些运算数学公式复杂,直接计算会耗费很多逻辑,不如查找表简洁。缺点就是需要较大的存储空间,空间是和数据精度有关的,精度越高消耗存储空间越大。
3. 软件架构
为了能够将aix更好的融入到基于kaldi的asr计算中,需要很好的和数据中心的软件端进行匹配。因此提出三种软件模型来解决这个问题。
一个模型用于对aix的配置,即在aix计算前,需要准备好权重和偏置数据。这种准备工作是由nn converter软件来做的,主要就是判定一个网络中哪些层可以被aix加速,然后将这部分权重发送给aix。
另外一个是监测模型。为了保证aix的稳定运行,需要进行大量的边缘条件测试,因此监测软件来检测一些异常情况。主要包括:功耗,温度,资源利用,设备状态。
最后一个是用于处理语音向量的软件。为了保证实时处理语音数据,每8个语音向量组成一个batch,然后一起写入aix。为了提高脉动阵列的利用效率,语音缓存尽可能收集更多向量,然后开始计算。为了减小收集时间,软件端提供了多个服务通道,同时准备语音向量,并向aix发送或者接收来自aix的结果。由于处理不同语音向量是有顺序的,为了保证结果也能够保持顺序不变。每个通道增加了锁机制来保持向量的发送和接收顺序。当需要向aix写的时候,就产生一个有wlock的写进程,直到wlock被解锁,这个进程才开始往aix发送数据。同理读进程也有一个rlock。这些锁会保证进程间的依赖和同步。
图3.1 软件架构
图3.2 nn converter的作用
4. 结果
现在看资源利用率:
图4.1 资源利用率
aix的性能和intel的e5-2620和nvidia的p100 gpu进行了对比。同时考虑上功耗和语音识别时间,aix都超过了cpu和gpu。
图4.2 aix和cpu以及gpu的性能对比
总结
aix采用了脉动阵列的架构,充分利用了矩阵乘法中数据的复用率。能够最大限度利用内存带宽来获得最大性能。
文献
1. minwook ahn, s.j.h., wonsub kim, seungrok jung, yeonbok lee, mookyoung chung, woohyung lim, youngjoon kim, aix a high performance and energy efficient inference accelerator on fpga for a dnn-based commercial speech recognition. fpga, 2019.
华为正式公布了四大可持续发展战略
光伏储能直流供电系统介绍 直流供电 未来可期
新手学习工业机器人,需从电工电路以及PLC编程开始学起
特斯拉Autopilot又出错?AutoPilot的安全性频频遭受质疑
智能镜子镜面显示屏,黑科技产品的代表作
基于FPGA的AIX语音识别解决方案
绕线磁环电感的电性能受到哪些因素影响
USB2.0 SD/MMC闪存读卡器单芯片的简单介绍
浅谈电子连接器的功能和结构知识
LGInnotek宣布已开发出可弯曲的3D照明 并计划积极进入高端汽车市场
vivo新品发布会:正式推出了X系列的最新旗舰手机——X23
你见过有四个管脚的LED灯吗?
iOS11推出两个Beta版本之后公测版正式发布?现在可以下载iOS11公测版系统了
简谈FPGA研发设计相关规范(企业中很实用)
工业4.0时代下的智能电网如何建设
三星Galaxy Note 21仍将发布!但不在研发Galaxy Note 22
usb标准描述符之技巧
在智慧城市里建设智能电网的四大意义
智慧无线灌溉在园林中的应用
热像仪保养维修小技巧有哪些呢