网站地图

墨客学术服务平台

当前位置: 主页 > 论文发表 >

OpenCL版Caffe:高速跨平台机器学习框架

时间:2019-07-31 19:07人气:来源: 网络整理

去年,AMD Research 将 Caffe 从 CUDA 迁移到了 OpenCL 上。OpenCL 版 Caffe 虽然在性能上仍与 cuDNN 有差距,但平台兼容性好,在性价比方面优势明显。

编者语:【论文导读】将作为一个新的栏目出现在我们的公众号当中,我们将为读者带来一些优质论文内容的导读,并尽量提供论文原地址共各位读者访问。这是我们一项新的尝试,希望各位读者喜欢。

2016 年的这篇文章

?id=2909443&dl=ACM&coll=DL

展示了移植到 OpenCL 的深度学习框架 Caffe。更准确地说,这个版本的 Caffe 使用开源的标准 OpenCL 后端,代替了原本的 CUDA 后端(译者注:Caffe 原本的后端 CUDA 是闭源的)。它一开始公布在一个独立的 GitHub 仓库,之后被迁移到了 Caffe 的官方 GitHub 仓库中。

独立 GitHub 仓库:

https://github.com/amd/OpenCL-caffe

官方 GitHub 仓库:

https://github.com/BVLC/caffe/tree/opencl

开发深度神经网络模型时,我们总是希望尽量降低跨平台部署(服务器,NVIDIA 和 AMD 的显卡,甚至智能手机和平板电脑),和适配不同应用时的迁移成本。然而,包括 Caffe 在内的大多数深度学习框架都集成了 CUDA 并仅支持 NVIDIA 显卡,跨平台兼容性受到了局限。

由于各大商业芯片厂商(Altera, AMD, Apple, ARM Holdings, Creative Technology, IBM, Imagination Technologies, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx, ZiiLABS 等等)的支持,OpenCL 支持异构计算(译者注:指在同一系统中使用一种以上的处理器或内核)具有跨平台迁移的能力。为了保证平台兼容性,OpenCL 会检查特定的驱动并在运行时编译。

OpenCL 最初由 Apple 开发,之后被转给 Khronos Group,它被 Android、Linux、FreeBSD、MacOS 和 Windows 在内的很多操作系统支持。

OpenCL 的后端移植和优化

最初的 Caffe 是用 C++ 和 CUDA 写成的。Caffe 的 CUDA 层负责优化硬件资源分配和使用,比如 CPU/GPU 间任务调度、内存管理和任务传输。由于 CUDA 和 OpenCL 在设备抽象、缓存管理、同步处理和数据传输的实现上的差别,从 CUDA 到 OpenCL 后端的迁移并没有看上去那么简单。

这篇文章将向 OpenCL 移植的过程划分成两个阶段。第一阶段是 C++ 机器学习接口、OpenCL 封装器和 GPU 内核这三个层的逐层移植。逐层移植,意味着每个层会被依次移植,并在其他层都为原 CUDA 层的环境下进行单元测试,以确保深度神经网络算法的正确性和收敛性。

第一阶段完成后所有的层都已经移植到 OpenCL 下,第二阶段关注的是性能提升。通过 AMD 分析工具、CodeXL、以 printf 结合 OpenCL 事件进行信息输出等方法的性能分析显示,完成第一阶段到 OpenCL 的移植后,还存在一些大的性能瓶颈。OpenCL 的在线编译器会频繁调用 clBuildProgram 来创建 GPU 内核——训练 Cifar 数据集的 100 次迭代中,clBuildProgram 就调用了 63 次,占用总运行时间多达 68%;另一个瓶颈在于,卷积层占用了大多数计算时间。由于不同层间矩阵形状不规则(矩阵长宽比过大),BLAS 的效果相当差。

为解决上述问题,这篇文章提出了三个关键优化技术。GPU 内核使用高速缓存,可以避免 OpenCL 在线编译器负荷过高;使用批处理的数据布局方案,可以提升数据并行化;使用多个队列进行任务处理,可以提升任务并行化。这些优化技术有效地将深度神经网络问题的规模,映射到现有的 OpenCL 数学库上,通过优化硬件资源的利用率,将性能提升了 4.5 倍左右。

OpenCL版Caffe:高速跨平台机器学习框架

OpenCL 版 Caffe 由于优化不完整,和已经进行过较彻底优化的机器学习库 cuDNN 相比,目前还有 2 倍左右的性能差距。作者提出,虽然性能上存在差异,但当我们将性价比(每美元带来的性能效果)纳入考量时,OpenCL 版 Caffe 的优势就显示出来了——AMD R9 Fury 的市价大概 560 美元,而 NVIDIA TitanX 在一千美元左右。

跨平台性能分析

我们很自然地会想到另一个问题,经过了在 AMD 上的测试,OpenCL 版 Caffe 是否也能直接在 ARM 的 MALI 上工作良好呢?这方面的测试可以很好地反映 OpenCL 版 Caffe 的兼容性,然而并没有在这篇文章中提及。

不过,作者们确实注意到了兼容性方面的一些细节问题,文中提到:“特定厂商的扩展名和关键字有一些差异。例如,Caffe 使用了大量的 GPU 内核模板来支持不同的浮点精度。但不同厂家使用的模板关键字是不同的,这增加了相同代码不经修改在不同平台运行的难度。”

OpenCL 对深度学习框架的支持还不完美,但好在,就像我们在这篇文章中看到的,情况正在逐渐得到改善。

本文所讨论的论文对应的 PPT 可从此处获得:

https://github.com/TagineerDai/blog/blob/master/source/_misc/iwocl-2016-opencl-caffe.pdf

原文链接

AI 一周热闻盘点



本类导航

sitemap | sitemap