Spacemacs
各家使用心得
Spacemacs 使用心得、使用spacemacs从vim无缝过度到emacs、如何评价 Emacs 的配置文件 Spacemacs? --- 知乎
Emacs
乾貨 一年成为Emacs高手(像神一样使用编辑器)
2017年2月28日 星期二
2017年2月22日 星期三
Coding 修羅場 - Online Judge
除了 LeetCode / TopCoder 等常見的程式練習
下面列出了幾個常見的線上解題系統
UVa Online Judge
Virtual Judge (華中科大 online judge )
HDU Online Judge System
下面列出了幾個常見的線上解題系統
UVa Online Judge
Virtual Judge (華中科大 online judge )
HDU Online Judge System
2017年2月21日 星期二
[Tensorflow] 以Intel Vtune amplifier 對 Tensorflow 分散式學習 Profiling
硬體配置 - 4台PC 負責運算的worker 上面各有2張 NVIDIA 的 GTX 1080
我以負責其中一台 node0 當作 parameter server
我以負責其中一台 node0 當作 parameter server
Analysis Target
Application : /usr/bin/python #填入執行 python 的 binary 所在位置
Application parameters : /home/paslab/workspace/benchmark/tensorflow/exercise-01/example.py python example.py --job_name="ps" --task_index=0 #這邊相當於填入command line裡面的內容,我們在這邊輸入要profile程式的位置,接下來在輸入執行 python 訓練程式所在的位置
Working Directory : 選擇你要把分析完的結果存放在那理
Analysis Type
選擇自己需要的分析方式
以上都填寫正確並選擇完畢之後
按下 start 之後,如果一切正確,就可以看到分散式訓練順利的開始執行,如下圖一所示
圖一、VTune 成功執行分散式運算
表示 VTune 開始執行該支程式並開始 Profiling
[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 PIDkill -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 初探 這個是基礎知識補充,有需要再查詢即可
標籤:
Linux,
Tensorflow
2017年2月16日 星期四
恆毅力 Grit : The power of passion and perseverance
Grit 這本書在台灣的書名翻譯作 恆毅力
這是作者Angela Lee Duckworth 在 TED 上的演講 Grit: The power of passion and perseverance
書中探討一個有趣的現象
就是關於成功的一個關鍵要素之一
猶記得羅胖在這集 怎樣成為一個高手 有提到
一個成長最簡單的方式就是,讓自己投身在一個你想要學習項目的環境
並且持續的做自己不會做的事情
提供一條道路給想要不斷升級自己心智作業系統的人
這是作者Angela Lee Duckworth 在 TED 上的演講 Grit: The power of passion and perseverance
書中探討一個有趣的現象
就是關於成功的一個關鍵要素之一
猶記得羅胖在這集 怎樣成為一個高手 有提到
一個成長最簡單的方式就是,讓自己投身在一個你想要學習項目的環境
並且持續的做自己不會做的事情
提供一條道路給想要不斷升級自己心智作業系統的人
[MPI] MPI學習資源
MPI 的全名是 Message Passing Interface
它是一種 平行運算的通信協定
網路上找到一個 MPI 的教學 (該網站的解說)
而我所使用的軟體是這款 MPICH ,它是符合 MPI 標準通信協定的軟體
同時也運行在中國超級電腦太湖之光上,顯見其效能與穩定性
它是一種 平行運算的通信協定
MPI is a communication protocol for programming parallel computers
-- Message Passing Interface, wiki
網路上找到一個 MPI 的教學 (該網站的解說)
雖然撰寫的文字是英文,但是使用的文字淺顯易懂,不會艱澀
而我所使用的軟體是這款 MPICH ,它是符合 MPI 標準通信協定的軟體
MPI 是 Messages Passing Interface 的縮寫,他本身是一個規格很嚴密的通訊標準,主要的功能是在處理平行運算之間各個 node 的資料交換,請注意, MPI 並不是一套軟體喔!而至於 MPICH 就是符合 MPI 這個標準通訊協定的一套軟體了!因此,我們可以經由 MPICH 這個軟體提供的 MPI 函式庫來達成平行運算的功能喔!也就是說,我們所寫的程式,只要能夠使用 MPICH 提供的函式庫,那麼該程式就可以進行平行運算時候所需要的功能了,這就可以避免程式開發者還要去處理通訊節點上面的問題,而可以將程式開發的重心著重在程式本身的問題上面! MPICH 是由 Mathematics and Computer Science Division的 Argonne 實驗室所發展 --- 鳥哥的Linux私房菜 簡易 Cluster 架設
同時也運行在中國超級電腦太湖之光上,顯見其效能與穩定性
在架構上面,MPI 是使用分散式記憶體
--- 圖片出自此文 OpenMP與MPI的差別
2017年2月14日 星期二
2017年2月13日 星期一
[Linux] 系統常用指令整理
切換資料夾
切換需要前往的資料夾$cd /所要/前往/資料夾/路徑
切回上一個所在的資料夾(與電視兩個最後看的頻道兩個互相切換)
$ cd -
切回home目錄
或是
$ cd
或是
$ cd ~
命令列視窗 - 以 Terminator 為例
單視窗分割橫向分割 |
Ctrl + Shift + hOrizontal
縱向分割 —
Ctrl + Shift + vErtical
新增分頁
Ctrl + Shift + Tab
單視窗畫面內切換
Alt + 上/下/左/右鍵
不同分頁間切換
Ctrl + Page Up / Page Down鍵
關於權限
請進到擁有權限的資料夾進行操作
stackoverflow - fatal: could not create work tree dir 'kivy' : Permission denied
[Linux] 關於資料路徑 $環境變數 的問題
最近在進行分散式學習的時候
犯了一個錯
所以今天我們就來把 路徑 的問題給釐清
在 Google Tensorflow 上的教學 Inception in TensorFlow 中
在 worker 0 的其中一個參數 data_dir =$HOME/imagenet-data \,如圖一所示
這邊是告訴負責運算的 worker,訓練用的資料是放在什麼位置
小知識 - 這邊的 \ 符號是指由於要輸入的內容太多,先以此作分隔
因此按下 [enter] 鍵之後,cmd的畫面會變成輸入下一行指令
當然,也可以將各項變數以 [space] 鍵隔開
這邊的$HOME 這個是一個環境變數,其中,HOME一定是大寫
由於系統不知道你的變數是什麼
所以不會如我們所想的把路徑位置給自動填字的秀在 cmd 上
犯了一個錯
所以今天我們就來把 路徑 的問題給釐清
在 Google Tensorflow 上的教學 Inception in TensorFlow 中
在 worker 0 的其中一個參數 data_dir =$HOME/imagenet-data \,如圖一所示
這邊是告訴負責運算的 worker,訓練用的資料是放在什麼位置
小知識 - 這邊的 \ 符號是指由於要輸入的內容太多,先以此作分隔
因此按下 [enter] 鍵之後,cmd的畫面會變成輸入下一行指令
當然,也可以將各項變數以 [space] 鍵隔開
圖一、分散式訓練
這邊的$HOME 這個是一個環境變數,其中,HOME一定是大寫
PATH 前面加的 $ 表示後面接的是變數,所以會顯示出目前的 PATH ! ---鳥哥的Linux私房菜 6.1.3 關於執行檔路徑的變數: $PATH所以,在$符號後面輸入路徑位置的話,按下 [tab] 鍵
由於系統不知道你的變數是什麼
所以不會如我們所想的把路徑位置給自動填字的秀在 cmd 上
2017年2月11日 星期六
[Tensorflow] 權重更新機制 Parameter Server (參數服務器) 介紹
由於神經網路大小與訓練資料數量越來越龐大
所以分散式訓練已經成為機器學習的趨勢
其中 Tensorflow 的參數更新的方式是使用 parameter server 來作為權重更新的機制
不同框架的比較
以下是在知乎上很完整的介紹
最近比较火的parameter server是什么?
論文 Parameter Server for Distributed Machine Learning
論文作者本人李沐的介紹頁面
動畫解釋
另一篇【深度学习&分布式】Parameter Server 详解
看完這兩篇
對於參數服務器會有更深入的認識
所以分散式訓練已經成為機器學習的趨勢
其中 Tensorflow 的參數更新的方式是使用 parameter server 來作為權重更新的機制
不同框架的比較
以下是在知乎上很完整的介紹
最近比较火的parameter server是什么?
論文 Parameter Server for Distributed Machine Learning
論文作者本人李沐的介紹頁面
動畫解釋
另一篇【深度学习&分布式】Parameter Server 详解
看完這兩篇
對於參數服務器會有更深入的認識
[AI] MarI/O - Machine Learning for Video Games
MarI/O - Machine Learning for Video Games
MarI/O is a program made of neural networks and genetic algorithms that kicks butt at Super Mario World.
Source Code: http://pastebin.com/ZZmSNaHX
Paper: Evolving Neural Networks through Augmenting Topologies
MarI/O is a program made of neural networks and genetic algorithms that kicks butt at Super Mario World.
Source Code: http://pastebin.com/ZZmSNaHX
Paper: Evolving Neural Networks through Augmenting Topologies
訂閱:
文章 (Atom)