如何使用极客云的Jupyter Notebook进行深度学习计算

请不要直接从 /data 读取数据训练,/data是网络存储,用来方便用户在不同机器间中转数据而设计。
直接从 /data 读取数据训练会让GPU一直等着数据传输,导致训练速度非常的慢。

极客云网站首页的链接是:
https://www.jikecloud.net/
打开之后就会看到网站对云主机的介绍,感兴趣的可以点击“如何使用”来查看帮助文档。




如果是新用户注册,可以点击“现在注册”进入注册页面。



注册之后就来到了“我的云主机”页面,点创建实例跳转到创建页面。



在“创建实例”页面可以选择你需要的机型来创建虚拟主机,现在注册新账号给5块钱优惠券可以免费使用所有机型,
如果你填了一个老用户的手机号邀请注册的话,当被邀请人充值满10元时,你们两个人都会获得 10元 的优惠券,
以后你充值的时候还会另外赠送优惠券。

我们选择双卡TitanXP机型创建虚拟主机,选择好填写好密码点“创建”按钮。




点击“创建”按钮并等待片刻后,会回到“我的云主机”页面,此时可以看到创建的云主机已经显示在列表界面里面了。



现在列表界面有Jupyter Notebook的链接了。点这个链接就可以进入Jupyter Notebook了,使用起来很方便。



我们还是跑一下mnist手写数字的训练Demo,点击文件的链接可以显示文件的内容。
在文件内容页面复制好代码以后,点屏幕左上角的那个图标回到Jupyter首页。



回到首页后点右边的New下拉菜单,选择新建一个Python 3的Notebook。



创建好Notebook之后,在图示处粘贴刚刚复制的代码。



复制好代码之后,就可以点击Run运行啦。



可以看到点击Run之后,在页面下方就出现了程序的log,这说明我们的程序已经欢快的运行起来啦~



上面那种方式其实是给大家演示了一下在Jupyter Notebook里面写程序并且运行程序的方法。
如果你已经上传好了几个python文件的话,可以在主页点完的New下拉菜单,
然后新建一个Python 3的Notebook之后,运行 %run mnist_deep.py 来执行python文件。



看,它这就欢快的跑起来啦~

如何使用自己上传的数据集进行训练

刚刚的代码中使用的mnist数据集已经预先放置在了云主机的内部,如果您需要自己上传数据集的话,
您可以通过菜单 我的 -> 数据 进入数据页面来上传您自己的数据集。



在 我的数据 页面上传的数据,您创建的所有云主机都能访问。
当您的数据集文件数量不大的时候,推荐使用上传目录功能。
如果您的数据集包含大量文件,推荐打成压缩包再上传。可以节省很多上传时间。



由于mnist的数据文件数量很少,所以我们使用上传目录功能。



点击上传后,您会在数据页面看到上传的进度,以及是否结束。



上传结束后,您将会在云主机的/data目录下看见所有您上传的文件。



由于 /data 目录是网络存储,读写速度受限于网络,直接在 /data 读取数据进行训练的话,速度会很慢,所以我们推荐先把数据
从 /data 拷贝到 /input 或 /root 然后再训练。关于/input /data的详细讲解请参考:关于几个特殊文件夹的说明

首先进入Jupyter的Terminal



然后从/data 拷贝所有的数据到/input,使用rsync拷贝会看到拷贝的进度。
此处使用的指令是 rsync -ah --progress /data/mnist_data/ /input/mnist_data/
意思是把 /data/mnist_data/ 这个文件夹的所有内容复制到 /input/mnist_data/ 这个文件夹。



拷贝完之后确认文件以及拷贝到了/input



修改mnist_deep.py文件,让他把 /input/mnist_data 文件夹当做数据文件夹。



运行程序,就可以看见它从 /input/mnist_data 读取了数据进行训练了。



如何使用迁移功能

如果您上一次使用的机器这次上来发现已经被独占了,或者您想把一台您已经配置好您自己的环境的机器复制几份
同时跑一下不同参数训练的话, 您可以使用迁移云主机的功能来实现。

为了举例我们先创建一个fastai的环境,这个环境里面是没有tensorflow的。
首先在云主机列表页面点击 创建实例 进入创建页面。



然后选择fastai环境,并创建云主机。



回到云主机列表页面,点击 Jupyter Notebook 进入 Jupyter



进入 Jupyter 之后点击右上角的 New->Terminal 进入 Terminal 来查看一下安装的包



进入 Terminal 之后,我们可以发现这个环境里面没有tensorflow




我们还想安装一下ruby,用irb来算一些简单的计算,可以发现这个环境里面也没有安装ruby



下面我们来安装一下tensorflow,使用指令 pip install tensorflow-gpu==1.8.0 --index https://pypi.mirrors.ustc.edu.cn/simple/




现在可以发现已经安装好了tensorflow,可以跑训练了



下面我们来安装一下ruby,使用指令 apt-get install ruby -y



现在来测试一下发现可以用irb来做简单计算了。



现在我们已经有了一台装好了tensorflow和ruby的云主机环境了,现在我们想在TitanXP机器上使用同样的环境。
迁移并不要求来源主机必须关机,所以您开机和关机的时候都可以迁移,
只是关机再迁移可以避免在迁移过程中来源机器有一些修改,从而保证两个机器会一模一样。
我们先回到云主机页面,点击 管理实例 -> 开始迁移



这时会弹出选择机型界面,我们选择TitanXP机型和与刚刚机器相同的fastai环境。



之后回到云主机页面,会有一个迁移进度的显示,它在迁移完成后会自动刷新页面。但迁移进度是不会自动刷新的,您如果想知道进度,可以手动刷新页面。



迁移完成后,云主机列表会显示迁移完成。这时候就可以把新机器开机了。



用前面同样的方法进入迁移好的云主机中的 Jupyter 和 Terminal 可以发现 tensorflow 已经可以直接 import 了。



使用tensorflow训练也没有问题



irb也可以直接使用了。



如何使用Tensorboard

极客云的云主机也安装了Tensorboard,方便大家使用。要使用Tensorboard,首先确认云主机处于 独占使用中 的状态。



在这里我们使用tensorboard官方的例子做演示,程序下载地址是:
https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
在命令行中执行:
wget 'https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py' -O /root/mnist_tb.py
下载这个文件并保存到 /root/mnist_tb.py
保存好文件之后打开,可以看见他的log保存的地址是/tmp



由于我们的tensorboard的监视目录是 /output ,这里我们可以使用 ln -s /tmp /output 软连接的方式把 /tmp 软连接到 /output
可以执行 ll / 看到软连接已经建立完毕。



下面执行 tb 回车,您如果好奇的话也可以用alias tb来观察这条指令的详细内容。



执行好 tb 回车之后,我们执行一下这个示例程序:



下面我们回到 我的云主机 页面,点击tensorboard链接,打开tensorboard页面,在弹出的对话框中点击 确认 按钮。




可以看到tensorboard已经可视化显示出了训练的数据。



总结:
新版的极客云深度学习实例,既装好了所有的深度学习框架,又新加入了Jupyter Notebook方便使用。
实现了零设置执行深度学习的程序,想了解更多细节可以访问极客云的网站:
https://www.jikecloud.net/