在我们进行深度学习的科研任务时,我们都会遇到复杂神经网络的训练问题,这时我们都不可避免地需要一块合适的gpu服务器,我认为gpu服务器的好处有两点:一是相对而言便宜一些,虽然很多gpu服务器也是昂贵的价格,我这里推荐下极客云,这应该是我用过最便宜和稳定的服务器了,当然我现在一般用实验室的。二是gpu服务器不同于本地,大型的深度学习项目一般需要训练几天或几周才能完成,而如果训练到一半突然断电,那本地电脑就凉凉了,所以远程挂云gpu还是相当不错的。
一、ssh工具
ssh是远程连接的关键技术,选择合适好用的ssh工具也是相当关键的,我之前也用过xshell等工具。但最后我被实验室师兄推荐了一款超级好用的ssh工具:MobaXterm (官网下载地址)
推荐原因很简单:功能齐全,可视化界面优雅,文件操作方便
1. 主要功能
我一般就用Session
模块足够,可以自动记录密码,非常方便。通常我们远程访问,操作以及使用一台gpu服务器,我们一般需要:username,ip和password。username通常是root,hit或amax等等,ip则是一串数字,10.170.这样的东西,password就是密码啦,只要点击Session
模块,我们就能通过ssh添加我们需要访问的gpu主机信息,然后进入服务器即可。
输入Remote host
即可,输入形式为username@serverIP
,然后输入密码,就可以访问了,愉快地在云端gpu上进行操作。
2. 文件操作方便
文件操作一直是我一个很难整的事情,但是在这款ssh工具中,可视化效果非常好,可以直接看到gpu的所有目录信息。
还有文件的上传下载与删除等问题,虽然这些利用命令都能实现,但给出了可视化的解决方案,还是相当不错的。
二、通过ssh远程访问GPU的Jupyter Notebook
我们编写python经常会遇到jupyter notebook的格式,即ipynb,实际上这也是经常使用的机器学习训练方法,当然做工程pycharm应该更合适。这里我们讲解如何通过ssh远程访问GPU上的Jupyter Notebook,并将它在本地电脑上可视化,分为两个步骤即可。
1. 首先在远程GPU服务器的terminal上启动Jupyter Notebook的服务
在终端输入以下代码:
jupyter notebook --no-browser --port=8889
将远端的Jupyter端口设置为8889.
2. 然后在本地terminal上启动ssh,对接端口
在本地终端cmd输入以下代码:
ssh -N -f -L localhost:8888:localhost:8889 username@serverIP
-N 告诉SSH没有命令要被远程执行; -f 告诉SSH在后台执行; -L 是指定port forwarding的配置,远端端口是8889,本地的端口号的8888。
4. 最后启动本地端口,并输入指令
最后打开浏览器访问:http://localhost:8888/
如果是第一次访问,他会让你输入远程端给出的指令,即token密码,可由ssh工具终端的界面上复制粘贴获得。
输入token即可远程访问jupyter的内容了。
至于如何使用Pycharm本地训练DL代码,我更新在了专栏另一篇文章中。
阿尔法杨XDU:Pycharm通过ssh远程连接GPU服务器训练深度学习代码zhuanlan.zhihu.com三、常用ssh命令汇总
1.目录操作
cd // 前进
cd .. // 后退一级
ls // 查看当前目录下的所有目录和文件
mkdir new_dir // 新建名为"new_dir"的文件夹
pwd // 显示当前位置路径
2. 文件操作
touch a.txt // 在当前目录下新增文件a.txt
rm a.txt // 删除文件a.txt
tar -zcvf test.zip test // 文件打包,将文件夹test打包为文件包test.zip
unzip test.zip // 解压文件test.zip
mv a.txt b.txt // 将文件a.txt重命名为b.txt
mv /a /b /c // 将目录a移动到目录b下,并重新命名为目录c
未完待续...