摘要: Shell 在 GitHub 排行榜「機器學習領域最熱門的程式語言」中排名第七,熱門程度可想而知。不過多人使用不代表程式語言沒有罩門,本文作者統整了四個可以加速 Shell 作業效率的技巧,好用的功能懶人包你能不存下來嗎?
在機器學習的實踐過程中,用好 Shell 能幫你很多節省時間。
最近,有位來自 ETHZ 的學生分享了一些 Shell 小技巧。對工程師來說,這些技巧更重要的是讓你的思維從瑣碎小事中解脫出來,大大提高了工作效率。
下面就是他分享的 4 個 tips。由於本文中涉及到的 shell 腳本過多,你可以去文末地址中查看所有腳本的程式碼。
在千萬文件中,快速抓到你要的那個
當你在遠程服務器上監視程式運行時,如果想把一個遠程文件抓取來查看,通常你會怎麼做?
記下文件路徑,打開終端,用 rsync 之類的工具同步到本地,再到文件瀏覽器中查看。實際上不必這麼麻煩。只需要事先寫好幾個 shell 腳本,就可以避免重複的機械勞動。
在這裡強烈推薦 iTerm 2,它比 Mac 自帶的終端要強大得多,可以指定某個觸發關鍵詞執行某個相應的命令。
iTerm 2 傳送門,點這 。
先在遠程服務器上設置一個腳本 t 。當我們輸入 r awesome_video.mp4 時,它會搜索 awesome_video.mp4 文件所在路徑,並連同主機名以字符串 rtransfer <host> <path> 的形式列印出來。
rtransfer 作為 iTerm2 的觸發關鍵詞,解析出主機和路徑,然後調用另一個本地腳本 t2。腳本 t2 將這個影片文件傳輸到臨時目錄,然後在該目錄中打開 Finder。
使用 iTerm 2 觸發關鍵詞功能調用腳本,可以大大提升效率,而你要做的只是在前期花費時間定制腳本。
遠端訪問 TensorBoard
除了抓取遠程文件,另一個讓人痛苦的是訪問遠程服務器上的 TensorBoard 實例。你可以設置 SSH 端口轉發,但是哪個端口對應哪個服務器?它們都在 Docker 容器中。
ngrok可以讓你把訪問本地端口變成訪問 URL ,比如輸入 ngrok http 6006 後,它會為你生成一個 URL 網址 ,你可以在 這個網址 中查看 TensorBoard 實例。
結合腳本 n,以更快的速度啓動 ngrok,然後用腳本 tb 打開 Web 瀏覽器,啓動 TensorBoard,在十秒內就能從運行目錄轉到顯示圖形。
ngrok 有個缺點是它一次只能允許一個對話筐,因此在使用前需要刪除上一個 ngork 程式 。如果你忘記在另外一台服務器上刪除 ngrok,可能會比較麻煩。
ngrok下載地址, 點這 。
用 tbplot 代替 TensorBoard 繪圖
對於運行大量 metrics 的情形,我們需要等待較長時間讓 TensorBoard 加載所有圖形。如果使用 tbplot 腳本,速度會快很多,並且能直接生成圖像文件。
tbplot 實際上調用的是 Matplotlib,缺點是目前只能生成標量圖。
tbplot下載地址: 點這 。
自動監測程式會不會讓電腦停機
運行程式碼時,最耗費精力的事情就是是擔心遇到了錯誤並停機,因此需要不斷檢查他們的運行情況。
當程式出現問題時,通過警報自動監控可以緩解這種擔憂。一般可以把警報發送到郵箱中,為了避免這麼麻煩,可以使用 sqs-alerts,它依靠 AWS AWS Simple Queue 服務存儲和接收消息。
在每台遠程機器上,使用 cron 運行一個腳本,監控日誌並在檢測到運行中斷時向隊列發送消息。然後在本地機器上運行一個服務來監控隊列,並在收到消息時彈出警報。
sqs-alerts下載地址: 點這 。
最後,本文使用的所有 shell 腳本都可以在以下地址中找到: 點這 。
轉貼自: BuzzOrange
留下你的回應
以訪客張貼回應