英文请见:https://community.arm.com/graphics/b/blog/posts/announcing-the-compute-library-17-6
从我们在3月14日公布了Compute Library以来,还没有过多久。 今天,我们很高兴地发布Compute Library的第二个公开版本,它增加了许多新功能,以加速基于ARM Cortex-A CPU和ARM Mali GPU的计算机视觉和机器学习。
我们还将与大家分享我们对未来的一些最直接的计划。
这个新版本中包含什么?
Compute Library开发的第一步,是建立针对图像处理、计算机视觉和机器学习常用的重要底层函数集,让这些函数在ARM处理器上是可移植和高性能的。 我们的目标是缩短上市时间,使开发商和制造商能够专注于更高层次的应用场景和差异化,而不是重新实现常见功能。在上个季度,我们的团队不断为Compute Library开发新功能。 同时我们还扩展了适用的目标平台,以及一整套测试集合,来帮助我们提高在现实应用场景中的性能,并增加可靠性。 当然,我们还修复了一些错误,并对关键的功能函数进行了进一步优化。 如果你对这里的细节很感兴趣,这是我们的changelog.
开发商和合作伙伴的决定了我们各项工作的优先级,总而言之,上个季度我们关注的重点是:
机器学习现在非常热门,在之前服务器和大数据曾经是热点。但现在很清楚,移动设备是事实上新的机器学习平台。 除了在客户端上运行推理(inference)之外,长期以来也有很好的讨论是在设备上进行训练。在设备上进行机器学习可以更快地获得结果,使用更好的数据,甚至可以在不需要连接到网络的情况下完成某些任务。客户端的训练也可以增强安全性:如果您的语音数据,图片和位置信息不会离开手机,则无法被截获。机器学习是现在真正热门的领域,设备制造商希望能为其产品和寻求创新的开发人员增加附加值。因此,我们的开发重点已经迁移到机器学习原语。
低精度运算。当我们最初开发Compute Library时,我们只针对GPU,因此我们的初始实现被设定为FP32操作。随着开发人员和合作伙伴获得更多的知识和经验,大家逐渐明白机器学习可以用更低的精度工作以提高性能。在某些情况下,16位甚至8位定点或整数就足够了。其他人也同意这一点,关于这个话题的一些很好的读物包括Peter Warden的量化博客(链接)以及SqueezeNet (这里只使用6bits的权重就实现了和AlexNet相同的精度)。受此启发,我们开始把关键函数移植到低精度。在此版本中,我们已经为各种基于NEON的机器学习kernel添加了8位带符号定点数(QS8)的支持。此外,我们的几个合作伙伴也已经表示,对一些关键的图像处理功能(如图像分割),使用低于32位的精度会更高效,但使用8位和定点数又会导致结果精确度受损,因此16位浮点数(FP16)是最佳选择。所以,我们投入资源把关键函数移植到FP16。
以下功能现在支持CPU上的8bit运算:
子张量 (Sub tensors)。 我们添加到Compute Library中的另一个有用的功能是支持子张量,它允许将张量创建为更大张量的子集。主要原因是AlexNet,您可以看到处理流程在第一层之后分为两路,并在最后再次汇集。 通过使用子张量,我们可以进行数据拆分和汇集而不用进行数据拷贝。这对计算机视觉也是有用的,如果您只想处理图像的一部分而不拷贝整幅图。
梯度直方图(HOG)是一种用于确定图像内部形状的密集特征提取算法。 它通常与分类器一起使用,例如SVM(Support Vector Machine),并且是开发人员的普遍需求。Compute Library已经支持了基于NEON / CPU的HOG,现在我们通过添加以下函数来提供基于OpenCL / GPU的支持:
还有一个HOG的组件不适于并行化,因此我们提供了一个纯净版的C ++ Kernel:
复杂负载。 我们对复杂负载和网络的分析工作,例如对Google Inception,Resnet 和Facebook DeepFace 的分析,也使我们能够定位一些机器学习更进一步的优化点,所以我们将以下功能添加到了Compute Library,并提供OpenCL / GPU和NEON / CPU两种版本:
我们还添加了用户在加载网络时重新调整权重的选项,以便此步骤可以在网络执行之前进行。 在某些情况下,这可以提高性能:
另外,我们还提供的新的NEON kernel和函数:
运行时调度器。Compute library包括一个基本的调度器组件,可用于使NEON代码执行分布在多个CPU内核上(通过使用多线程)。运行时的主要目的(这仅是一个基本的例子)是:级联kernel以实现复杂的功能(例如:HOG / SVM,Canny edge等),内存管理和多线程。 在此版本中,我们改进了调度器的一些功能、接口以及对OpenMP的支持。
广泛应用
计算机视觉和机器学习是热门话题,我们预计Compute Library的发布会有很好的吸引力,但仍然为其迅速的广泛应用感到惊讶!
一些数字:
自推出以来,大量的ARM合作伙伴一直在评估或利用Compute Library进行开发。下面是其中一些厂商:
这些厂商列表突出显示了Compute Library的广泛适用性,因为它已被各种细分市场的合作伙伴,从初创企业到大型技术企业到整个供应链,以及各种垂直行业所使用。 Compute Library的使用启动了几个新的项目:PerceptIn是一个在ARM Accelerator中孵化的开发下一代机器人平台的中国初创公司,最近宣布了其使用ARM Compute Library来使能嵌入式深度学习推理机的案例研究。阅读Evens Pan的博客可以了解更多细节。
Open AI实验室是ARM和ThunderSoft的合资公司,一直致力于移植Caffe开放源代码框架,以利用Compute Library加速原语的优势 ,其结果已经发布在 CaffeOnACL项目中。 我们预计这一努力将最终合并进入Caffe上游分支。
刚刚开始?
想了解Compute Library更多? 我可以推荐来自Gian Marco Iodice的介绍博客,他介绍了如何在Raspberry Pi上使用Compute Library
我们最近还发布了一个网络研讨会,讨论一些使用Compute Library的计算机视觉和机器学习优化用例,在这里。
下一步是什么
我们努力每季度发布一次新版本。 下一个版本预定于2017年9月下旬。
下个季度的重点领域是: