标题:
Compute Library 17.6 发布
[打印本页]
作者:
look_w
时间:
2018-1-24 19:18
标题:
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架构演进访问)
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0