爱美容
当前位置: 首页 美容百科

fpga实现人脸识别(基于FPGA加速的自动语音识别在大规模场景的应用)

时间:2023-05-31 作者: 小编 阅读量: 2 栏目名: 美容百科

当前快手AI基础设施高度依赖INTELCPU和NVIDIAGPU这两种通用计算硬件。实时流式ASR是快手自动语音识别中的核心技术之一。这次针对ASR的优化,异构组评估后决定选型FPGA,采用自研的快手定点通用推理框架和定点C模型,以达到最佳的量化、图融合及图优化的效果来为业务助力赋能。

来源:机器之心

本文约6000字,建议阅读10分钟

本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用。

典型的实时流式自动语音识别业务如语音搜索、语音输入等和用户操作相关,直接影响用户体验,最重要的性能指标是延迟,其次是并发路数。TDNN LSTM 作为一种主流的实时流式声学模型,可以实现低延迟、高并发。本文介绍了快手异构计算与 MMU 音频中心合作的针对 TDNN LSTM 声学模型的全定点推理硬件加速方案。该方案基于 FPGA,在流式 ASR 服务场景下, 高峰期平均延时减小 37.67 %,并发路数提升 7.5 倍,是 FPGA 在国内大规模数据中心语音场景落地的成功案例之一。

ASR(Automatic Speech Recognition)是自动语音识别技术。ASR 在快手有许多的应用场景,是快手 APP,直播,风控,游戏等众多业务的核心功能,不同服务场景的 ASR 技术指标需求有很大的差别。快手语音识别基本可分为如下:

  • 低延迟、实时流式 ASR:如快手 APP 语音搜索、直播间语音输入法、小快机器人、语音魔法表情、一甜相机实时字幕等;
  • 高精度、高并发、离线 ASR:如直播语音转写、聊天室语音转写、直播连麦 PK、短视频语音转写等。

实时流式业务和用户操作相关,直接影响用户体验,最重要的性能指标是延迟,其次是并发路数。实时流式ASR业务性能优化是本文介绍的目标。

背景

人工智能AI是快手短视频和直播平台的重要使能技术,同时也代表着公司的核心竞争力。当前快手AI基础设施高度依赖INTEL CPU 和NVIDIA GPU这两种通用计算硬件。受业务快速增长的驱动,快手近几年投入了大量人力和资金来扩展AI软硬件基础设施, 也积极地寻找更好的异构计算加速方案,以实现更好的用户体验,同时达到优化增量和存量的目标。

实时流式 ASR 是快手自动语音识别中的核心技术之一。许多创新的实时流式 ASR 应用在快手 APP 直播间,比如直播间的小快机器人 (语音助手) 获得 2019 年 Synced Machine Intelligence Award。现在更普及到多项服务如快手 APP 语音搜索、直播间语音输入法、语音魔法表情、一甜相机实时字幕等,如图一所示。

图一:快手实时流式 ASR 应用包含快手 APP 语音搜索、直播间语音输入法、小快机器人、语音魔法表情、一甜相机实时字幕表情等多项服务。

目前快手的流式 ASR 服务整体框架如图二所示,主要包含特征提取、声学模型(Acoustic model, AM)、包含语言模型 (Language model, LM) 的解码器,且都是在 CPU 上运行。

图二:快手流式 ASR 服务整体框架

原本的 CPU 方案耗时瓶颈明显,在该框架的处理流程中,特征提取等前处理模块的运行时间占比约为 5%~10%,声学模型为 TDNN LSTM 模型,运行时间占比约为 60%~80%,而包含语言模型的解码器部分运行时间占比约为 15%~30%。优化后的方案是将主要的耗时关键模块移至更合适的异构底层器件。其中语言模型的大小和精度相关,现有的语言模型大小超过了当前异构器件(GPU/FPGA/ASIC)的板上内存。如果想要放到异构器件的板上内存,需要缩小语言模型规模,可能会影响识别精度。为了更好的用户体验,经过评估后,语言模型的大小维持不变,解码器的部分仍然在 CPU 上处理,而声学模型的推理部分,用更合适的异构器件来替换 CPU。以 TDNN LSTM 为主结构的流式声学模型优化的关键痛点是减少延迟(Latency)、改善实时率(RTF,Real Time Factor)和提高并发数(Concurrency)。

除 CPU 外,异构底层器件可供选择的有 GPU、第三方 ASIC 芯片和 FPGA。FPGA 的特点在于延时低且可精确控制,单位算力功耗低,片上内存大。与 GPU 和 ASIC 的具体对比如表ㄧ。总结而言,FPGA 较适合于延时要求高,batch 比较小的应用场景;在 AI 领域,尤其适用于类 LSTM,Transformer Decoder, GPT2 这种模型复杂或参数需要重复调用的场景。

表ㄧ:异构器件特性比较表

快手流式声学模型是在 Kaldi 的框架上训练的。流式声学模型 TDNN LSTM 有以下几个特点:

  • LSTM 的输入 batch size 为 1
  • LSTM 的运算是串行的
  • LSTM 中的各个分支中的矩阵乘大小不一, 造成多个碎片化的矩阵乘
  • LSTM 对运算精度的要求相当高

以上模型特点本身对当前主流的 GPU/ASIC 大算力的 Tensor Core 硬件架构并不友善,使得硬件使用率 (Utilization) 低落。比如现有的流式模型在 T4 GPU 上实测 RTF 不能满足需求。

主流的 ASIC 推理卡除了以上介绍的硬件使用率 (Utilization) 问题外,还存在不支持 Kaldi 框架,定点实际只有 12bit 等问题,大概率不能满足精度需求。

综上,异构组将业务的需求抽象为在模型精度不妥协的情况下降低延迟[用户体验]、降低算力成本[TCO],同时方案要尽可能易用易部署,支持业务的框架模型。在人工智能训练和推理部署上,最前沿的做法是训练采用浮点或定点,而推理采用定点 INT8/INT16 计算,使得推理的算力需求大幅度地降低。快手的应用场景的 AI 算法和模型,对精度要求很高,第三方异构平台厂商的人工智能编译器的定点化实现较难满足需求,或是不支持我们的算法模型 。理想的异构器件平台应当是一个全定制的定点平台,通过软硬件协同设计确保精度符合业务标准。这次针对 ASR 的优化,异构组评估后决定选型 FPGA,采用自研的快手定点通用推理框架和定点 C 模型,以达到最佳的量化、图融合及图优化的效果来为业务助力赋能。

方案设计与创新

快手异构组选择了全定点推理的 FPGA 定制化方案,考虑业务场景、成本约束和算力限制,为达到最佳效果,在各个环节、各个层面针对性的解决问题和提出创新,如表二。

表二:硬件加速方案技术创新

算法层面

  • 算法层面: 图融合

完整的原始 TDNN LSTM 声学模型结构和图融合后的声学模型如图三所示。图融合和图优化是神经网络部署下比较常见的优化步骤,可以将数层 layer 融合为 1 个,降低对算力需求同时不会影响精度。透过快手通用推理框架图融合和图优化,原始模型的层数从 125 层减少到 98 层,减少了约 20%。

图三:图融合和图优化后的声学模型减少了约 20% 的层数

算法层面: 不重训的高精度模型压缩

在各个异构底层器件 (CPU/GPU/FPGA/ASIC) 中,乘加器是主要的基本运算单元之一,在相同的位宽下,实现浮点乘加器所需的计算资源大约是定点乘加器所需的 7~8 倍。从减少运算开销,功耗和增加计算密度而言,定点运算相比浮点运算有显着的优势。将原本 FP32 的模型推理改为 Int16, 如图四,保证精度可用,这意味着要为业务模型定制 TDNN LSTM 中各个算子的定点实现算法。

图四:浮点和定点量化转换

算法层面: 时序校准 LSTM

LSTM 的定点化是一个难点。一般定点化模型,先准备校准集 (calibration dataset),在校准集上做 inference,观察模型中意图量化的层的数据分布直方图作为量化的范围依据。LSTM 是有 feedback loop 的模型,参与下一时刻计算的是上一时刻数据的子集,即 c_t=F(c_t-1[0:x],其他参数 1,其他参数 2······)。在 TDNN LSTM 声学模型的定点化过程中,异构组自研推理框架创造性的使用了时序校准(Temporal Profiling) 的方法,将 c_t 和 c_t-1 两时间点视为不同的 node 以校准 (profiling) 如图五所示。

图五:时序校准

算法层面: 图同构加速 FPGA

现今主流的 NPU 架构,如图六 NVDLA 所示,针对不同的算子,拥有专用的处理引擎。好处是众多的专用处理引擎可以支持更深的流水线,易拥有良好的性能。代价是需要更多逻辑资源,造成芯片的面积和功耗更大,总体的硬件使用率 (Utilization) 相对低落,性能功耗比 (Performance Per Watt) 较差。

图六:NVIDIA NVDLA Core Block Diagram(http://nvdla.org/hw/v1/hwarch.html)

以上介绍的主流 NPU 架构并不适用于 FPGA,因为 FPGA 上的计算资源是固定的。在计算资源是固定的情况下,拥有多项专用算子的处理引擎架构,会分散计算资源,每个处理引擎得到的运算资源有限。更理想的设计是透过图同构,将多种不同的算子映射到同样的计算方式,因此,只需要设计一种专用算子的处理引擎,能将计算资源利用最大化。

除此之外,在 FPGA 性能设计上,FPGA 一般来说拥有 1~N 核 (Kernel)。每个 Kernel 上可以规划多个运算引擎(PE),每个 PE 对应一个并发数。要达到低延迟,从计算角度,每个运算引擎(PE) 的计算资源越多,计算可以越快完成。而要达到高并发,FPGA 上的 PE 数是越多越好。如何平衡低延迟和高并发,是 FPGA 加速器设计的另一大挑战。

算法层面: 图分割加速 FPGA

结合 FPGA 的 pipeline 的硬件特性,考虑尽可能的用好 FPGA 算力,异构组在对 TDNN LSTM 模型分析的基础上做了图分割(graph partitioning)。如图七所示,图分割可针对性的将模型计算量「均匀化」,在 FPGA inference 阶段的每一环的计算资源利用率更高,从而带来更好的 latency 收益。

图七: 针对 TDNN LSTM 模型的图分割(Graph partitioning)示意

系统层面

  • 可扩展性及易用性设计

针对可扩展性及易用性需求,FPGA 的设计考虑到以下几点:

  • 软件接口易用。FPGA 加速引擎以 pub 库的形式提供给业务方。接口简单,只需要 Init 和 Inference 两个函数接口即可完成 FPGA 引擎的调用。Init 接口还可支持多个不同模型的加载。
  • 零代码升级模型。通过配置文件修改模型的 layer,channel,dim 等信息,软件会自动更新模型。非常易于模型升级与部署。
  • 支持多模型任意切换。可以同时运行多个模型,也可实时任意切换模型。
  • 计算资源可配置。同一模型的 kernel 个数可配置。
  • 系统整体架构

系统整体架构如图八所示:

  • Host(调度加速引擎的代码框架)接收输入的语音数据,经过前处理,神经网络推理,和后处理过程生成识别后的文本。
  • 神经网络推理过程(黄色部分)卸载到 FPGA 加速卡上完成。
  • Host 将输入数据通过 PCIe 接口搬移到 FPGA 加速卡的设备内存中。
  • 启动 FPGA 上的 ASR Accel Engine(即 Kernel,负责执行模型计算)进行神经网络推理。
  • 将推理结果从设备内存搬移到主机内存。

图八: 系统整体架构

  • 硬件架构设计

硬件架构设计如图九所示:

  • ASR 硬件加速引擎是一个基于超长指令字 (VLIW) 的专用领域处理器,在 FPGA 加速卡上可以放多个这样的加速引擎。
  • Insruction Fetch & Decoder 单元负责指令加载与解析。
  • Scheduler 负责所有计算单元之间的调度工作。
  • Matrix Multiply Array(MMA)支持 64x32 个 16bit 定点乘累加。
  • Vector Process Unit(VPU)为向量处理单元,一个加速引擎中包括 32 个 VPU。
  • Load/Store 负责数据的加载与结果的返回。

图九: 硬件架构设计

软件层面

  • Batch 机制

FPGA 引擎中单个 Kernel(加速引擎,执行模型计算)有 32 个计算单元,可同时支持 32 个用户的数据计算。为了保证 Kernel 计算资源的利用率,需要同时计算尽可能多的用户数据。设计 batch 机制,积累用户请求,先到先算。这种调度方式可以最大限度提升 kernel 的利用率,同时减少 kernel 调度本身的开销。

  • 负载均衡

FPGA 引擎支持同时运行多个模型,不同模型的大小不同,计算量不同,如果模型与 kernel 之间的映射固化,会导致 kernel 之间负载不均衡,不能充分发挥计算资源的性能。一、Kernel 的调度采取实时分配的策略,当前的计算任务优先分配给空闲的 kernel。二、Host 根据当前模型实时切换数据空间和指令空间;Kernel 内部计算采用兼容性设计。以上两点设计可以实现负载均衡,计算资源利用率最高。

  • 基于 OpenCL 的任务调度

OpenCL(全称 Open Computing Language,开放运算语言)是一个面向异构系统通用目的的并行编程开放式标准,广泛适用于 CPU、GPU 及 FPGA 等高性能计算开发。FPGA 引擎基于 OpenCL 设计了任务队列调度系统,基于事件的任务同步机制,任务自动 Pipeline 机制,使得数据传输、kernel 计算等任务高效的并行执行。

硬件层面

  • Kernel 指令调度

自动语音识别的加速任务的关键之一在于设计面向 TDNN 和 LSTM 网络的高性能硬件加速器。考虑到设计的灵活性,快手采用了当前流行的 DSA(Domain Specific Architecture)的设计方法,并定义一组专用的指令集。

项目中的指令集架构采用了 VLIW( 超长指令字),指令的生成和调度,指令的并行,不同指令之间的数据依赖关系均通过编译器解决,大大降低了硬件设计的复杂程度。虽然 VLIW 的设计在灵活性上有所欠缺,但针对神经网络推理领域,这是一个很好的解决方案,并能达到很高的效率。

  • 底层设计优化

建立在上文所描述的指令集架构上,可以进行硬件微架构的设计和开发。在开发过程中,首先选择了 High Level Synthesis(HLS,高层次综合)技术,快速且高效的完成了硬件微架构的设计。和直接采用硬件描述语言(譬如 Verilog HDL)相比,HLS 技术在更高的抽象层次上使用 C/C的语法描述硬件行为,快速实现各种优化技术。

  • Matrix Multiply Array 中采用了 Loop Unroll 技术,将循环展开,设计了 32*64 个并行执行的乘法单元。
  • Vector Process Unit 中采用了 Loop Pipeline 技术,流水完成多种不同的计算。
  • MMA 和 VPU 之间采用了 PingPang Buffer 的设计,使得访存不被阻塞。
  • Load 模块采用 AXI 接口,对内存进行高效的读写。

通过一系列手段,采用 HLS 开发方法达到了和 Verilog 接近的效果;开发时间从 3 个月缩短到 6 周。

在此基础上,后期采用 Verilog 进行了进一步性能优化,利用计算单元倍频,逻辑资源分时共享,布局布线策略优化等技术,达到了极致性能。

方案结果与总结

方案结果

以直播间语音输入法服务为例,相比原 CPU 服务(对照组),FPGA 服务(实验组)的精度基本无损,符合业务预期。

  • 压测结果:CPU 单实例 24 路,FPGA 单实例 180 路,提升 7.5 倍。
  • 上线结果:相比原 CPU 服务,高峰期平均延时减小 37.67%,P99 延时减小 20.7%,可用性更稳定,提升了用户体验。服务总 QPS=6000 高峰时的指标对比如表 4:

表四: 实际上线性能指标对比

总结

在开发实现上,每一种异构平台的开发方式和成本都是不同的, 与通用芯片平台 GPU 和 CPU 相比,FPGA 开发代价和周期是比较高的。在本项目中,我们以算法优化为起点,在确保精度无损的前提下,透过多种算法优化和压缩流式 ASR 模型,大幅减少所需算力和内存使用。项目中最大的挑战和风险在于如何确保性能优化后能达到识别精度无损。

为降低甚至避免识别精度下降的风险,在开发上,快手异构组采取了先进的软硬件协同设计。以本项目为例,透过软硬件协同设计,Kaldi 流式 FP32 ASR 声学模型透过快手自研的模型压缩推理框架,完成模型压缩和推理精度测试。确保精度符合业务要求才开始 FPGA 设计。FPGA 上的最终结果和自研的模型压缩推理框架结果是 bit-exactness - 每一条语音的输出位元,FPGA 和推理框架都是一致的。这从根本上解决和回答了到底经过压缩后的模型在 FPGA 上是否能满足业务精度要求。在 FPGA 的设计中,透过定量分析,增加 pipleline 的深度,提高数据复用次数,减少数据写回 DDR,降低数据传输所造成的性能损失。 配合 FPGA 上的高带宽内存 (HBM) 功能,近乎达到存算一体的性能。通过图融合及图同构, 减少在 FPGA 上图计算量 30% 和简化 FPGA 内核设计,增加内核中的运算引擎 (PE)数量,支援更高的并发数。

如何提升快手 AI 基础设施效能的关键之一是先进的软硬件架构设计。在未来的 AI 算力领域,通用 / 专用 AI 硬件通用异构计算加速技术将是未来 AI 算力基础设施的首选。针对不同的业务场景充分挖掘不同 AI 器件平台的计算能力,提升存量利用效率并降低采购增量,实现降本增效和业务赋能有很重要的意义。如何通过软硬件协同优化,在通用 / 专用异构 AI 硬件上实现面向具体 AI 应用场景的 Domain Specific Acceleration 是关键的技术挑战。

团队介绍

本文来自于快手异构计算中心,快手异构计算中心的使命是为业务部门提供强大、高效的计算系统,包括 CPU、GPU、FPGA、ASIC 等异构加速平台和混合解决方案。让每一种不同类型的计算单元都可以执行自己最擅长的任务,从而达到提高性能、节省成本和节约能耗的目的。解决算力需求增长远高于计算资源算力增长的矛盾,通过定制化开发将算力限制导致的不可能变为可能,从而赋能业务。快手异构计算中心的发展目标是围绕快手核心业务打造技术护城河,引导互联网硬件行业发展。快手异构计算中心秉持 「上线、创新、深入、开放」 的价值观和快手各业务部门展开深入合作,实现降本增效、业务赋能的共同目标。

快手 MMU 音频中心语音识别组的目标是结合快手业务场景,打造业内一流的语音识别解决方案,助力快手业务发展。通过精准高效地理解平台上的语音内容,为海外、电商、风控、搜案、推荐、商业化等业务方提供基础服务。典型应用场景包括: 短视频 / 直播 ASR、自动字幕、电话客服 ASR 等。此外,通过提供更高效的交互方式,提升用户在平台的消费体验,为平台新增流量入口,应用形式包括语音搜索、直播间语音输入法、直播间小快机器人等。

    推荐阅读
  • 新手刷酸产品推荐干皮(敲详细刷酸教程)

    敲详细刷酸教程刷酸也有一段时间了今天做了个小小的总结,包含了各个阶段不同的刷酸方法~—先来说一下怎么去选酸新手——维A酸乳膏进阶——水杨酸棉片(0.5%浓度)老手——果酸(30%浓度)—如果之前没刷过酸的话,记得现。

  • 刀锋鞋适合什么人穿(刀锋鞋的原理)

    刀锋鞋适合什么人穿刀锋跑鞋当然适合跑步运动的青年人,不适合体重过大人群,刀锋跑鞋是2013年6月24日在美国波特兰发布一款结构减震跑鞋。鞋底搭载了16个由高科技聚合物制成的叶片,为跑者提供最高的纵向能量反馈。保护膝盖,减少运动消耗,延长运动时间,提高运动效率。

  • 石家庄紧急寻人通告(河北多地最新公告石家庄)

    石家庄紧急寻人通告行程轨迹公布!定州紧急提醒广大市民:2月28日0时至24时,天津市新增6例确诊病例,其中滨海新区4例、东丽区2例。截至目前,本轮疫情累计报告19例阳性感染者,均在定点医院治疗。为保障广大市民身体健康与生命

  • 2.7霸道加92号油可以吗 丰田霸道3.5可以加92号油吗

    有毒苯含量不得超过1%。是的,这款搭载奥迪新一代共轨直喷柴油发动机的A6L2.7TDI绝对值得好奇了解甚至驾驶。经过几天的试驾,这款奥迪A6L2.7TDI的总里程约为960公里,油表显示还能开100公里。从这几天试驾的操控性表现来看,奥迪A6L2.7TDI作为一款豪华行政轿车,其操控性和其他奥迪A6L一样稳健舒适。轮毂方面,A6L2.7TDI配备了与2.4款相同的7辐17英寸轮毂,轮胎尺寸完全相同。

  • 蒸2个鸡蛋要放多少水(这里有答案)

    蒸2个鸡蛋要放多少水?下面更多详细答案一起来看看吧!准备好所有材料,把两个鸡蛋放在碗中打散打匀。在鸡蛋液中加入156ml的饮用水,用筷子继续打匀。打匀后拿筛子把泡沫全部过滤掉,一定要过滤干净。盖上保鲜薄膜,防止水滴进去鸡蛋羹不平。小火蒸12分钟后,把火关掉,继续焖5分钟。五分钟后拿出来后在鸡蛋液上倒上酱油和麻油就可以开动了。

  • 简笔画少女古装美人(人物简笔画女孩可爱古装)

    少女古装美人简笔画你会画吗?儿童画第1页漫画图片简笔美女漫画人物简笔画少女古装古装漫画人物,下面来看看有没有你喜欢的简笔画少女古装美人?接下来我们一起去欣赏以下简笔画作品吧!

  • 如何让蒸蛋又嫩又滑好吃不翻车呢(蒸蛋又嫩又滑做法)

    接下来我们就一起去了解一下吧!如何让蒸蛋又嫩又滑好吃不翻车呢将鸡蛋打入碗里打散,一定要打得很散。加入温开水,边加水边搅拌,多搅拌几分钟。加入适量的盐,继续打散,用小勺撇去上面的一层泡沫不要。碗上盖上盖子,也可以用保鲜膜,蒸锅里加好水烧开,把蒸碗放入蒸锅。盖好盖子,蒸12分钟左右就好了。最后起锅后可加点葱花,芝麻油。

  • 牙膏怎么选择才是好的(如何选择牙膏)

    牙膏怎么选择才是好的试挤,质量良好的牙膏应能自然地挤出,膏体比较细腻光滑,并非正常的圆条状。在阳光反射下看细腻、光滑、洁净、无杂质和发黑现象,而质量低劣的牙膏发硬挤不出,或稍一挤膏体便大量涌出。试尝,将牙膏挤出少许试尝,质量好的牙膏香味纯正,无刺激味道。如果口感粗糙,有像沙子一样的颗粒滞留在嘴里,大多是含粗糙磨擦剂的牙膏,建议立即停用。对症选用药物牙膏,根据防蛀功效选用含氟牙膏。

  • 苹果充电器怎么保护(苹果手机如何充电才保护电池)

    苹果充电器怎么保护由于iPhone使用的是锂聚合物电池,并不存在记忆效应,因此并不需要等到手机彻底没电或者是低电量之后再充电,也就是说随时都可以充电。由于手机内还有一个充放电的计量芯片,每个月只需要完成一次完整的充放电就能够将电池进行校准。建议在充电的时候使用质量合格的充电器以及数据线,由于目前iPhone手机已经支持PD的快充协议,因此使用支持PD的快充头是能够支持快充。

  • 汽车电瓶什么情况下才换(汽车电瓶换完了)

    与电动转向泵通信才是重点发动机电脑自身可是重要部件,它要坏了,可能就打不着车了,所以咱们检查电动转向泵,这个标致3008,电动转向泵油是不缺的,通过诊断电脑我们去查找泵的电路图,搞清楚泵的供电和接地以及信号线。至此真相大明,紧固螺丝,清除故障码,试车正常。我接着说,重点在于你没换电瓶之前,都是好的,她说是的是的,这个标致3008外形时尚,平时开着也省心,我很喜欢这车,但就是换了电瓶之后就这不好,那不好了。