機(jī)器學(xué)習(xí)遠(yuǎn)程端實(shí)驗(yàn)心得2
上一篇主要寫(xiě)怎樣和遠(yuǎn)程端連接,同步文件。 這一次提一些其他,我認(rèn)為也特別好用的工具。
1. Jupyter Notebook 遠(yuǎn)程端設(shè)置
jupyter notebook確實(shí)是一個(gè)非常好用的東西,特別是在網(wǎng)上學(xué)各種教程的時(shí)候,一般他們都會(huì)給出你可以互動(dòng)的notebook來(lái)。同時(shí),平時(shí)自己想要實(shí)驗(yàn)一些小的東西,用notebook也會(huì)特別方便。
當(dāng)然,直接用亞馬遜 aws或者其他的供應(yīng)商的遠(yuǎn)程端也是可以的。
但是既然實(shí)驗(yàn)室有服務(wù)器,又是免費(fèi)的那么直接拿來(lái)用方便很多。廢話(huà)不多說(shuō)。
conda install jupyter notebook # 安裝包
conda install nb_conda # 安裝notebook和conda環(huán)境連接起來(lái)的包,這樣就可以很方便的在notebook里面就可以換環(huán)境了,但是有一個(gè)問(wèn)題是,python3.6安裝的時(shí)候會(huì)出現(xiàn)依賴(lài)問(wèn)題,所以最好新建一個(gè)py3.5的環(huán)境來(lái)安裝
# 開(kāi)始設(shè)置
jupyter notebook --generate-config
#生成密碼,進(jìn)入Ipython
In [1]: from note.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:.....' # 加密后的密碼
之后把這個(gè)密文拷貝下來(lái)。然后開(kāi)始修改剛才在上面生成的配置文件。
vim ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:...' # 密文
c.NotebookApp.open_browser = False
c.NotebookApp.port = 9000 # 隨便設(shè)置一個(gè)端口,只要不沖突
如果考慮到安全問(wèn)題想要使用SSL來(lái)加密的話(huà),可以這樣。
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem # 生成認(rèn)證
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配合一起來(lái)使用的話(huà),就可以設(shè)置一個(gè)一直運(yùn)行的jupyter notebook服務(wù)器端,之后可以隨時(shí)從任何地方很方便的登錄了。
更多關(guān)于,jupyter notebook遠(yuǎn)程設(shè)置查看這里。
2. Tmux多終端工作,暫時(shí)離線繼續(xù)工作
在最開(kāi)始使用遠(yuǎn)程端的時(shí)候,最蛋疼的事情是,有時(shí)候?yàn)榱送瑫r(shí)訓(xùn)練,同時(shí)操作文件,結(jié)果不得不每次在本地用Ctrl+Alt+T開(kāi)多個(gè)終端,然后ssh過(guò)去。很麻煩。即使開(kāi)了幾個(gè)窗口,但是來(lái)回?fù)Q來(lái)?yè)Q去也特別麻煩。
在本地端的話(huà)可以用窗口分塊來(lái)取得很棒的效果,順便提一下吧。
sudo apt-get install compizconfig-settings-manager
之后 ccsm,依次選擇 Window Management,Grid ,Corners / Edges會(huì)看到設(shè)置。
然后直接ssh遠(yuǎn)程最大的問(wèn)題是,每次網(wǎng)絡(luò)狀態(tài)不好,突然就掉線了,或者自己不小心把本地計(jì)算機(jī)關(guān)了。然后就會(huì)造成broken pipe,立刻斷掉,本來(lái)在訓(xùn)練的東西又要重頭訓(xùn)練起。
所以就得使用tmux來(lái)工作了,首先可以很方便的分窗口,而且可以隨時(shí)脫離終端,自己去干其他事情,而終端還在繼續(xù)運(yùn)行。
sudo apt-get install tmux
# session的操作
tmux #基本使用,進(jìn)入默認(rèn)session
tmux new -s name #創(chuàng)建一個(gè)新session名字是name
tmux a -t name # 連接叫做name的session
tmux ls # 列出所有session
tmux kill-session -t name # 刪除叫name的session
# 控制鍵 先按Ctrl+b
d # 斷開(kāi)當(dāng)前session連接
% # 垂直分屏
" # 水平分屏
o # 切換小屏幕
q # 顯示屏幕編號(hào)
+ num # q之后加數(shù)字,切換到num編號(hào)屏幕
x # 關(guān)閉當(dāng)前小屏幕
更多操作查看tmux shortcuts & cheatsheet.
3. 遠(yuǎn)程Tensorboard設(shè)定
入了TensorFlow大坑,于是也就要對(duì)付它的那些小弟了。比如這個(gè)記錄報(bào)告好幫手,Tensorboard。有了它,媽媽再也不用擔(dān)心傻傻分不清神經(jīng)網(wǎng)絡(luò)里面到底發(fā)生了什么了。
然而,在遠(yuǎn)程端運(yùn)行命令tensorboard --logdir log之后, 顯示我們只需要去6006端口連接就可以了。打開(kāi)瀏覽器,輸入IP地址加上端口號(hào)。但是,什么都沒(méi)有?。?/p>

于是就開(kāi)始找為什么,發(fā)現(xiàn)可能是防火墻設(shè)置出了問(wèn)題。但是作為一個(gè)合格的linux小白,果然是不會(huì)設(shè)定。就找到其他的方法了,只需要用ssh的forward就可以把遠(yuǎn)程的端口接到本地來(lái)。
ssh -L 16006:127.0.0.1:6006 yourname@remote_ip
127.0.0.1就是本地的ip地址。之后只需要在遠(yuǎn)程打開(kāi)Tensorboard,之后在本地輸入127.0.0.1:16006或者localhost:16006就行了。