机器学习远程端实验心得2
上一篇主要写怎样和远程端连接,同步文件。 这一次提一些其他,我认为也特别好用的工具。
1. Jupyter Notebook 远程端设置
jupyter notebook确实是一个非常好用的东西,特别是在网上学各种教程的时候,一般他们都会给出你可以互动的notebook来。同时,平时自己想要实验一些小的东西,用notebook也会特别方便。
当然,直接用亚马逊 aws或者其他的供应商的远程端也是可以的。
但是既然实验室有服务器,又是免费的那么直接拿来用方便很多。废话不多说。
conda install jupyter notebook # 安装包
conda install nb_conda # 安装notebook和conda环境连接起来的包,这样就可以很方便的在notebook里面就可以换环境了,但是有一个问题是,python3.6安装的时候会出现依赖问题,所以最好新建一个py3.5的环境来安装
# 开始设置
jupyter notebook --generate-config
#生成密码,进入Ipython
In [1]: from note.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:.....' # 加密后的密码
之后把这个密文拷贝下来。然后开始修改刚才在上面生成的配置文件。
vim ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:...' # 密文
c.NotebookApp.open_browser = False
c.NotebookApp.port = 9000 # 随便设置一个端口,只要不冲突
如果考虑到安全问题想要使用SSL来加密的话,可以这样。
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem # 生成认证
juopyter notebook --certfile=mycert.pem --keyfile mykey.key # 指向生成文件
然后修改配置文件,~/.jupyter/jupyter_notebook_config.py
。
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem' #指向之前生成文件的路径
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
之后如果和tmux配合一起来使用的话,就可以设置一个一直运行的jupyter notebook服务器端,之后可以随时从任何地方很方便的登录了。
更多关于,jupyter notebook远程设置查看这里。
2. Tmux多终端工作,暂时离线继续工作
在最开始使用远程端的时候,最蛋疼的事情是,有时候为了同时训练,同时操作文件,结果不得不每次在本地用Ctrl+Alt+T
开多个终端,然后ssh过去。很麻烦。即使开了几个窗口,但是来回换来换去也特别麻烦。
在本地端的话可以用窗口分块来取得很棒的效果,顺便提一下吧。
sudo apt-get install compizconfig-settings-manager
之后 ccsm
,依次选择 Window Management
,Grid
,Corners / Edges
会看到设置。
然后直接ssh远程最大的问题是,每次网络状态不好,突然就掉线了,或者自己不小心把本地计算机关了。然后就会造成broken pipe,立刻断掉,本来在训练的东西又要重头训练起。
所以就得使用tmux来工作了,首先可以很方便的分窗口,而且可以随时脱离终端,自己去干其他事情,而终端还在继续运行。
sudo apt-get install tmux
# session的操作
tmux #基本使用,进入默认session
tmux new -s name #创建一个新session名字是name
tmux a -t name # 连接叫做name的session
tmux ls # 列出所有session
tmux kill-session -t name # 删除叫name的session
# 控制键 先按Ctrl+b
d # 断开当前session连接
% # 垂直分屏
" # 水平分屏
o # 切换小屏幕
q # 显示屏幕编号
+ num # q之后加数字,切换到num编号屏幕
x # 关闭当前小屏幕
更多操作查看tmux shortcuts & cheatsheet.
3. 远程Tensorboard设定
入了TensorFlow大坑,于是也就要对付它的那些小弟了。比如这个记录报告好帮手,Tensorboard。有了它,妈妈再也不用担心傻傻分不清神经网络里面到底发生了什么了。
然而,在远程端运行命令tensorboard --logdir log
之后, 显示我们只需要去6006
端口连接就可以了。打开浏览器,输入IP地址加上端口号。但是,什么都没有!!
于是就开始找为什么,发现可能是防火墙设置出了问题。但是作为一个合格的linux小白,果然是不会设定。就找到其他的方法了,只需要用ssh的forward就可以把远程的端口接到本地来。
ssh -L 16006:127.0.0.1:6006 yourname@remote_ip
127.0.0.1
就是本地的ip地址。之后只需要在远程打开Tensorboard
,之后在本地输入127.0.0.1:16006
或者localhost:16006
就行了。