OpenCL Caffe:一个可跨平台的快速机器学习框架

这篇2016年的论文阐述了深度学习框架Caffe的一个新分支。更具体的说,这是一个用支持开放工业标
准的OpenCL后端取代了基于CUDA(闭源)后端的分支。代码最初存放在
https://github.com/amd/OpenCL-caffe,成熟后合并到Caffe的官方地址下https://github.com/amd/OpenCL-
caffe。

在开发一个DNN(深度神经网络)模型的时候,我们总是希望很容易的就可以把这个模型部署到不同程
序里,然后运行在不同平台下,平台诸如服务器,NVIDIA GPU,AMD GPU, ARM GPU,甚至是智能
手机或平板电脑。 然而现实却是大部分的深度学习框架,包括Caffe,都集成了CUDA的类库, 而且只
能运行在NVIDIA的GPU上,这样就大大限制了平台之间的可移植性。

由于拥有各大商业芯片厂商(Altera,AMD,Apple,ARM Holdings,Creative Technology,IBM,
Imagination Technologies,Intel,Nvidia,Qualcomm,Samsung,Vivante,Xilinx,ZiiLABS)的支持
,OpenCL有助于异构计算实现跨平台移植。为了更好的兼容多平台,OpenCL采用了在运行过程中识别
具体设备以及编译的动态机制。

OpenCL最初由Apple开发,然后交由Khronos Group接管。它可以运行在Android,FreeBSD,Linux,
MacOS,Windows等不同操作系统上。

OpenCL后端的移植及优化

Caffe框架一开始由C++和CUDA编写而成,其CUDA层负责硬件资源分配以及使用的优化,例如 CPU-GPU
的任务调度,内存管理以及数据传输等。但是由于OpenCL在硬件抽象,缓存管理,同步以及数据传输上使
用了不同于CUDA的实现,所以它的后端移植并不是一个很简单的过程。

这篇论文将OpenCL的移植过程分成两个阶段。阶段一实现了一个包括三层的的逐层移植,这三层分别是C++
机器学习接口,OpenCL封装器,以及GPU核心。逐层移植是指我们一层层的进行移植,然后每移植一层就
用其它原来的CUDA层进行验证,这样很好的保证了DNN算法的正确性和收敛性。

当完成阶段一的三层移植后,阶段二集中于性能优化。通过结合AMD的分析工具CodeXL以及OpenCL的
event和printf,我们对阶段一移植的OpenCL进行了剖析,发现了一些比较大的瓶颈。首先是在构建GPU
核心时,OpenCL 的在线编译频繁调用了clBuildProgram:以一个迭代100次的Cifar训练为例,期间竟然产
生了63次clBuildProgram调用,并占据了68%的整体时间。另外一个瓶颈就是卷积层,它占据了绝大部分的
计算时间。由于在不同层间产生了大量长窄形的不规则矩阵,BLAS(基础线性代数程序集)测试性能遭
受了很大的损失。

为避免这些情形,这篇论文提出了三种主要的优化技术。首先,利用缓存GPU核心来防止OpenCL在线编译
的过载,其次重新排布批量数据来提高数据并行化,最后就是采用多命令队列来加速任务并行化。这些优化
技术非常有效的将DNN问题集的大小同当前的OpenCL数学库映射到一起,改善了硬件资源利用率,性能提
速高达4.5倍。

测评

测评采用了AlexNet DNN模型和ImageNet数据库,分别对OpenCL后端和CUDA后端的Caffe进行了性能对比
,类库分别采用了没有优化的clBLAS和cuBLAS,以及各自优化后的clBLAS(批量并行优化)和cuDNN v2,
CUDA后端运行在NVIDIA的TitanX显卡,OpenCL后端则在AMD的R9 Fury显卡,输入为大小100的小型批数
据。

通过图三所示,经过优化的clBLAS在性能上已经可以同cuBLAS相媲美。当然,跟同样经过优化的cuDNN v2
相比,OpenCL Caffe仍然落后了一倍。但是考虑到AMD R9 Fury约560美元同NVIDIA TitanX约1000美元的
市场售价,作者认为OpenCL Coffe仍然具有非常好的性价比。

跨平台能力分析

一个显而易见的问题是,论文一直在强调OpenCL后端的可移植优势,那么文中在AMD GPU上测试的
OpenCL代码能不能直接在ARM的MALI GPU上运行呢?这是一个很好的验证实验,但是作者并没有在文中
提及。
另外,作者还提醒了一些兼容性上的小问题,“有一些生产厂商采用了不同的扩展名和关键字。例如Caffe在
GPU核心中使用了很多模板来支持不同的浮点精度,可是不同厂商的这些模板关键字并不一样,这样我们就
必须要修改代码才能让它在不同平台上运行。”

OpenCL对深度学习框架的支持还不是很完善,但正如论文所讲,它会在未来中变得更好。

 

原文:http://muratbuffalo.blogspot.com/2017/09/paper-summary-opencl-caffe-accelerating.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值