前言
针对远程运行深度学习程序以及其他代码调试探索了几种方法,依次介绍一下。此次用个人电脑作为服务器实验,Windows系统作为服务器还是比较麻烦的。
服务器配置要求:SSH、Conda
方式主要有以下几种:
1、远程使用jupyter
2、Pycharm远程开发
3、VSCode远程开发
远程使用jupyter
原理:在服务器上运行jupyter,开发机用ssh进行端口映射,在本地浏览器上使用远端的jupyter进行开发。
步骤
1、ssh连接服务器。
2、启动jupyter:1
2# --no-browser表示不需要寻找浏览器
jupyter notebook --no-browser --port=6666
启动后会给一个token(口令),后面用的到。
3、ssh端口映射:1
2
3
4
5
ssh -N -f -g -L 6688:localhost:6666 username@remote_ip
输入密码后,本地6688端口会完成映射。
4、登录jupyter:
浏览器通过地址localhost:6688
即可访问服务器jupyter,需要输入token或密码。
5、若要取消端口映射:
首先查看端口使用情况lsof -i:6688
,然后kill 进程ID
。
6、关闭jupyter:
直接在步骤1的连接中ctrl+c
即可关闭。
可能遇到的问题
1、步骤1连接后,需要先使用conda激活指定的环境,然后在环境下启动jupyter,否则可能发生找不到包的问题。
2、当服务器为windows系统时,可以使用Call conda.bat
代替conda
。
3、步骤1连接后,可以先cd移动到想去的目录,再在该目录下启动jupyter。
Pycharm远程开发
先说下结论:截至2022.08.16,Pycharm不支持在Windows服务器上进行远程开发。
原理:同样是基于SSH,只不过进行了封装。
步骤:
1、到Preferences | Build, Execution, Deployment | Deployment
中添加一个SFTP服务器。测试连接,该服务是可以工作的。
2、到Preferences | Project: name | Python Interpreter
中添加一个Python解释器,选择SSH解释器,添加一个SSH配置,下一步填入服务器Python解释器路径以及希望当前项目在服务器上的同步目录,示例如下:1
2
3C:\user\Apps\Anaconda\envs\DeepLearning\python.exe
C:\user\Projs\remote
这里会遇到问题,无法显示服务器文件目录:
该报错的官方issue在这里,民间也有很多反馈,目前没有解决办法。
3、虽然无法显示文件树,但可以自行填入以上两个目录,这样以后会自动开始refresh skeletons。这里会遇到最致命的问题,报错Couldn't refresh skeletons for remote interpreter failed to run generator3/__main__.py for sftp...
。尝试过删除服务器上的.pycharm_helpers
目录,重新添加python解释器,也没办法解决。怀疑是上一个issue的延续,或者是文件编码问题,因为报错的后半段会有乱码。
4、Anyway,目前无法解决,Pycharm不能使用Windows服务器远程开发。
VSCode远程开发
原理:同上
步骤
1、VSCode安装Remote-SSH、Remote-Containers插件。Remote-SSH负责建立SSH连接、Remote-Containers负责访问服务器目录。
2、安装完毕会左侧工具栏会出现图标,点击后如下:
在此新建一个SSH会话,第一次连接时的信息,会被写入根目录的.ssh/config
文件下。
3、右击服务器图标即可连接,连接成功后左下角会显示:
第一次连接成功会先在用户目录下安装vscode-server
,大概190MB,形成.vscode-server目录
。
4、此时左侧文件目录处即为远端服务器目录,可以随心所欲的编辑代码了~
5、在服务器上跑代码的话,只需要在服务器上安装对应插件即可,通常训练模型需要Python和Jupyter这两个,安装过后可以自动识别服务器上的conda环境,右上角就可以直接选内核运行了,十分方便。
6、第一次连接跑代码时,可能出现绘图不显示的问题,关闭VSCode重新打开就解决了,动图也可以正常显示,效果比直接使用jupyter远程更加好。
下面是我使用的扩展:
总结
本篇所有测试基于以下平台:
开发机:MacOS 12.5
服务器:Windows 10 Professional
VSCode:1.70.1
Pycharm Professional Edition:2021.3.3
总的来说,目前使用VSCode进行远程开发与训练效果最好。