简介
在人工智能技术不断深入发展的今天,我们对于计算的性能要求越来越高。传统的计算处理多数是基于云侧的,把所有图像、音频等数据通过网络传输到云中心进行处理后将结果反馈。但是随着数据的指数式增长,依靠云侧的计算已经显现了诸多不足,例如数据处理的实时性、网络条件制约、数据安全等,因此端侧的推理则愈发重要。
在这样的背景下,网易有道AI团队自主设计研发了高性能端侧机器学习计算库——EMLL(Edge ML Library),并已在近日开源。
EMLL 为加速端侧 AI 推理而设计,提供基于端侧处理器的高性能机器学习计算库,支持fp32、fp16、int8等数据类型,已在网易有道词典笔、翻译王和超级词典等智能硬件产品的 NMT、ASR、OCR 引擎中应用,大幅提高计算性能,提升用户体验。
开源地址:https://github.com/netease-youdao/EMLL
一、端侧AI
端侧AI具有以下优势:
- 低延时
- 保证数据隐私
- 不依赖网络
端侧AI挑战:
- 处理器算力有限,远低于云端计算能力,如何满足日益复杂的端侧AI性能的需求至关重要
- 内存大小和带宽有限,对性能影响至关重要
ARM 处理器在智能设备中占主导地位,是端侧AI落地的主流平台。NPU、DSP、GPU可以提供更高的计算能力,在端侧AI上有一定的应用场景,但生态环境较差,距离成熟还需要时间。
端侧AI最耗时的计算为全连接(FC)和卷积计算,底层核心计算为矩阵乘,底层计算库的性能对端侧AI能否落地起决定性作用。
二、ARM第三方BLAS库
Eigen
线性代数运算的 C++ 模板库,矩阵的运算可直接用符号做。
OpenBLAS
由中科院计算所维护的一个开源的高性能 BLAS 库,基于Kazushige Goto 的 GotoBLAS,支持 Fortran BLAS 和 CBLAS 接口调用。
ARM Compute Library
ARM 官方推出的计算库,支持 AI 的常见运算,其中矩阵乘法运算以模型推理层的形式封装,需要先初始化后才能调用。
表1-各ARM blas库矩阵乘法特点: