写在前面
虽然pycharm和vscode都可以使用远程服务器,但是笔者在写本文档时也属于入门深度学习的阶段,对于网上一些入门课程(跟着李沐学AI)需要跟着敲代码,并且想要显式的观看每一个函数之类的代码段的输出,因此就引出以下两个需求:
- 想要jupyter优质的交互环境
- 针对一些多卡训练课程,本地电脑的显卡资源无法满足,需要实验室的多卡环境
于是就想到了利用本地电脑远程访问实验室服务器的jupyter notebook,而因为实验室的服务器安全问题,导致如今的连接方式为公钥连接,但网上针对公钥连接的远程服务器访问其jupyter notebook的教程少之又少,因此就有了此教程
环境
- 本地电脑windows
- 实验室远程服务器ubuntu,服务器地址:118.XXX.XXX.XXX,端口号:6XXX
操作
- 确保远程服务器的所在的conda环境中有jupyter notebook
-
需要分别在本地电脑和远程服务器进行操作
- 远程服务器
- 在远程电脑上运行以下指令
# 1. 生成配置文件jupyter_notebook_config.py,文件中是可以对jupyter进行定制的参数 jupyter notebook --generate-config # 2. 生成密码 # 切换到python环境 python3 # 包含生成密码的头文件 from notebook.auth import passwd # 密码生成函数 passwd() # 会有以下显示 Enter password:AAAAA Verify password:AAAAA res: 'sha1:xxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # 其中AAAAA是本地进行远程端口映射的密码,''单引号中的密码将被用于存在第一步的配置文件之中
- 打开.jupyter文件中的jupyter_notebook_config.py
- 在文件末尾添加以下两行代码
# 别忘了u和单引号'' c.NotebookApp.password = u'第一步最后的长串密码' # 设置远程服务器的端口,可以随意设 c.NotebookApp.port = 8090
- 本地电脑
- 打开本地电脑anaconda powershell prompt
- 使用ssh的方法进行远程服务器jupyter端口的本地映射,运行以下代码
# 说明:命令各部分含义如下 # ssh -L [本地端口]:localhost:[远程端口] [远程用户名]@[远程IP] -p [ssh连接端口] # 对于实验室来说,远程IP和ssh连接端口应该固定,即118.XXX.XXX.XXX和6XXX # 对于远程用户名则是管理员给予的名字(服务器用户名),我的就是liXXXX # 对于远程端口应与远程服务器的配置文件中自己设置的一致,正如上面的8090 # 对于本地端口则可以任意设置,但需要记住 ssh -L 8083:localhost:8090 liXXXX@118.XXX.XXX.XXX -p 6XXX
- 笔者在第一次运行以上代码时会报错,有以下错误
或者也会出现没有权限访问的现象(permission denied),原因在于私钥的权限问题,需要将私钥设置为以下形式:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'id_rsa.rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: id_rsa.rsa Permission denied (publickey,keyboard-interactive).
# 注意:组或用户名只有自己,权限为读取
- 没问题的话,终端会直接连接到远程服务器,有如下显示:
-
切换到需要的conda环境
conda activate mm
- 运行jupyter notebook
jupyter notebook
- 在本地电脑浏览器上打开以下网址
没问题的话会有以下显示,填写登录密码,也就是passwd()之后你输入的密码,需要注意的是,每次改变映射的本地端口都会要求输入密码# 与ssh连接时的本地接口需要对应 http://localhost:8083/
- 填写密码,完成远程连接
- 检验成功与否,输入以下代码以测试是否可以包含torch以及识别到多卡
- 推荐安装李沐老师-《动手学深度学习》提到的一个插件,主要用来显示代码段的运行时间,在终端中输入以下指令
在jupyter notebook内部同样可以直接运行以上命令行,但是需要在每个指令前加感叹号,如pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user jupyter nbextension enable execute_time/ExecuteTime
!jupyter contrib nbextension install --user
写在最后
连接到远程服务器的jupyter-notebook之后就可以愉悦的开启炼丹之路了~
评论(2)
您还未登录,请登录后发表或查看评论