阿里巴巴机器智能团队的三年工作总结(2)
对检测模型做全量化处理。 如上表所示,相同 backbone 网络的情况下,我们提出的 LRSSD 在减少 SSD HEAD 计算量的同时,mAP 可以稳定提升3%-4% 。从另一个角度来看,在保证检测精度不变的情况下,我们的方法可以将模型复杂度减少到原来的 50% 左右。如果再考虑到量化带来的速度加成,在相同精度下,相比原有全精度模型,我们可以获得共约 2-3 倍的真实速度提升。
上文给出了我们近 2 年内在线下智能—模型压缩领域所做的一些技术积累。归纳起来如下:
在技术探索的同时,我们也在积极的将上述技术应用到实际的业务中。在这一过程中我们发现了下列几个问题:
在本文后半部分,我们首先会针对上述的几个问题介绍我们已经做过的尝试和沉淀出的解决方案。最后,我们列出了一些实例,展示如何在具体的业务场景中应用线下智能技术,希望可以给各位同学一个更直观的认识。 训练工具 在实际业务推广过程中,我们遇到的第一个问题是易用性问题:
为了让更多的场景都可以用上我们的服务,获得 AI 的红利,我们提出了一套标准化的量化训练工具。
如上图所示,首先,我们的工具输入支持多种模型格式(TensorFlow,Caffe,Mxnet 等)。其次,我们提供了两种不同的模型量化方法,一种是支持不同任务(分类,检测,分割等)的数据依赖型压缩方法(Data Dependent Compression),适用于对数据安全要求不是很高,希望追求精度最大化的业务;另一种是数据非依赖压缩方法(Data Independent Compression),适用于对数据安全要求高,或者业务逻辑不是特别复杂的场景。 最后,在量化工作完成后,我们的工具会自动完成推理图的优化和模型加密,生成可以实际部署的模型文件。配合对应的推理加速库即可在端上运行。从易用性和数据安全性角度出发,我们推荐使用数据非依赖性的压缩方法。 目前,该套工具作为 MNN 推荐的量化工具广泛应用在阿里集团内多个线下业务场景中。 推理框架 实际中遇到的第二个问题就是真实推理速度问题,毕竟光有易用性是不够的,实打实的业务效果才是业务最想要的。这里我们使用阿里集团其他的兄弟团队提供的推理框架:
MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。目前,MNN 已经在手淘、手猫、优酷、聚划算、UC、飞猪、千牛等 20 多个 App 中使用。选用常见的深度神经网络模型 MobileNet V2 和 SqueezeNet V1.1 作为测试样本:Android 方面,以小米 6 为例,MNN 在 CPU 和 GPU 上领先业界至少 30%;iOS 方面,以 iPhone 7 为例,MNN 在 CPU 和 GPU 上领先业界至少 15%。
FPGA 上的推理框架由服务器研发团队完成。ResNet18 网络的推理时间只需要 0.174ms,目前已知业内最佳性能。在边缘计算产品 alibabaedge 上,基于硬件实现的高效算子,推理速度为边缘 GPU 的两倍。在后面,我们会结合产品形态整体的介绍这一方案。
falcon_conv 是机器智能技术团队开发的一款由 CUDA C++编写,在 Nvidia GPU 上运行的低精度卷积库,它接受 2 份低精度(INT8)张量作为输入,将卷积结果以 float/int32 数据输出,同时支持卷积后一些常规操作(scale,batchnorm,relu… )的合并。我们在单张 Tesla P4 GPU 上,对 falcon_conv 的性能与 Nvidia 官方计算库 Cudnn v7.1 做了比较,如图所示。几乎所有情况 falcon_conv 都优于 Cudnn,个别用例有高至 5 倍的提升,用例选自 RESNET 和 VGG 中耗时较多的卷积参数。 产品化 (编辑:ASP站长网) |