最近在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转载请注明出处