首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >资源 | 一张速查表实现Apache MXNet深度学习框架五大特征的开发利用

资源 | 一张速查表实现Apache MXNet深度学习框架五大特征的开发利用

作者头像
机器之心
发布2018-05-09 15:17:03
7530
发布2018-05-09 15:17:03
举报
文章被收录于专栏:机器之心机器之心

选自AWS blog

机器之心编译

参与:Smith

Apache MXNet 是一个功能全面,且具有高度可扩展性的深度学习框架,可支持创建和训练最新型的深度学习模型。通过它,你可以创建卷积神经网络,LSTM 网络和其它的模型。它支持多种语言,包括但不限于 Python、Scala、R和 Julia 。本文将对 MXNet 五大特征的实现进行介绍。

在本篇文章中,我们对使 MXNet 在 AWS 云中成为开发者友好型框架的一些特征进行了展示。对于更喜欢符号式表现形式的开发者,我们也提供了一张速查表,以在 MXNet 下用 Python 对神经网络进行编码。这张速查表使上手 MXNet 的过程变得简化。对于已经使用此种框架的开发者而言,这也是一个不错的参考手册。

1. 一行代码支持多 GPU 训练

在多个 GPU 上运行的能力是 MXNet 架构的核心部分,你只需要输入训练所用的设备列表。

默认情况下,MXNet 使用数据并行化以在多个 GPU 间对工作负载进行划分。例如,如果你有 3 个 GPU,每一个都接收到完整模型的副本,并且在每一个训练数据批次(training data batch)的三分之一中进行训练。

import mxnet as mx # Single GPU module = mx.module.Module(context=mx.gpu(0)) # Train on multiple GPUs module = mx.module.Module(context=[mx.gpu(i) for i in range(N)], ...)

2. 在多台计算机上进行训练

MXNet 是一种分布式深度学习框架,用于简化在单一服务器或多个服务器中进行的多 GPU 训练。为了用多个服务器进行训练,你需要在所有计算机上安装 MXNet ,确保它们之间可以通过 SSH 进行交流,随后创建一个包含服务器 IP 的文件。

$ cat hosts 
192.30.0.172 
192.30.0.171
python ../../tools/launch.py -n 2 --launcher ssh -H hosts python train_mnist.py --network lenet --kv-store dist_sync

MXNet 使用键值存储(key-value store)以在不同机器间对梯度和参数进行同步处理。这使得你可以进行分布式训练,并且确保可以使用 USE_DIST_KVSTORE=1 对 MXNet 进行编译。

3. 在 Amazon S3 中存储自定义数据迭代器和迭代数据

在 MXNet 中,除了要返回一批数据,以作为包含 “n” 个有相关标注的训练数据的 DataBatch 对象(https://github.com/dmlc/mxnet/blob/master/python/mxnet/io.py)以外,数据迭代器与 Python 迭代器目标是相似的。MXNet 对 NDArray 和 CSV 这样的一般数据类型会运用预生成和高效的数据迭代器。对于分布式文件系统上的高效 I/O,它也有一种二进制格式,比如 HDFS 。

你可以通过扩展 mx.io.DataIter 类目以创建自定义数据迭代器。关于如何对此特征进行实施,可参阅此教程(http://mxnet.io/tutorials/basic/data.html#custom-iterator)。

data_iter = mx.io.ImageRecordIter( path_imgrec="s3://bucket-name/training-data/caltech_train.rec", data_shape=(3, 227, 227), batch_size=4, resize=256)

4. 神经网络可视化

为了使你能够对神经网络架构进行可视化,MXNet 可与 Graphviz(http://www.graphviz.org/)进行集成。为了生成网络可视化结果,你可以使用 symbol (查询被定义网络的最后一层),和被它的 node_atters 属性所定义的网络的形状。下面的实例展示了怎样对 LeNet (http://yann.lecun.com/exdb/lenet/)标准 CNN进行可视化:

mx.viz.plot_network(symbol=lenet, shape=shape)

详细代码和执行指令参阅此教程(https://github.com/dmlc/mxnet-notebooks/blob/master/python/tutorials/mnist.ipynb)。

5. 支持分析工具

MXNet 有一个内置分析工具,你可通过用 USE_PROFILER=1 标志创建 MXNet 来使用它。这可以帮助你在网络中(符号级)一层一层地对执行时间进行概述。这一特征是在操作层级进行归纳的,而不是在函数级,核级(kernel)或指令级进行操作,从而对一般的分析工具(像 nvprof 和 gprof)进行了补足。你可以使用一个环境变量以在整体 Python 程序中对它进行驱动。或者,你可以通过将它整合进下列代码,以在程序的一个子集中对它进行使用。

mx.profiler.profiler_set_config(mode='all', filename='output.json')     
mx.profiler.profiler_set_state('run')      
# Code to be profiled goes here...      
mx.profiler.profiler_set_state('stop')

你可以将分析工具的输出上传到浏览器上,比如 Chrome,并且通过导航到浏览器追踪(tracing)(chrome://tracing)来查看配置文件,如下图所示:

此屏幕快照展示了在 MXNet 中执行的原始 LeNet 架构 MNIST 训练数据集的配置文件。

速查表

现在你已经知道了 MXNet 的一些独有特征,你可能已经迫不及待要上手尝试了。这张速查表(https://s3.amazonaws.com/aws-bigdata-blog/artifacts/apache_mxnet/apache-mxnet-cheat.pdf)可以帮助你开始创建神经网络。它包含一些 CNN,RNN/LSTM,线性回归和逻辑回归的常用架构。使用它就可以学习如何创建数据迭代器和 Amazon S3 迭代器,执行点校验(checkpointing)和保存模型文件。它甚至包含了如何创建一个完整模型架构,以及如何精调一个预训练模型的实例。

想要用 MXNet 开始进行深度学习,可参阅教程 http://mxnet.io/tutorials/index.html 。

相关文章:CVPR 2017李沐介绍MXNet新接口Gluon:高效支持命令式与符号式编程

原文链接:https://amazonaws-china.com/cn/blogs/ai/exploiting-the-unique-features-of-the-apache-mxnet-deep-learning-framework-with-a-cheat-sheet/

本文为机器之心编译,转载请联系本公众号获得授权。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云 HDFS
云 HDFS(Cloud HDFS,CHDFS)为您提供标准 HDFS 访问协议,您无需更改现有代码,即可使用高可用、高可靠、多维度安全、分层命名空间的分布式文件系统。 只需几分钟,您就可以在云端创建和挂载 CHDFS,来实现您大数据存储需求。随着业务需求的变化,您可以实时扩展或缩减存储资源,CHDFS 存储空间无上限,满足您海量大数据存储与分析业务需求。此外,通过 CHDFS,您可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低您大数据分析资源成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档