遠程深度學習蜜唾,有這一篇小計就夠了

沒有GPU搞什么深度學習,用嘴么庶艾。

在服務(wù)器上運行代碼的時候一定一定一定要給別的用戶留出一定的使用空間

終于從紙上談兵到實際編碼操作袁余,切忌自己獨占系統(tǒng)資源。本篇小記重點講:

  1. 怎么遠程調(diào)試代碼
  2. 怎么遠程運行代碼
  3. 深度學習的設(shè)置

零咱揍、關(guān)于遠程服務(wù)器的一些小訣竅

1. 關(guān)于怎么選擇GPU和限制顯存問題颖榜。

Tensorflow默認是占盡全部顯存的,即使你的代碼網(wǎng)絡(luò)結(jié)構(gòu)不占用很大的現(xiàn)存的時候煤裙,tf也會默認全部申請是為了在程序運行的過程中直接取用不用再申請操作顯存掩完,所有有的時候回看到明明是一個很小的代碼卻占盡了GPU顯存,但是GPU得計算力卻還不到30%硼砰,尤其是在多個CPU的時候且蓬,每塊GPU的顯存都申請滿了,而只有一顆GPU在跑程序题翰。所以我們有必要手動的修改下自己的代碼恶阴,只需要在關(guān)鍵的地方添上幾句代碼,就會限制顯存使用豹障,同時還能指定跑程序的GPU冯事。如果參數(shù)選擇的正確的話對程序的運行速度是沒有限制的。

CUDA_VISIBLE_DEVICES=0 python nn.py 

將Tensoeflow的命令行參數(shù)寫在python之前血公,指明你要使用的GPU昵仅,0代表第一塊GPU,0累魔,1代表使用設(shè)備號是0和1的兩塊GPU摔笤。

使用tf.flags 傳遞參數(shù)
在session中使用限制顯存的參數(shù)


tf.app.flags.DEFINE_float('mr',0.5,'allocate GPU memory rate')
FLAGS=tf.app.flags.FLAGS
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=FLAGS.mr)
session = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

上面的GPUOptions就限制了你的顯存的使用率。并且我們使用tf.flags可以直接運行python程序的時候通過命令行參數(shù)來指定這個分配現(xiàn)存的大小薛夜。

# 使用第一塊GPU籍茧,并且只使用第一塊GPU20%的顯存做計算。
CUDA_VISIBLE_DEVICES=0 python nn.py --mr=0.2

2. 后臺運行

只需要在運行命令行之后添加一個&符號便可以將當前的進程掛到后臺梯澜。但是一定要記得如果不再使用當前進程的話寞冯,用Ctrl+c是殺不掉的渴析,一定要使用kill命令殺線程。

在掛后臺的時候吮龄,會返給命令行一個PID俭茧,就是進程的ID號,最好記下來這個ID號漓帚,因為你手動殺進程的時候需要使用這個ID號母债,一定不能記錯了,否則殺了別人的進程是小事尝抖,把系統(tǒng)搞奔潰了可就麻煩了毡们。

# -s 9 代表著強制殺掉進程,百殺百中
sudo kill -s 9 PID

有時候忘記了進程號昧辽,我們需要查找當前活躍的進程衙熔,然后找到這個進程號。

ps -ef | grep "python"

這里是兩個shell命令通過管道進行了結(jié)合搅荞,第一個ps能夠列出當前系統(tǒng)所有活躍的進程红氯,然后通過grep 關(guān)鍵字查找就能找到帶有關(guān)鍵字的進程。找到PID(PID是輸出的第二列那個數(shù)字)再殺掉咕痛。

# 查看當前使用的登錄終端ID痢甘,
他的輸出也可以當做前面的grep的關(guān)鍵字來進行線程的查詢,
但是要記住使用同一個窗口茉贡。
tty 

最好的方法是通過你運行的終端的命令來進行關(guān)鍵詞查找塞栅,這樣最準確。

挺簡單的

3. 使用ssh-keygen 完成免密碼登錄

只使用f3一個命令就完成了免密碼登錄

4. 監(jiān)視服務(wù)器運行狀態(tài)的小命令

htop  #監(jiān)視內(nèi)存块仆,線程构蹬,CPU運行狀態(tài)
Screen Shot 2018-01-10 at 23.16.59.png
watch -n 0.2 nvidia-smi #監(jiān)視GPU,每隔0.2s 刷新
Screen Shot 2018-01-10 at 23.17.05.png

一悔据、 遠程調(diào)試代碼

必備條件:

  • Pycharm pro(一定要是pro版本庄敛,負責不支持以下操作)
  • Shell (有興趣的同學可以去設(shè)置zsh和iterm2)
  • conda (主要是為了服務(wù)器用戶隔離)

步驟:
Pycharm pro中有許多很牛逼很帥的高級功能,現(xiàn)在我們需要用到的是【development】功能來實現(xiàn)遠程的python腳本的修改調(diào)試科汗。此功能在【tools】->【development】中藻烤。


選中Configuration功能進行配置

下面就是使用類ssh的功能來遠程連接主機了,請確定你已經(jīng)在遠程服務(wù)器上面添加了自己的賬戶头滔。


配置

name則是整個配置的名稱怖亭,隨便你命名。
Type選擇SFTP坤检。
host直接填寫遠程服務(wù)器的IP地址(例如:xxx.xxx.xxx.xxx)兴猩。
Root path則是你遠程服務(wù)器上面的代碼存放位置,我一般就是在我的用戶目錄下直接建立code早歇,這樣比較方便倾芝。
User namePassword則是你遠程服務(wù)上的用戶名和密碼讨勤。

本地和遠程的mapping的設(shè)置

localPath就是你本地的項目上的代碼位置,如果你是用Pycharm pro直接open的項目的話晨另,name這個地方是自動填充自己的項目位置的潭千。
Development Path on sever '***' 則是你在服務(wù)上要上傳代碼的位置。上傳完成之后會在服務(wù)器的Root path下新建一個文件夾借尿,就是這個名稱刨晴。
Web path這個不用管。

之后需要設(shè)置Pycharm路翻,讓他在遠程服務(wù)器上能夠建立文件夾狈癞,這樣即使我們首次上傳也不會出現(xiàn)遠程服務(wù)器沒有文件夾的問題。
還是在之前【development】那里茂契,這次我們選擇的是下面的【options】選項亿驾。將第五個checkbox create empty directories勾選上就可以了。

Screen Shot 2018-01-10 at 22.50.13.png

下面就可以上傳本地的項目到遠程的服務(wù)器上面了账嚎。不過在此之前請確定你遠程的服務(wù)器上有你的用戶,并且你的用戶目錄有write權(quán)限儡蔓,關(guān)于用戶權(quán)限你可以用ls -l查看目錄下的文件郭蕉,第一列就列出了用戶權(quán)限。請自行百度喂江,如果你自己的用戶在你用戶目錄下沒有write的權(quán)限的話召锈,那么即使連接上了遠程服務(wù)器也不能成功上傳,原因就是你沒有建立文件夾和文件的權(quán)限获询≌撬辏可以使用下面的命令修復。

ls -l

顯示
-rwxr-xr-x 1 root root 6444 09-22 15:33 shmwrite
-rw-r--r-- 1 root root 1443 09-22 15:33 shmwrite.c
drwxr-xr-x 2 root root 4096 09-22 17:19 test

第一個字符代表文件類型吉嚣。d代表目錄,-代表非目錄梢薪。

接下來每三個字符為一組權(quán)限,分為三組尝哆,依次代表所有者權(quán)限秉撇,同組用戶權(quán)限,其它用戶權(quán)限.每組權(quán)限的三個字符依次代表是否可讀秋泄,是否可寫琐馆,是否可執(zhí)行

r 表示擁有讀的權(quán)限
w 表示擁有寫的權(quán)限
x 表示擁有可執(zhí)行的權(quán)限
- 表示沒有該權(quán)限

修改權(quán)限
可用chmod命令來修改文件權(quán)限。

sudo chmod -R XXX floderName
sudo chmod XXX fileName
sudo chown user:group fileName

前兩條命令表示改變文件屬性(文件三種屬性恒序,read-可讀瘦麸,write-可寫,x-可執(zhí)行)歧胁。按照二進制來計算沒組權(quán)限的屬性就OK了滋饲,具體的請自行學習查詢厉碟,這里不展開了。

然后我們在Pycharm pro中的項目上了赌,鼠標右鍵菜單下部會出現(xiàn)upload to name選項墨榄,選擇以后就能完成文件的上傳了。

當我們修改了某一個文件時候勿她,也可以單獨上傳一個文件

二袄秩、設(shè)置遠程調(diào)試解析器

遠程服務(wù)器上一般安裝有conda和virtualenv虛擬軟件,大家一定一定一定要花點時間來學習conda的虛擬環(huán)境逢并,一定一定一定不要和別人公用虛擬環(huán)境之剧,一般自己的虛擬環(huán)境自己維護,用自己的用戶名做前綴防止別人給你修改砍聊。這對服務(wù)器的維護和軟件的運行都是很有益處的背稼。

假設(shè)你已經(jīng)在服務(wù)器上建立好了自己的python虛擬環(huán)境,那么下一步就是設(shè)置Pycharm的解釋器了玻蝌。我們只需要將解釋器的位置設(shè)置為遠程地址就行蟹肘。

首先查看你遠程服務(wù)器上的虛擬環(huán)境中的python解釋器的位置。找到anaconda的安裝位置俯树,一般安裝的人是為一個用戶安裝的也就是root用戶帘腹,此時你需要找到root用戶下的conda的位置。然后在env文件下找到你的虛擬環(huán)境目錄许饿,然后在/bin目錄下查找python2.7阳欲。


添加Remote Interpreters

稍后Pycharm會從遠程的服務(wù)器上pull下服務(wù)器的conda環(huán)境到本機。完成之后就能debug遠程服務(wù)器的代碼了陋率。

調(diào)試窗口

我們可以從調(diào)試窗口第一行的啟動命令看出球化,此時候用的是遠程的解釋器。這樣再也不用擔心自己的筆記本運行不了了瓦糟,還得一遍一遍的修改上傳再啟動筒愚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狸页,隨后出現(xiàn)的幾起案子锨能,更是在濱河造成了極大的恐慌,老刑警劉巖芍耘,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件址遇,死亡現(xiàn)場離奇詭異,居然都是意外死亡斋竞,警方通過查閱死者的電腦和手機倔约,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坝初,“玉大人浸剩,你說我怎么就攤上這事钾军。” “怎么了绢要?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵吏恭,是天一觀的道長。 經(jīng)常有香客問我重罪,道長氧枣,這世上最難降的妖魔是什么年缎? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任掉弛,我火速辦了婚禮咽斧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呼胚。我一直安慰自己茄唐,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布蝇更。 她就那樣靜靜地躺著沪编,像睡著了一般。 火紅的嫁衣襯著肌膚如雪年扩。 梳的紋絲不亂的頭發(fā)上漾抬,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音常遂,去河邊找鬼。 笑死挽荠,一個胖子當著我的面吹牛克胳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播圈匆,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼漠另,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跃赚?” 一聲冷哼從身側(cè)響起笆搓,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纬傲,沒想到半個月后满败,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡叹括,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年算墨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汁雷。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡净嘀,死狀恐怖报咳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挖藏,我是刑警寧澤暑刃,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站膜眠,受9級特大地震影響岩臣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柴底,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一婿脸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柄驻,春花似錦狐树、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至野哭,卻和暖如春在塔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拨黔。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工蛔溃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人篱蝇。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓贺待,卻偏偏與公主長得像,于是被迫代替她去往敵國和親零截。 傳聞我的和親對象是個殘疾皇子麸塞,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容