0%

Jupyter notebook远程访问设置

最近在Kaggle中学习一些关于ML的方法,其提供的 kernel是一个很好的工具,非常类似于Jupyter notebook

kaggle Kernel本质上是一种jupyter笔记本,可以在浏览器中直接运行代码,并提供免费的gpu

但是遇到一个问题:如果某个训练的模型需要跑N个小时,kernel有时会由于一些原因(可能网络,也可能是无法长时间待机)导致断开;待重开打开后,模型又要重新跑了(而且是该notebook里所有代码都要重新跑)。。。

如果将代码拿到本机上跑,则太占用资源(CPU/内存),有时由于配置不够的原因,导致模型训练速度大大拉长。。

这时我才想起来可以在服务器上安装个Jupyter notebook,然后本机远程连接即可,只要网络不出问题,即可长时间的待机运行代码

安装及配置

系统:ubuntu 18.04

安装过程可参照:Installing Jupyter Notebook,个人倾向于Anaconda来安装

设置远程登录密码,先启动ipython,然后输入以下代码:

from IPython.lib import passwd
passwd()

会要求输入两次密码(即之后用的登录密码),然后会生成一个sha1加密字符串'sha1:.......',copy下来在之后的配置文件修改中会用到

接着生成配置文件jupyter_notebook_config.py(如果是root权限的,则加上--allow-config)

jupyter notebook --generate-config

对配置文件进行修改(找到下面对应行,去掉#并修改)

vim ~/.jupyter/jupyter_notebook_config.py

c.NotebookApp.allow_remote_access = True        #允许远程连接
c.NotebookApp.ip='*'                            # 设置所有ip皆可访问
c.NotebookApp.password = u'sha1:.......'        #之前复制的密码
c.NotebookApp.open_browser = False              # 禁止自动打开浏览器
c.NotebookApp.port =8888                        #任意指定一个端口

然后启动jupyter notebook(后台运行)

# jupyter notebook
nohup jupyter notebook >~/jupyter.log 2>&1 &

注意事项

后来发现,其实配置文件没有必要一定要修改,通过jupyter notebook --help-all可发现其提供了多个参数来控制配置文件,比如用--ip来指定可访问的ip,--no-browser来设置禁止自动打开浏览器,--port来指定端口等等

jupyter notebook --ip=0.0.0.0 --no-browser --port 8888

如果做了上述操作后,还是无法访问Jupyter notebook,记得看下是否将端口加入到服务器的防火墙白名单里(对于这个坑。。。我折腾了好一会才发现)

参考资料

安装教程(二):Ipython Notebook的远程访问设置
jupyter notebook的安装与基本操作
ubuntu安装jupyter 并设置远程访问
Ubuntu安装Jupyter notebook——开启远程访问

本文出自于http://www.bioinfo-scrounger.com转载请注明出处