本系列将利用阿里云容器服务的机器学习解决方案,帮助您了解和掌握TensorFlow,MXNet等深度学习库,开启您的深度学习之旅。
- 第一篇: 打造深度学习的云端实验室
- 第二篇: GPU资源的监控和报警,支撑高效深度学习的利器
- 第三篇: 利用TFRecord和HDFS准备TensorFlow训练数据
我们工作中常常会问到:“深度学习从哪里学起?” 在读过了大量的文章,看过了无数的教程后,许多朋友依然表示很无感。这其实很正常,因为纸上得来终觉浅么,绝知此事要躬行。为了帮助大家快速上手这一个机器学习分支,阿里云容器服务机器学习解决方案提供了丰富的开源框架帮助大家实践,其中包括TensorFlow, Keras和MXNet,为了方便您学习和掌握,我们会编写一系列的文章,介绍其中的细节。
本文是这个系列中的第一篇文章,我会在基于阿里云容器服务的机器学习解决方案,创建一套基于TensorFlow的Jupyter开发环境,并在上面开发一个简单Minst应用,最后利用TensorBoard观察训练效果。当然,你也可以在上面玩转包括 Keras和MXNet等框架,在本文中我们也介绍了如何使用MXNet的例子。
Jupyter notbook简介
Jupyter notebook 是基于网页应用程序,你可以在上面以交互的方式编写和注释Python代码。这是一种做试验,做研究,并分享工作内容的有效方法。
为什么要在阿里云上运行Jupyter?
深度学习应用基本都是计算密集型的,如果用你的笔记本可能要运行个三五天。而换成GPU的话,训练和预测的速度可能提升5到10倍。但是个人购买GPU卡并不合算,而阿里云最近推出了弹性GPU服务,可以按小时收费,给了我们寻常百姓一次可以和深度学习亲密接触的机会。Jupyter notebook 可以提供与本地计算机上运行相同的体验,同时也方便你利用阿里云上的GPU服务开启你的深度学习之旅,请和跟着我们的教程一步步开始吧!
准备数据卷和容器集群
需要创建容器集群,并且 创建数据卷。当然也可以使用 ROS 模板一键式的创建 GPU 容器集群并添加数据卷。这里我们就可以得到一个GPU集群,可以看到其中的GPU设备:
并且可以看到其中的数据卷。
体验云端创建开发环境
登录到容器服务解决方案,在 模型开发
中点击 创建
这样,就可以看到一个表单。首先通过下拉框选择刚才创建的集群名称
,点击训练框架
,这时可以看到一系列深度学习框架的列表,其中包括TensorFlow, Keras和MXNet的不同版本, 还可以指定python2和python3的版本,这里我选择TensorFlow的1.0.0版本。
至于GPU数量,由于创建的是一个单GPU的集群,可以设置GPU为1. 如果你创建了CPU集群,就只能设置GPU为0.
这里,还要选择一下刚才创建数据卷,这个数据卷会映射到深度学习环境的/input
目录。
因为Jupyter有安全设置,需要指定一下访问密码。
最后,由于需要通过TensorBoard监控训练效果,所以需要勾选上训练监控
。
这里有一个很重要的知识点,就是训练日志路径
,实际上这个路径是TensorBoard读取训练日志的路径。假设你在这里指定的路径是/output/training_logs
,你就需要在训练代码里写下这样的代码
summary_writer = tf.summary.FileWriter('/output/training_logs')
之后就可以点击创建
了。
一旦创建成功,就跳转到应用列表
页面,这时可以在看到刚刚创建的应用, 单击应用名称进去。
单击 路由列表
,就可以看到两个链接,分别是以 jupyter
和tensorboard
为开头的链接
单击jupyter
开头的链接,并且输入 jupyter 的密码,就能进入 jupyter 环境。
查看Jupyter上的GPU
首先在Jupyter主页面中,创建Terminal
在Terminal里执行nvidia-smi
,可以看到Jupyter环境能使用GPU,剩下只需要在代码中加上GPU调用就好了
上传Mnist训练数据
获得训练集与测试集数据,
文件 | 内容 |
---|---|
train-images-idx3-ubyte.gz | 训练集图片 - 55000 张 训练图片, 5000 张 验证图片 |
train-labels-idx1-ubyte.gz | 训练集图片对应的数字标签 |
t10k-images-idx3-ubyte.gz | 测试集图片 - 10000 张 图片 |
t10k-labels-idx1-ubyte.gz | 测试集图片对应的数字标签 |
利用OSS的图形客户端用拉拽的方式非常方便的上传以上数据
同时在Jupyter的客户端也可以看到在/input
文件夹已经有这些文件的列表了:
在Jupyter中开发和运行mnist代码
Jupyter提供了上传代码的机制,但是如果需要使用一个项目,git
是一个比较好的选择。
在Termnial中执行git clone https://github.com/cheyang/TensorFlow-Examples.git
再回到Jupyter的主页面,就可以看到下载的TensorFlow-Examples
, 跳到TensorFlow-Examples/notebooks/4_Utils
,选择tensorboard_basic.ipynb
这样,就可以在Jupyter中开发和运行mnist代码, 需要把TensorFlow的训练日志路径,设置成前面指定的训练日志路径
,对于本例子来说是/output/training_logs
, 点击Run All
由于在配置好GPU的TensorFlow中,即使代码中没有明确指定运行设备也会优先选择GPU,通过查看日志我们可以发现,mnist训练实际上使用的是GPU资源。
使用TensorBoard查看训练效果
回到应用的路由列表
,点击其中tensorboard
为开头的链接
这样我们就可以看到完整的训练效果展示, 包括loss的趋势,图片示例以及计算图
除了TensorFlow,我们也支持MXNet等框架,以下是MXNet的例子
云端Jupyter环境开发MXNet的应用
对于MXNet我们同样也支持TensorBoard的展示,可以使用understanding_vanish_gradient.ipynb来测试一下
在创建MXNet的开发环境后,你也可以开发并且监控基于MXNet的深度学习应用
总结
我们可以利用阿里云容器服务的机器学习解决方案,轻松的搭建在云端搭建TensorFlow,MXNet和Keras的环境,并且利用TensorBoard追踪训练效果。
想了解更多的细节,欢迎访问机器学习解决方案, 里面提供了详细的介绍和完整的视频,是帮助你开启深度学习之旅的起点。
欢迎扫码加入钉钉群一起讨论: