MacOS+AMD-eGPU打造深度学习环境 | 第2期
Posted 青衣极客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MacOS+AMD-eGPU打造深度学习环境 | 第2期相关的知识,希望对你有一定的参考价值。
如果你准备入手苹果电脑,如果你还在N卡和A卡之间艰难抉择,如果你需要用苹果电脑研究深度学习,那么本文值得一读。最后给出的评测数据可以帮助你判断苹果电脑搭配外置显卡坞的性价比,以及决定是否在MacOS上运行深度学习程序。
1. 背景简介
在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的这一款接口丰富、性价比高,还自带一个硬盘位可以扩展存储。
外置显卡相比较于内置显卡肯定是存在性能损失的,毕竟雷电三接口的速度还比不上目前常用的显卡PCI-e接口。在这种情况下,越高端的显卡,损失越大,一般而言据说会有10%~20%的性能损失。考虑到显卡换代的麻烦以及供电电源的带载能力,这里选择了AMD的Vega56显卡。
至此,mbp2018+amd-eGPU的硬件设备齐全。有时需要开发深度学习的模型,不想另购服务器,也不打算在MacOS和Windows系统之间切换,所以只能探索在现有的设备上搭建深度学习环境。对于外置显卡加速视频剪辑的博客和视频很多,这里就不进行评测了。
2. 设备介绍
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. 显卡跑分测试
显卡安装到显卡坞之后,接上电源,直接用那根雷电3的数据线将电脑和显卡坞连接起来,系统很快就会识别出外置显卡。
使用GeekBench 4.2.2进行跑分测试:
1. 集显+OpenCL:30766分
2. 独显Vega56+OpenCL:135989分
3. 独显Vega56+Metal:129096分
从以上测试数据有如下结论:
a. 外置显卡的计算性能是集显的4~5倍
b. 在在外接显卡的情况下,苹果自带的Metal比不过OpenCL。
因此在一般情况下应该选择OpenCL来进行计算,除非有文档明确说明用Metal更好。
4. 深度学习环境
第一个直观的方案是:源码编译tensorflow,并使用OpenCL。最终证实该方案不可行,因为tensorflow使用OpenCL时需用到ComputeCpp这个中间件,但是ComputeCpp官网上明确表示不支持MacOS。
在网上搜寻之后,发现一个可行的方案:使用plaidml后端的keras。plaidml在github上的链接为:https://github.com/plaidml/plaidml。根据该链接上的描述可以轻易安装上keras,并使用plaidml后端调用A卡进行计算。MacOS+AMD-eGPU的深度学习环境搭建完成。
安装步骤主要包含两步:一是使用"pip3 install plaidml-keras"指令安装模块,二是使用"plaidml-setup"指令选择可用的计算设备。使用keras开发时需要设置环境变量
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
将keras 的计算后端改为plaidml,即可在外置显卡上运行keras深度学习程序。plaidml-keras在github上的网站还提供了测试的例子程序,亲测可用。
5. 性能测试
在本机上安装了CPU版本的tensorflow和gpu版本的plaidml,通过改变keras的后端来测试使用Vega56的GPU和4核8线程的CPU分别来跑深度学习网络。
这里使用plaidml官网展示的例子,使用cifar数据集中的图片作为输入,运行100次VGG-19网络的前向推理过程,所得耗时(单位:秒)数据如下:
虽然并没有完全控制变量,但从性能测试的耗时来看,使用外置显卡跑深度网络的性能是使用CPU的5~7倍。
如果你选择了使用苹果的电脑,并且还有深度学习开发的需要,那么plaidml+keras是目前最好的环境搭建。但是这里不得不指出这种方式的一些缺点。第一,plaidml-keras发布的版本并不在keras官方支持的后端引擎中,这意味着一旦程序存在bug,或许很难快速发版修复,网上解决问题的资源也较少;第二,plaidml后端与tensorflow后端之间并不能无缝切换,因为backend.py文件中提供的操作集合存在差异,这意味着已有的tensorflow后端的keras工程中,只要存在tf的底层操作,则很难顺利迁移;第三,plaidml-keras中的keras版本比目前最新的keras版本要滞后一些,这意味着新版keras的新功能和bug修复无法利用。大家可以根据自己的实际情况以及本文所描述的优缺点来选择是否使用plaidml-keras这种方式在MacOS+AMD-eGPU上开发深度学习。
本订阅号建立了一个微信群用于交流python编程和人工智能技术,欢迎感兴趣的朋友扫码加入
以上是关于MacOS+AMD-eGPU打造深度学习环境 | 第2期的主要内容,如果未能解决你的问题,请参考以下文章
youcans的深度学习 02PyTorch CPU版本安装与环境配置
youcans的深度学习 02PyTorch CPU版本安装与环境配置
[AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建