深度学习炼丹炉打造方法多种多样,这里总结一下比较常用的打造方法;有些是别人的好方子,同样也借鉴过来作为参考。(这里总结的不全,但是一般也够用了)
其中本地安装指的是本地带有显卡的台式主机或者笔记本,远程安装特指云端需要远程连接的服务器;以上两种情况都各包含三种安装方式:直接安装、Anaconda安装、Docker安装。
直接安装的意思就是直接将框架装在系统的 python 的 warper 下,最常用的就是 sudo pip install xxx 命令,这样每次进python环境只要 import xxx 就好了,操作简单;
如果你是本地环境,说明这台机器是你自己独占的,sudo 权限也是有的,这种方法尚可用,但是不太推荐,尤其是炼丹你不可能就只有一味药材,意味着剩下的库你都得手动安装。
如果是远程服务器,那基本意味着你没有 sudo 权限;或者你就算有,按这种方法装很可能你今天用的好好的,明天别人装了个其他东西,你再跑你的代码就凉了,so 建议直接放弃这种方法。
Anaconda安装最方便的就是它本身是一个包管理器,直接用里面的 python 作为代码的 interpreter 也是可以的,安装框架也是直接 pip install xxx 简单方便(这里不需要sudo,库是安装到anaconda的管理包目录下的);
但是最优秀的是它可以建立很多环境,比如机器上想来个 tensorflow 来个 pytorch 再来个 mxnet,只要先各自 conda create tensorflow/pytorch…等等 python=version号,然后安装各自对应的框架就可以了;而且名字啥的都可以随便取,一个框架装好几个版本也行,每次用哪个之前就 conda activate xxx 或者 source activate xxx 就行,安装好了之后配合 pycharm 设定一下工程的python interpreter就能用,另外看哪个不爽直接进 anaconda 的 envs 下面把对应的文件夹 rm -rf 掉就完了,比较省事。
这里本地安装就是直接在本机上先装个 anaconda,创建好环境后装好框架,然后再下个 pycharm(社区版的就可以),打开 project 后设置下 python 的 interpreter 是你刚刚 anaconda envs 下面的 python 就可以了。
这里远程安装也差不多,先在服务器上装个 anaconda 创建环境装框架,然后在自己笔记本上装 pycharm (emmmmm 这里社区版的不支持ssh,要下个pro版的),然后设置下 interpreter 选 ssh 定位到服务器的 anaconda envs 下面的 python 就行,另外设置下 deployment 把本地代码部署到服务器,对应目录映射关系做好,这样就可以跑调试代码了。
另外远程安装有个问题是因为框架是在远端跑的,图我咋看、我想出图啊,跑完了 loss 啥的不画个图怎么搞?那ssh就必须要 -X 了!
这里放个解决方法,亲测能用。
PyCharm使用远程Python解释器并用matplotlib绘图的方法
Docker对一般的调参侠来说就稍微有点高端了,虽然说熟了之后敲的命令种类不会超过30种,但是终归还是有学习成本的不是。不过现在公司里有运维的话大都会用 docker 了,有条件的话还是建议学习一个,一次搞定终身解放,很多部署都是直接连 代码 + 环境 一起打包一个镜像出去就完事了,如果对面还用不起来只能说明太菜。
docker 本地安装呢,很多丹师已经写了很多不错的文章了,这里直接给几篇
深度学习环境配置docker+pycharm+GPU
Docker深度学习环境篇第二弹:PyCharm + Docker + GPUs = Everything you need for DL development
docker 远程安装。。。,因为我自己是 远端服务器 + mac,所以之前找过这种配置的方法,看到靠谱的暂时也就下面这个
PyCharm+Docker:打造最舒适的深度学习炼丹炉
但是可能是我嫌麻烦或者是尝试失败?反正没有弄成功,后来我自己一直都在用远程 Anaconda 的方法了。
另外这里的 pycharm 也要装 pro 版的,因为社区版的同样不支持 docker。
以上,说的都是现在比较流行的框架,都可以直接 pip 或者 conda install 的,安装比较简单;但是像 Caffe 这种年代稍微长远需要自行编译源码的,就稍微麻烦点了;总之还是不建议直接安装方式,下个 Anaconda 自己慢慢搞或者自己不想搞了直接 docker 去拉别人的镜像也行;
老早之前在 mac 上编译过一次 cpu 版本的 Caffe,总有问题,后来放弃直接 docker 拉别人搞的 pycharm 里面设置下 interpreter 也挺好用的(有个坑是一定要设置一下什么环境变量好像是caffe_path)
简单总结了下个人或者实验室小团队的丹炉打造方法,祝大家炼得好丹!