去年,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 由于优化不完整,和已经进行过较彻底优化的机器学习库 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 一周热闻盘点
Hub解封,“开放知识”有多远?
埃尔巴金(Alexandra Elbakya)发文的9月5日,也是Sci-Hub网站成立的十周年纪念。埃尔巴金还表示,...(240)人阅读时间:2021-09-13六人竞赛抢答器的电路设计详细论文资料
六人竞赛抢答器的电路设计详细论文资料免费下载,电子发烧友网站提供各种电子电路,电路图...(251)人阅读时间:2021-09-13代写高校教学论文与科研关系的浅析
论文关键词:非研究型大学 教学 科研 论文摘要:针对高校,主要指非研究型大学的过度重科...(232)人阅读时间:2021-09-13怎样找到专业代写发表教学论文的机构
教学论文就是讨论和研究有关教学问题的文章,发表教学论文也是教师评职称的必要条件。在...(213)人阅读时间:2021-09-13找人代写数学教学论文(成功经验)
由于很多数学老师忙于平时的生活和工作,没有时间完成论文写作,找人代写论文变成了很好...(246)人阅读时间:2021-09-13