首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Compute Library 17.6 发布

Compute Library 17.6 发布

从我们在3月14日公布了Compute Library以来,还没有过多久。 今天,我们很高兴地发布Compute Library的第二个公开版本,它增加了许多新功能,以加速基于ARM Cortex-A CPU和ARM Mali GPU的计算机视觉和机器学习。
我们还将与大家分享我们对未来的一些最直接的计划。

这个新版本中包含什么?
Compute Library开发的第一步,是建立针对图像处理、计算机视觉和机器学习常用的重要底层函数集,让这些函数在ARM处理器上是可移植和高性能的。 我们的目标是缩短上市时间,使开发商和制造商能够专注于更高层次的应用场景和差异化,而不是重新实现常见功能。在上个季度,我们的团队不断为Compute Library开发新功能。 同时我们还扩展了适用的目标平台,以及一整套测试集合,来帮助我们提高在现实应用场景中的性能,并增加可靠性。 当然,我们还修复了一些错误,并对关键的功能函数进行了进一步优化。 如果你对这里的细节很感兴趣,这是我们的.
开发商和合作伙伴的决定了我们各项工作的优先级,总而言之,上个季度我们关注的重点是:
  • 机器学习
  • 低精度运算
  • 子张量 (Sub-tensor)
  • 梯度直方图(HOG)
  • 优化复杂的实际场景负载和主流网络中会用到的主要函数

机器学习现在非常热门,在之前服务器和大数据曾经是热点。但现在很清楚,移动设备是事实上新的机器学习平台。 除了在客户端上运行推理(inference)之外,长期以来也有很好的讨论是在设备上进行训练。在设备上进行机器学习可以更快地获得结果,使用更好的数据,甚至可以在不需要连接到网络的情况下完成某些任务。客户端的训练也可以增强安全性:如果您的语音数据,图片和位置信息不会离开手机,则无法被截获。机器学习是现在真正热门的领域,设备制造商希望能为其产品和寻求创新的开发人员增加附加值。因此,我们的开发重点已经迁移到机器学习原语。

低精度运算。当我们最初开发Compute Library时,我们只针对GPU,因此我们的初始实现被设定为FP32操作。随着开发人员和合作伙伴获得更多的知识和经验,大家逐渐明白机器学习可以用更低的精度工作以提高性能。在某些情况下,16位甚至8位定点或整数就足够了。其他人也同意这一点,关于这个话题的一些很好的读物包括Peter Warden的量化博客()以及 (这里只使用6bits的权重就实现了和AlexNet相同的精度)。受此启发,我们开始把关键函数移植到低精度。在此版本中,我们已经为各种基于NEON的机器学习kernel添加了8位带符号定点数(QS8)的支持。此外,我们的几个合作伙伴也已经表示,对一些关键的图像处理功能(如图像分割),使用低于32位的精度会更高效,但使用8位和定点数又会导致结果精确度受损,因此16位浮点数(FP16)是最佳选择。所以,我们投入资源把关键函数移植到FP16。
以下功能现在支持CPU上的8bit运算:
  • 激活层Activation Layer
  • 批量归一化层Batch normalization layer
  • 卷积层Convolution Layer
  • 池化层Pooling Layer
  • 柔性最大层Soft max Layer
  • 全连接层Fully connected layer
  • 归一化Normalization

子张量 Sub tensors。 我们添加到Compute Library中的另一个有用的功能是支持子张量,它允许将张量创建为更大张量的子集。主要原因是AlexNet,您可以看到处理流程在第一层之后分为两路,并在最后再次汇集。 通过使用子张量,我们可以进行数据拆分和汇集而不用进行数据拷贝。这对计算机视觉也是有用的,如果您只想处理图像的一部分而不拷贝整幅图。

梯度直方图(HOG是一种用于确定图像内部形状的密集特征提取算法。 它通常与分类器一起使用,例如SVM(Support Vector Machine),并且是开发人员的普遍需求。Compute Library已经支持了基于NEON / CPU的HOG,现在我们通过添加以下函数来提供基于OpenCL / GPU的支持:
  • CLHOGOrientationBinningKernel
  • CLHOGBlockNormalizationKernel
  • CLHOGDetectorKernel / CLHOGDescriptor
  • CLHOGDetector
  • CLHOGGradient
  • CLHOGMultiDetection
还有一个HOG的组件不适于并行化,因此我们提供了一个纯净版的C ++ Kernel:
  • CPPDetectionWindowNonMaximaSuppressionKernel


  • CLBatchNormalizationLayerKernel / CLBatchNormalizationLayer (Resnet)
  • CLDepthConcatenateKernel / CLDepthConcatenate (Google Inception)
  • CLLocallyConnectedMatrixMultiplyKernel / CLLocallyConnectedLayer (Facebook Deep Face)
我们还添加了用户在加载网络时重新调整权重的选项,以便此步骤可以在网络执行之前进行。 在某些情况下,这可以提高性能:
  • CLWeightsReshapeKernel / CLConvolutionLayerReshapeWeights
另外,我们还提供的新的NEON kernel和函数:
  • NEDirectConvolutionLayerKernel / NEDirectConvolutionLayer

运行时调度器。Compute library包括一个基本的调度器组件,可用于使NEON代码执行分布在多个CPU内核上(通过使用多线程)。运行时的主要目的(这仅是一个基本的例子)是:级联kernel以实现复杂的功能(例如:HOG / SVM,Canny edge等),内存管理和多线程。 在此版本中,我们改进了调度器的一些功能、接口以及对OpenMP的支持。

广泛应用
计算机视觉和机器学习是热门话题,我们预计Compute Library的发布会有很好的吸引力,但仍然为其迅速的广泛应用感到惊讶!
一些数字:
  • Clone数两个月内从260+ 升到了576 (其中 420次clone是独立的) unique clones)
  • 4432 名独立的代码浏览者 (两个月前是2500+)
  • 发布有2万3千次浏览
自推出以来,大量的ARM合作伙伴一直在评估或利用Compute Library进行开发。下面是其中一些厂商:


这些厂商列表突出显示了Compute Library的广泛适用性,因为它已被各种细分市场的合作伙伴,从初创企业到大型技术企业到整个供应链,以及各种垂直行业所使用。 Compute Library的使用启动了几个新的项目:PerceptIn是一个在ARM Accelerator中孵化的开发下一代机器人平台的中国初创公司,最近宣布了其使用ARM Compute Library来使能嵌入式深度学习推理机的案例研究。阅读可以了解更多细节。
Open AI实验室是ARM和ThunderSoft的合资公司,一直致力于移植Caffe开放源代码框架,以利用Compute Library加速原语的优势 ,其结果已经发布在 CaffeOnACL项目中。 我们预计这一努力将最终合并进入Caffe上游分支。

刚刚开始?
想了解Compute Library更多? 我可以推荐来自Gian Marco Iodice的介绍博客,他介绍了如何在
我们最近还发布了一个网络研讨会,讨论一些使用Compute Library的计算机视觉和机器学习优化用例,在。

下一步是什么
我们努力每季度发布一次新版本。 下一个版本预定于2017年9月下旬。
下个季度的重点领域是:
  • 针对流行的ML框架的集成和优化(包括Google在I / O公布的新的TensorFlow Lite神经网络API - 在Dave Burke的博客中可以阅读更多内容,以及Facebook的Caffe2框架,也许还包括其他)
  • 针对复杂负载的进一步优化
  • 进一步支持低精度运算:对每个CPU和GPU原语都提供给8位定点,16位定点和16位浮点支持
  • 初步集成针对选定处理器和关键功能的CPU微架构优化
  • 针对2的初始支持,该新特性能能够提高关键ML工作负载的CPU性能(详细了解ARM-v8架构演进访问)
返回列表