背景
近期我在实验室的电脑上对深度学习模型进行了训练,一般是直接操作电脑主机或通过向日葵等软件远程控制主机。然而,这种远程操作时遇到了两个问题,一是鼠标控制的网络延迟,二是笔记本和远程主机的显示屏幕大小分辨率不同,导致显示效果差,眼睛都要看瞎了。
正好最近接触了反向代理和网站搭建,便有了基于实验室高配置电脑搭建Jupyter 远程深度学习开发环境的想法。
要求
- 具有公网的云服务器一台
- 高配置深度学习主机
- 主机已经安装conda
- 域名(非必要)
第一步:搭建反向代理环境
具体步骤参考我的另一篇文章如何在内网主机上快速搭建一个Wordpress个人网站中的【一、反向代理】
frp服务配置在7000端口上,jupyter服务配置在主机的8888端口上,同时映射到云服务的18888端口上。
frp的配置文件如下:
# frps.ini内容如下:
[common]
服务器开放给客户端的frp端口
bind_port = 7000
# http端口
vhost_http_port = 18888
#https端口
vhost_https_port = 8001
dashboard_addr = 0.0.0.0
#控制面板端口,用户名,密码
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = yourpassword
# frpc.ini内容如下:
[common]
server_addr = 服务器ip地址或者域名
server_port = 7000
tls_enable = true
admin_addr = 127.0.0.1
admin_port = 7500
admin_user = admin
admin_pwd = yourpassword
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10022
[web]
type = http
local_port = 18888
custom_domains=服务器ip地址或者域名
搭建好反向代理环境后便可以通过http://域名:18888访问到实验室主机的8888端口的jupyter服务了。
第二步:配置jupyter
为了安全起见,我们设置jupyter的登录方式为密码登录。
1 生成登录密码的哈希值
在python环境下输入以下代码段:
from notebook.auth import passwd
password = passwd("your-password-here")
print(password)
执行,然后输入2次密码,会生成密码的哈希值
例如:
argon2:$argon2id$v=19$m=10240,t=10,p=8$qAPGpS2jCeSSaE2wo/G3SA$OBmKr9TfLUN0iDHde4EjsE7NkPSrMxP7aiUusvtf0k
2 编辑jupyter启动脚本
新建txt文件,输入如下内容
E:
cd E:\XXX
call C:\Users\513\anaconda3\Scripts\activate.bat
call activate ee
REM start microsoft-edge http://localhost:8888/tree
call jupyter notebook --port=8888 --no-browser --NotebookApp.allow_remote_access=True --NotebookApp.password=argon2:$argon2id$v=19$m=10240,t=10,p=8$qAPGpS2jCeSSaE2wo/G3SA$OBmKr9TfLUN0iDHde4EjsE7NkPSrMxP7aiUuzsvtf0k
pause
需要根据情况修改以下几个地方:
- E:\XXX为jupyter启动后的根路径
- C:\Users\513\anaconda3\Scripts\activate.bat 为anaconda3的安装路径,对应进行修改
- ee为conda激活环境的名称
- –NotebookApp.password=上一步得到的哈希值
保存txt文件,重命名为【打开Jupyter服务器.bat】
双击执行,成功启动后我们的jupyter就已经可以被远程访问了。
结果
在浏览器中输入 http://twinbee.cn:18888/,输入密码就可以远程访问jupyter了
最后 欢迎大家参观我个人网站twinbee.cn