MacBook Pro适合深度学习吗?
95 个回答
实名赞一发
不过这依然不是最优雅和安全的,jupyter notebook 是没有对敏感命令进行隔离的,比如 Python 乱码指北:一行删掉根目录 @xlzd 大佬就演示了如何一句话 rm rf *
所以最佳的食用方式是 jupyterhub/jupyterhub + jupyter-attic/dashboards_server ,然后利用官方给出的 Docker 方式进行部署, jupyterhub/jupyterhub-deploy-docke r ,这样的好处在于,每个用户的jupyter都在独立的一个 docker 容器里运行,同时它支持多种的Auth方案,也可以自定义校验,这样可以达到你想把你的台式机上的 notebook 借给别人用用也没问题的 ,随便折腾嘛。
同时最好的 Notebook 可以方便的放在 Dashboard 上展示,实现展示分离,效果良好,可以说是非常适合科研党食用了,另外 Dashboard 利用 Password.js 也实现了自定义校验和常见的 OAuth 校验。可以说是非常的清真。
另外,这些东西都可以外挂证书,改造成 https,非常实用清真,建议服用。
所以想问MacBook Pro上写深度学习代码怎么样,目前的想法是在上面写代码,然后在实验室台式机上编译运行,或者有没有其他更好的方案?
这个方案当然没问题啊。
我每天都在 MacBook Pro 上写代码,然后远程让隔壁的台式机跑程序。哪能让高贵的 MacBook Pro 去做苦力活呢!台式机装的是 Ubuntu 系统,完全不影响使用 macOS 操作系统。
而且目前主流的深度学习库基本上都是支持 Linux 的同时,也支持 macOS 的,比如 tensorflow,pytorch 等。
对了,jupyter notebook 非常好用,用它写代码的感觉基本和在本地没差别。使用方法是在台式机上跑这个命令:
jupyter notebook --ip=0.0.0.0
在 macOS 上写代码,然后在 Linux 台式机上跑代码的优点:
- 屏幕分辨率高
- 字体看起来更舒服
- 不用忍受电脑在高性能运算时的发热,噪声等问题
- macOS 支持各种软件,比如微信,截图,以及各种 Linux 上没有的软件
一些小问题:
- 需要事先将文件传输到台式机上(所以更好的方法是在台式机上下载)
- 偶尔程序崩溃了会卡显存,需要去隔壁按一下重启
不过这个方案不适合没有台式机,只打算用 MacBook Pro 跑深度学习程序的人。
既然有人说,手机也可以玩深度学习,普通电脑也都合适,我就说几点不合适的地方:
- 手机虚拟键盘不方便写代码
- 手机屏幕小,看起来比较累,而且触屏操作起来会很麻烦
- 普通 Windows 电脑没有 macOS 那么好用的终端(iTerm2),也没有对应的 Linux 命令,比如 ssh,scp
- 普通 Windows 电脑没有 UNIX 环境,比如在使用 OpenCV 的时候, macOS 和 linux 的编译方式是一样的,但是 Windows 不一样,要用 Visual Studio 编译
- 一旦离开了台式机的环境,macOS 还能够继续调试 tensorflow,pytorch 等框架的代码, 跑通了以后可以直接在台式机上完整运行,但是手机啥也干不了,Windows 电脑在某些框架上还没有支持,比如 pytorch
- 普通笔记本装 Linux 可能会有坑,比如驱动问题,装好以后不适合拿来当主力机用,比如没有微信等软件
综上,我认为买 MacBook Pro 是最合适的。
更新:
有人提到 jupyter 允许所有人连接不安全,那我就来详细说一下。
首先我这句命令只是一个允许内网其他终端连接的一个例子,它并不是错的,事实上我一直在用。在内网中如果没有其他闲杂人等连接,是非常安全的,外网用户无法连接到内网的服务器,进而黑掉服务器。除非你把实验室的台式机搬到咖啡厅连公共 WiFi,不然不用担心会被不认识的人中间人攻击。
如果按 ssh 的做法,是不能保证其他用户也能连接的。根据题主的需求,应该是实验室的设备,肯定不止一个人用,所以最安全的做法是弄一个 Let’s Encrypt 证书,然后买个域名,设置域名解析为内网 IP,以 https://服务器IP:8888 的形式访问,可以保证安全性。参考链接: Running a notebook server
事实上我的 NAS 正是这样做的,只不过使用的是阿里云证书,免费的,一年有效期,省折腾。 Let’s Encrypt 是每个月都需要续签的,需要配置自动运行的脚本。
上图就是 jupyter 使用 https 证书的样子,可以防范中间人攻击。不过话又说回来,没有人会专门去实验室门口蹭 WiFi,然后进行中间人攻击,就为了蹭到 jupyter 的密码,然后把服务器上的文件都删掉。
与其防范这个,不如平时养成良好的备份习惯,买个 nas 定期备份,毕竟机器上重要的东西就是一些代码和数据,防了中间人攻击,哪天出个 0day 照样防不住。