论文导读 | OpenCL版Caffe:高速跨平台机器学习框架

2017 年 10 月 15 日 AI前线 勇于尝试的
作者|Murat Demirbas
译者|代亚暄
编辑|Vincent
去年,AMD Research 将 Caffe 从 CUDA 迁移到了 OpenCL 上。OpenCL 版 Caffe 虽然在性能上仍与 cuDNN 有差距,但平台兼容性好,在性价比方面优势明显。

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

更多精彩文章请添加微信“AI 前线”(ID:ai-front)

2016 年的这篇文章

http://dl.acm.org/citation.cfm?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 由于优化不完整,和已经进行过较彻底优化的机器学习库 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

原文链接

http://muratbuffalo.blogspot.hk/2017/09/paper-summary-opencl-caffe-accelerating.html


今日荐文

点击下方图片即可阅读

AI 一周热闻盘点


AI 时代,很多程序员都纷纷想踏入人工智能领域。作为最流行的机器学习语言,Python 可以说是入门机器学习最有效率的一门武器。为了带大家华丽转型,StuQ 推出《普通程序员转向人工智能——3 个月掌握 Python 机器学习(60 课时大课)》。这套课程可以让你全面、系统地掌握机器学习的相关知识,并能胜任机器学习中级工程师及以上的工作。特别地,本课原价 6999 元,团购价 1999 元。




登录查看更多
4

相关内容

OpenCL(Open Computing Language,开放计算语言)是一个为异构平台编写程序的框架,此异构平台可由 CPU,GPU 或其他类型的处理器组成。
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
深度神经网络模型压缩与加速综述
专知会员服务
128+阅读 · 2019年10月12日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
开源神经网络框架Caffe2全介绍
人工智能学家
3+阅读 · 2017年12月11日
6个实验教你用Torch玩转深度学习
七月在线实验室
7+阅读 · 2017年11月21日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
8+阅读 · 2019年5月20日
Arxiv
3+阅读 · 2018年5月28日
Arxiv
4+阅读 · 2015年8月25日
VIP会员
相关资讯
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
开源神经网络框架Caffe2全介绍
人工智能学家
3+阅读 · 2017年12月11日
6个实验教你用Torch玩转深度学习
七月在线实验室
7+阅读 · 2017年11月21日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Top
微信扫码咨询专知VIP会员