2017年2月21日 星期二

[Tensorflow] [Linux] 執行分散式學習常見問題

Q1 : 在Linux環境底下,Parameter Server 該如何關閉 ?


A1 : 有個方法,先按下  [Ctrl] + [Z] 將該程式丟到背景並暫停

並在 cmd window 裡面下

pkill python

pkill 指令與 killall 指令類似,也是可以指定程式名稱,但是其所指定的名稱會直接以常規表示法(regular expression)的方式比對,只要比對成功,就會中止該程式。 對於不熟悉常規表示法的初學者而言,用此程式可能比較危險,如果使用不正確的常規表示法,可能會把不該中止的程式也砍了,所以使用上要注意。 --- 在 Linux 中使用 kill、killall 與 xkill 等指令強迫關閉程式

接下來再輸入

fg

fg 是將背景工作移動到前景,目的是確認該支程式已經被關閉 (Terminated)





Q2 :  明明檢查了cmd輸入的指令,還有不同台負責作工作分配的Parameter Server、算權重的Worker 它們運行的程式,為什麼不能執行?


A2 : 有個問題可能是之前執行的 python 程式並未正確關閉沒有結束,因此在GPU當中依舊存在殭屍程序。如果GPU的廠牌是 Nvidia,這個時候可以透過以下的指令

nvidia-smi

檢查 GPU 裡面運行的Process有那些,再利用以下的指令把它關閉

kill -9 process / kill -9 PID

kill -9 process 這個指令可以在沒有 admin 權限下把我自己帳號產生的 python 程序強制關閉,這邊要注意我所說的強制的意思,就是在這樣的關閉情況底下,程式所產生的暫存檔會消失。所以使用上需要特別注意,除非 -15 沒辦法正常關閉,不然不要隨意使用。

-9  :代表立刻強制刪除一個工作

-15:以正常的程序方式結束一件工作,與 -9 關閉的方式不同(類似直接關閉電腦的電源或是長按電腦的電源鍵 vs 正常程序關機)
不過,畢竟正常的作法中,你應該先使用 fg 來取回前景控制權,然後再離開 vim 才對~因此,以上面的範例二為例,其實 kill 確實無法使用 -15 正常的結束掉 vim 的動作喔!此時還是不建議使用 -9 啦!因為你知道如何正常結束該程序不是嗎? 通常使用 -9 是因為某些程式你真的不知道怎麼透過正常手段去終止他,這才用到 -9 的! ---  第十六章、程序管理與 SELinux 初探 - 管理背景當中的工作: kill

在 Linux 當中,常常遇到下的指令不符合權限這個問題,因此需要特別注意

由前面一連幾個章節的資料看來,我們一直強調在 Linux 底下所有的指令與你能夠進行的動作都與權限有關, 而系統如何判定你的權限呢?當然就是第十三章帳號管理當中提到的 UID/GID 的相關概念,以及檔案的屬性相關性囉!再進一步來解釋,你現在大概知道,在 Linux 系統當中:『觸發任何一個事件時,系統都會將他定義成為一個程序,並且給予這個程序一個 ID ,稱為 PID,同時依據啟發這個程序的使用者與相關屬性關係,給予這個 PID 一組有效的權限設定。』 從此以後,這個 PID 能夠在系統上面進行的動作,就與這個 PID 的權限有關了!---  第十六章、程序管理與 SELinux 初探
第十六章 程序管理與 SELinux 初探 這個是基礎知識補充,有需要再查詢即可

沒有留言:

張貼留言

/* 載入prettify的autoloader */ /* 載入JQuery */