APP下载

脸书开源最佳化行动深度学习函式库QNNPACK,效能是TensorFlowLite的2倍

消息来源:baojiabao.com 作者: 发布时间:2024-04-26

报价宝综合消息脸书开源最佳化行动深度学习函式库QNNPACK,效能是TensorFlowLite的2倍

脸书宣布开源Quantized Neural Network PACKage(QNNPACK)函式库,这是一个最佳化行动人工智能的高效能核心函式库,透过QNNPACK开发者可以在行动装置进行高阶电脑视觉的任务,执行像是Mask R-CNN和DensePose这类算法,而且还能在小于100ms的时间内执行图像分类,即便在硬件规格较差的行动装置上,也能维持良好的效能。

作为前些时日释出深度学习框架PyTorch 1.0平台的一部分,脸书接着开源QNNPACK函式库以支援量化推理(Quantized Inference)。开发者只要透过Caffe2模型表示(Model Representation)就能立即使用QNNPACK。

由于行动装置的运算能力比资料中心的服务器低10到1,000倍,因此执行最先进的人工智能算法,势必需要经过诸多调整,才有可能在硬件的限制下挤出可用性。QNNPACK提供高效能卷积、反卷积以及在量化张量(Quantized Tensors)上完全连接运算的实作,而在QNNPACK出现之前,没有针对这类常见的如分组卷积或是扩张卷积等神经网络原语(Primitive),而这也使得ResNeXt、CondenseNet和ShuffleNet等研究型的模型,都并未获得充分的利用。

在两年前,脸书开始在手机中部署神经网络,而大多数的电脑视觉基础架构都建立在大型核心的卷积运算上,但缺点是需要高密度运算资源支援。Caffe2Go使用一个名为NNPACK的核心函式库,使用威诺格拉德转换或是快速傅立叶转换,以实现渐进快速卷积算法,而这比起原本的实作,少了数倍的乘积累加运算,减少运算的程度脸书举例,能够让3x3的卷积运算只比1x1卷积运算慢两倍,而非原始算法慢9倍。

但电脑视觉领域发展快速,并且新的神经网络基础架构使用的卷积算法类型,不再受惠于快速卷积算法,包括1×1卷积、分组卷积、跨旋转卷积、扩张卷积和深度卷积,由于这些算法本身运算密度就较低,低精度运算同时也减少了内存带宽的使用。

电脑视觉的神经网络在卷积和完全连接运算子上,大部分花费在推理时间上,而这些运算子和矩阵相乘密切相关,完全连接运算子和1×1卷积都可以直接对应到矩阵相乘,而且大核心的卷积也可以被分解成为im2col的内存布局转换和矩阵相乘的组合,所以卷积神经网络中的有效推理问题,其实就是矩阵相乘的实作问题,在线性代数函式库中称为GEMM。为此过脸书稍微修正了矩阵运算原语为PDOT (Panel Dot Product) 微核心,能让运算受计算限制,以实现高效能矩阵相乘。

PyTorch和其他深度学习框架通常使用浮点数来表示训练期间神经网络的权重或是神经元,但是在模型训练结束之后,浮点数以及运算变得不那麽必要,因为许多类型的模型也适用于低精度整数计算,进行推理也不会有明显的精度损失。低精度跟单精度与半精度浮点数两种相比,内存使用量减少2到4倍,而这有助于进一步将神经网络模型保存至行动装置处理器的小型快取中,并提高受限于内存带宽运算的效能,提高电力效率,并且在许多类型的硬件上,能提高运算的吞吐量。

QNNPACK使用与Android神经网络API相容的线性量化解决方案。虽然QNNPACK也是利用PDOT微核心,就像其他BLAS(Basic Linear Algebra Subprograms)函式库一样,但它更专注于8位元元素的量化张量,并为行动人工智能使用案例,带来完全不同的效能最佳化角度。大多数BLAS函式库都针对科学计算使用案例,其矩阵大至数千个双精准度浮点数元素,但是QNNPACK的输入矩阵来源使用低精度,为行动装置特化的电脑脑视觉模型,使用完全不同的维度。QNNPACK和其他GEMM实作最大的区别,就是删除了不必要的内存转换,以最佳化内存使用情况。

脸书公开QNNPACK端到端基准测试的效能表现,在量化最先进的MobileNet v2架构中,基于QNNPACK的Caffe2运算子,在各种手机上执行的速度比TensorFlow Lite快约2倍。与QNNPACK一起,脸书也同时开源了Caffe2量化MobileNet v2模型,能提供比目前精准度第一名的TensorFlow模型,还要精确1.3%的结果。

QNNPACK已经整合到了脸书各系列应用程序,并已经将其部署到了全球超过十亿的行动装置上了。接下来脸书还要强化QNNPACK的效能增强,包括在FP16格式下的低精度计算,以及利用NEON内积指令和16位元累加,让更多轻量人工智能可以在行动装置上执行。另外,脸书也希望PyTorch API能支援QNNPACK运算子,并透过扩充套件为行动开发人员提供更丰富的工具。

2018-11-01 18:34:00

相关文章