Jupyter上的Lua與torch7
Jupyter & IPython
Jupyter 是一個基于 IPython Notebook 的項目,我記得最開始Jupyter的目標還是致力于在IPython Notebook上通過擴展各種內核實現對不同編程語言的支持,但是現在再來看已經變成了“支持跨語言的交互式數據科學和科學計算”:
support interactive data science and scientific computing across all programming languages.
我一直還是把Jupyter當做一個好用的Markdown編輯器以及其他編程語言的虛擬運行環境來用,并沒有關注過項目具體的發展。前段時間 Github支持渲染 .ipynb 文件 (測試: test_jupyter.ipynb ),以及后來Google開源的 Deepdream 項目,通過IPython Notebook可視化圖片分類的深度學習過程中相鄰神經網絡層次之間的信息傳遞(我懷疑是不是這個大新聞促使了Jupyter向數據科學方向的轉變?),可以看到Jupyter挑了一個熱門或者正確的方向去發展。我這次打算用它來做 Lua 和 Torch7 的學習筆記與交互展示,再去看官方文檔,甚至已經開始脫離 IPython 走向獨立。
Lua & Torch & iTorch
提到Lua很多人第一反應就是“寫游戲的”(我最初接觸它也是因為 Cocos2d-Lua ),Cocos2d-x中的Lua只是C/C++的binding,Lua的定位本身就是跨平臺嵌入式腳本語言。Lua可能并不像其它語言那么熱門,我看到有人認為“說Python是Toy Language是因為你沒用過Lua” :P 。國內社區似乎不怎么活躍,在用的人仍然在用,不用的人也有大把大把新的語言和框架涌現出來可供選擇。在國內提到Lua不得不提的 云風 和他的 天網-skynet ;最近錘子贊助了 OpenResty 也就是 Nginx_lua ;之前上過 紐約時報 的 neuraltalk (自動生成場景圖片的文字描述)從Python+numpy轉到Torch( neuraltalk2 )。這些是進入我視線范圍內的Lua的進展,也就是集中于后端服務程序和機器學習(數據科學)。
Torch之于Lua(LuaJIT)就像Numpy之于Python,不僅如此,Torch還提供了神經網絡模型和GPU的支持。為了更方便調試和展示運算過程,非死book開源了 iTorch - IPython(Jupyter) Kernel for Torch,其中可視化展現的部分由 Bokeh.js 提供,效果如下:
安裝步驟
System: Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-67-generic x86_64)
1. install torch
基本上按照 官網 的步驟就可以了,時間會比較長,尤其是在網速比較慢的時候:
# in a terminal, run the commands curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash git clone https://github.com/torch/distro.git /torch --recursive cd /torch; ./install.sh
上面的步驟會先安裝LuaJIT和Lua的包管理工具 Luarocks 。
2. install Jupyter
按照 Jupyter文檔 ,如果沒裝 pip3 先裝起來:
sudo apt-get install build-essential python3-dev # 還有下面這一步 sudo apt-get install python3-pip
然后安裝Jupiter(國內網絡記得換國內pip鏡像):
pip3 install jupyter -i http://pypi.douban.com/simple
3. install iTorch
首先安裝 ZeroMQ 依賴:
sudo apt-get install libzmq3-dev
然后下載安裝iTorch:
git clone https://github.com/非死book/iTorch.git cd iTorch luarocks make
4. Running a notebook server
首先查看是否存在Jupyter配置文件,若沒有則新建一份:
ls ~/.jupyter # 如果沒有 jupyter_notebook_config.py 則執行 jupyter notebook --generate-config
準備Hased Password:
# IPython from notebook.auth import passwd passwd('mypassword') # Output => 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
更改 ~/.jupyter/jupyter_notebook_config.py :
# 去掉 c.NotebookApp.password 注釋 c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False
5. Run itorch & Hello iTorch
一切準備就緒,運行 itorch notebook !
感興趣的可以嘗試一下:Hello iTorch,合理使用,切勿亂搞~ Password('rainy.im') 。
來自: http://blog.rainy.im/2016/01/02/lua-and-torch7-on-jupyter/