Starting Deep Learning on Mac

Starting Deep Learning on Mac

1.0 Introduction

今年购入了mbp15,也算是不用再受18寸Alienware的出门起步15斤的困扰了。但是因为我的研究方向的话是偏向于计算机视觉的。然而的话,现在最近几年的主要研究方向的话就是深度学习的方向,各种深度学习的方法遍地开花,这个也是后话了。之后的话我会写一篇文章来简单归纳总结一下我研究方向的目前基于深度学习大致的有哪些模型方法。

说到深度学习,不得不承认的一点是:Nvidia绝对是处于大幅度领先的位置的。基本上国内只要是想要去做深度学习的话,那么N卡肯定是跑不了的。可惜苹果自从显卡门之后,好像和老黄这个皮衣老汉有了深仇大恨,你强任你强,我用我AMD。这就导致一个非常尴尬的一个问题:我们的深度学习怎么用GPU加速呢?

这就到了我们现在的一个问题。目前的话到12月4日的话,我差不多彻底的把我自己的深度学习平台做好了。这里的话我主要采用的方式是:实验室服务器+MacBook Pro(外接显卡坞)的形式。这样子的话应该目前在我的研究范围内足够了。而且也是可能现在国内实验室主流的配置了。

这里的话,因为我的professor也是刚刚开始进入深度学习的领域,所以的话我帮着一起搭建了整个深度学习平台,整体的话从配置的搭配到具体的系统安装的话都是我本人负责的。这里的话我自己也把我自己组装的心得整理在这里。

2.0 选择你的深度学习服务器配置

这里,我首先需要引用一篇文章:Making a Deep Learning Server

https://waydegg.github.io/making-a-dl-server.html#making-a-dl-server

这篇文章的话可以说如果从价值来看,算是引用非常多的一篇文章了。这篇文章的作者的确写的非常的好,我在搭建我的服务器的时候有参考这篇文章的一些思路。

首先从硬件的选择来说,我们首先的话要考虑几个重要问题:

1、选择一个好的主板+CPU

2、保留未来的一定的扩展性

3、合理的选择一个适合我们任务的GPU

4、控制好合理的预算

这里的话,因为我们还要考虑到报销的问题,这里的话我们就需要合理的预算来实现我们一个和主流实验室类似的配置。这里的话其实就有一个需求摆在眼前:主板对于多GPU的支持。

这里的话我选择的是:华擎(ASRock)X470 Taichi主板(AMD X470/AM4 Socket),CPU选择的是锐龙的2700.这里的话有的人会说:你不是要追求更好的扩展性吗?这个可以支持吗?最多不是只能支持2张GPU吗?事实的确是这样子的,但是的话我们也要考虑到:我们的整体预算的话如果花费在了支持更多PCIE lane的主板和CPU上的时候,那么的话我们15k的预算可能根本没办法很好地完成我们的任务。然而我选择的这块主板,最多可以支持3张显卡,虽然可能不能够跑满所有的带宽,但是我们需要考虑一下我们目前的经济实力,这已经是我们能够买的相对最靠谱的主板CPU组合了。8核心16线程(8C16T)的CPU处理大部分不需要GPU问题的话已经是绰绰有余了。

这里的话,因为是目的很明确,为了做计算机视觉搭建的一个服务器,那么我们就需要尽可能的在GPU上面去满足我们的需求,这里的话我们参考了主要实验室的实验配置,并且通过简单的规格比较的话,计算出来了我们选择1080ti是最超值的选择。

下面的图示的话,是我们GPU选择的对比图:

到今天:2018年12月4日为止,Gtx 1080Ti可以说还是最适合我们进行计算机视觉的显卡之一。RTX显卡普遍价格非常高昂,性价比远远没有价格比来的诱人。

2.1 深度学习服务器系统搭建

这里的话,为了我们后续的跑软件,我们的ubuntu 系统是必不可缺的。在2018年12月之前,我们实验室一直采用的是Windows Ubuntu双系统的形式,但是由于机械硬盘的问题以及另一个菜鸟同学不断的要求,最后的话我们选择了单ubuntu的安装方式。这样子的话能够尽可能保证我们整个系统的稳定性。

这里的话,我大致的把安装过程归纳一下:

1、我们使用ubuntu官方的安装包进行中文版系统的安装,同时的话,注意安装的时候采用uefi的安装模式,不要采用陈旧的mbr模式。有的电脑主板可能需要disable secure boot的形式,这里的话由于主板不同,建议的话按照主板说明书进行。

2、安装完ubuntu之后,这个时候的ubuntu对于Nvidia的显卡驱动表现还是非常差的。这里的话我们就需要使用ubuntu中间的软件与更新(software and update)使用nvidia 390系列的webdriver驱动。这里的话webdriver驱动的话就是很多人需要使用复杂方法进行安装的驱动。这里的话,很多小白会有一个疑问:怎么样看我们的最终的结果是否正确,是否是我们想要的呢?这里的话,我提供给你们一个很好用的方法:在命令行中输入nvidia-smi的命令,之后的话如果提示下面的界面,那就证明已经安装成功了。

这个命令也是非常的实用。我们在平时使用的时候,包括我们平时跑模型的时候,都可以使用这个命令对我们的显卡使用状况进行查询。如果发现有占用大量的先存空间的软件,或者中断后仍然没有释放系统资源的软件,可以使用kill + pid来进行杀进程。

这里的话,有的时候可能会遇到我们对于ubuntu服务器的话,不一定想要直接进到服务器的放置的房间,而希望在远程对我们的模型进行调试,这种情况的话其实我们可以考虑使用ssh的方法,把文件push上去,然后使用命令行。

2.2 深度学习服务器软件推荐

这里的话,因为我们对于软件进行了反复的调整之后,目前看来的话我们配置一台深度学习GPU服务器的话,需要使用以下软件:

1、SSH软件:

虽然我们的ubuntu内置了ssh的话,但仅仅是能够远程连接的ssh,而不是支持把我们本地的电脑设置称为我们的ssh服务器,这里的话我们就希望能够合理的实现这个任务。这里的话我们采用的是openssh service的办法。

这里的话需要使用的命令如下:

sudo apt-get update

sudo apt-get install openssh-server

dpkg -l | grep ssh

ps -e | grep ssh

如果看到sshd那说明ssh-server已经启动了。
如果没有则可以这样启动:sudo service ssh start

最终启动好ssh服务之后,我们就可以选择使用我们自己习惯的SSH软件进行远程管理了。这里的话我后面会出一个文章,介绍一下我常用的ssh软件。

2、多任务软件

这里的话,我们本身个人在使用的时候,往往会出现这样子的一个问题:我们的ssh链接一旦断开之后,我们的整个之前在运行的程序也会断开。这里的话我们就需要使用linux下面的一个工具,使得我们的程序能够在后台进行运行。这里的话我使用的是大家常用的一个后台运行程序软件:screen

这个软件的安装非常简单:

sudo apt-get update

sudo apt-get install screen

安装完成后就ok了。使用方法也很简单。

我们传统的python执行文件的时候,使用的是python filename.py的形式运行的。我们想要让他能够在后台保持继续运行,那就只需要在前面加一个screen,变成screen python filename.py的形式就可以了。

3、Deepin Wine软件

这里的话,因为大多数的服务器采用的是单ubuntu系统,不一定有机会安装windows双系统,但是由于国内国情,很多国外的dataset无法下载。这个时候的话就需要使用windows下面的迅雷或者是百度云盘进行中继。这里的话,使用Deepin Wine的方法可以实现迅雷、百度网盘的ubuntu运行。

具体的运行方法的话可以参考下面的网址:https://www.lulinux.com/archives/1319

3.1 Deep Learning on macOS

看到这里估计很多人会感到奇怪,按照常规理论来说,deep learning 和macOS完全扯不上关系,但是为什么你又说Deep Learning on macOS呢?

这里是因为我为了进行机器学习,同时也自己做了一些功课。首先的话,mac不适合机器学习,前提是很多的机器学习算法的话并不支持macOS。这个的确是客观存在的一个问题,这一点我们没办法进行否定。但是的话,除了英伟达的话,别的各家都在很努力的进行深度学习的适配工作。目前的话,对于AMD显卡的话,tensorflow在ubuntu下面对于amd的GPU有了很好的支持。目前在macOS下面还是支持非常的羸弱,只能通过源码编译的方法实现。

目前的话,我采用的是一个非常新的方法。这个方法的话无论是在后期的实现上还是在安装的便捷性上都是非常的高的。

这里的话,我使用的一个end framework是plaidML,这个框架是由被intel收购的初创公司自己开发出来的。对于AMD显卡和macOS的支持都非常好。而且整个框架的话是作为keras的后端,未来的话其实在开发的时候可以和coreML完美结合。在终端落地的应用中非常的友好。

这里的话,我推荐在anaconda中间建立单独的空间,分别对于不同的GPU进行末端的选择。具体的话可以按照链接来:

https://github.com/plaidml/plaidml/blob/master/docs/installing.md

macOS
You need a computer listed on Apple’s compatibility list as having OpenCL 1.2 support (most machines 2011 and later).

Best practices for python include judicious usage of Virtualenv, and we certainly recommend creating one just for plaidml:

virtualenv plaidml-venv
. plaidml-venv/bin/activate
Install PlaidML with Keras:

pip install -U plaidml-keras
Next, setup PlaidML to use your preferred computing device:

plaidml-setup
PlaidML should now be installed! You can test your installation by running MobileNet in plaidbench:

pip install plaidml-keras plaidbench
plaidbench keras mobilenet

在这个之后,我们就可以使用plaidML作为keras的后端进行处理了。

这里的话,有一点需要注意,我们在进行plaidML作为Keras后端的时候,我们在import所有与keras相关的包之前,都需要先引入plaidML。

import plaidml.keras
plaidml.keras.install_backend()

简单的理解的话就是这两部分的话必须在程序的开头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值