MacOS+AMD-eGPU深度学习环境搭建

2019-09-12 22:21发布

如果你准备入手苹果电脑,如果你还在N卡和A卡之间艰难抉择,如果你需要用苹果电脑研究深度学习,那么本文值得一读。最后给出的评测数据可以帮助你判断苹果电脑搭配外置显卡坞的性价比。

背景简介

在windows上经历过剪辑时蓝屏四次之后,决定加入MacOS阵营。2019年3月份入手了一台MacBook Pro 2018(13寸),操作系统是MacOS 10.14 mojave。 mbp2018倒是从来都没有在剪片时系统崩溃,不过每次渲染时风扇全速开动的声音也是让人颇为不满。在进行一些调研之后决定采用雷电3接口外接显卡坞。由于MacOS在10.14及以后的系统中不支持nVIDIA的显卡(N卡),到目前为止,N卡在新系统上的驱动都没有发布,所以只能选择AMD的显卡(A卡)。看到这里的朋友请注意:如果你是N卡的铁粉请不要购买苹果电脑,如果你的苹果系统是10.13及以前的并且用N卡请不要升级系统。目前市面上有好几种显卡坞,经过比较之后选择了mantiz,因为很多视频博主评测各种显卡坞之后都认为mantiz的这一款接口丰富、性价比高,还自带一个硬盘位可以扩展存储。至此,mbp2018+amd-eGPU的硬件设备齐全。有时需要开发深度学习的模型,不想另购服务器,也不打算在MacOS和Windows系统之间切换,所以只能探索在现有的设备上搭建深度学习环境。对于外置显卡加速视频剪辑的博客和视频很多,这里就不进行评测了。

AMD-Vega56-迪兰-战神显卡

mantiz显卡坞

笔记本与显卡坞一根雷电3数据线连接

设备介绍

1. MacBook Pro 2018(13寸,4个雷电3接口)

2. 处理器 2.3 GHz Intel Core i5(4核8线程)

3. 内存 16 GB 2133 MHz LPDDR3

4. 集显 Intel Iris Plus Graphics 655 1536 MB

5. 显卡坞 mantiz

6. 显卡 迪兰(Dataland)RX VEGA56 8G X-Serial战神 HBM2

电脑参数

显卡参数

显卡测试

显卡安装到显卡坞之后,接上电源,直接用那根雷电3的数据线将电脑和显卡坞连接起来,系统很快就会识别出外置显卡。

使用GeekBench 4.2.2进行跑分测试:

1. 集显+OpenCL:30766分

2. 独显Vega56+OpenCL: 135989分

3. 独显Vega56+Metal: 129096分

从以上测试数据有如下结论:

a. 外置显卡的计算性能是集显的4~5倍

b. 在在外接显卡的情况下,苹果自带的Metal比不过OpenCL。

因此在一般情况下应该选择OpenCL来进行计算,除非有文档明确说明用Metal更好。

集显+OpenCL跑分

独显Vega56+OpenCL跑分

独显Vega56+Metal跑分

深度学习环境

第一个直观的方案是:源码编译tensorflow,并使用OpenCL。最终证实该方案不可行,因为tensorflow使用OpenCL时需用到ComputeCpp这个中间件,但是ComputeCpp官网上明确表示不支持MacOS。

在网上搜寻之后,发现一个可行的方案:使用plaidml后端的keras。plaidml在github上的链接为:https://github.com/plaidml/plaidml。 根据该链接上的描述可以轻易安装上keras,并使用plaidml后端调用A卡进行计算。MacOS+AMD-eGPU的深度学习环境搭建完成。

源码安装tensorflow失败

ComputeCpp官网显示不支持MacOS

plaidml+keras调用vega56GPU计算

性能测试

在本机上安装了CPU版本的tensorflow和gpu版本的plaidml,通过改变keras的后端来测试使用Vega56的GPU和4核8线程的CPU分别来跑深度学习网络。

这里使用plaidml官网展示的例子,使用cifar数据集中的图片作为输入,运行VGG-19。

CPU与GPU耗时比较(单位:秒)

虽然并没有完全控制变量,但从性能测试的耗时来看,使用外置显卡跑深度网络的性能是使用CPU的5~7倍。

如果你选择了使用苹果的电脑,并且还有深度学习开发的需要,那么plaidml+keras是目前最好的环境搭建。关于“在MacOS上使用AMD-eGPU搭建深度学习环境”还有其他方案的朋友可以在评论区留言,或者发邮件到cnbluegeek@gmail.com

文章来源: https://www.toutiao.com/group/6735669098379739662/