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挑了一个热门或者正确的方向去发展。我这次打算用它来做LuaTorch7的学习笔记与交互展示,再去看官方文档,甚至已经开始脱离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的支持。为了更方便调试和展示运算过程,Facebook开源了iTorch - IPython(Jupyter) Kernel for Torch,其中可视化展现的部分由Bokeh.js提供,效果如下:

iTorch ScreenShoot

安装步骤

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/facebook/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')