• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

emll: EMLL(Edge ML Library)为加速终端侧设备上机器学习的推理而设计,提供基于端侧 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

emll

开源软件地址:

https://gitee.com/mirrors/emll

开源软件介绍:

EMLL - 高性能端侧机器学习计算库

EMLL(Edge ML Library)为加速终端侧设备上机器学习的推理而设计,提供基于端侧处理器的高性能机器学习计算函数库。EMLL支持fp32、fp16、int8等数据类型,已在有道词典笔、翻译王和超级词典等硬件产品的机器翻译和语音识别引擎中应用,大幅降低了推理延迟。

特点

高性能

EMLL实现的矩阵乘法函数,为端侧人工智能中常见的扁平矩阵作了专门的优化,为各常见ARM处理器作了特定的优化。对于cortex-A35/A53/A55处理器,本库针对它们的流水线特点,使用了汇编级别的优化。

下面是单精度矩阵乘法的测试结果[1]

ARMv8A Cortex-A35 四线程ARMv8A Cortex-A53 四线程
结果1结果2

[1]矩阵乘法的通式为 C[MxN] = A[MxK] B[KxN];所列数据为全行主序和全列主序的最好性能。

易用性

EMLL使用的函数接口在参数设计上力求简洁直接,矩阵乘法去掉了不常用的LD*参数,矩阵和向量的传递通过指针和整数维度分别传递。本库的构建和运行不依赖第三方计算库。

扩展性

对于矩阵乘法和量化函数,EMLL 库提取了它们和架构无关的代码作为通用的宏,这些宏可以在支持新的CPU架构时大大节省所需的代码量。

EMLL 应用接口

EMLL提供基于 C 的接口,详情请见 Usage_ZH.md

函数类型函数名称函数参数
矩阵乘法data_type + "gemm"源矩阵排列顺序,各矩阵地址,M,N,K,beta,并行线程数
全连接层(单精度)"fc"src/weight/bias/output的地址,M,K,N,源矩阵排列顺序,(并行线程数)
量化"quantize_" + "symmetric"/"asymmetric" + input_type + output_type输入数组,输出数组,(输出零点值),缩放值,数组大小,输入范围
重量化"requantize_" + "symmetric/asymmetric" + "_XtoY"输入数组,输出数组,(输出零点值),输出缩放值,数组大小,输入范围
偏置"bias" + data_type被偏置的矩阵,标量偏置,平行于主方向的向量偏置,平行于次方向的向量偏置,矩阵大小

各函数支持的数据类型

处理器矩阵乘法偏置量化重量化
ARMv7a 32-bitfp32,(u)int8fp32,int32fp32 -> (u)int16/(u)int8int32 -> (u)int16/(u)int8,int16 -> (u)int8
ARMv8a 64-bitfp32,fp16,(u)int8fp32,int32fp32 -> (u)int16/(u)int8int32 -> (u)int16/(u)int8,int16 -> (u)int8

EMLL 支持在 Linux 和安卓系统上运行。

EMLL 支持用 GCC 和 Clang 编译。

展望

EMLL 将来会根据需求,增加对端侧 GPU 和 NPU 的支持,并拓展支持的算子范围(卷积、激活函数等)。

许可证

Apache 2.0

参考

Eigen: https://eigen.tuxfamily.org/

OpenBLAS: https://github.com/xianyi/OpenBLAS/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap