MXNet -aws深度学习框架之选择

MXNet -aws深度学习框架之选择

机器学习在我们的生活和我们的商业中扮演越来越重要的角色,并且机器学习被广泛地用于一些传统算法解决不了或者很难解决的领域

在亚马逊,机器学习一直是很多业务流程的关键,从商品推荐到反欺诈,从库存水平监测到书籍分类再到恶意评论检测,亚马逊有很多的应用领域用到机器学习,比如:搜索,自主运行的无人机,仓库中心的机器人,文本和语音识别,等等。

在机器学习算法之中,有一类叫深度学习的算法,这种算法可以吸收大量的数据,并且可以优雅地利用数据。这种算法可以用于照片的中的人脸识别,一段文本的意义,或者识别出语音中的词。现在已经出现一整套框架去帮助开发者用深度学习去训练和定义人工智能模型。现在已经有很多开源的深度学习框架可以被普通人学习和使用。现在流行的深度学习框架被aws所支持,包括:Caffe, CNTK, MXNet, TensorFlow, Theano和 Torch。

在这些所有的流行框架中,aws认为MXNet是最具可拓展性的框架,如果努力推广MXNex,我们相信AI社区将从中获得收益。现在aws已经宣布将MXNet作为官方的深度学习框架,aws将贡献代码并且完善文档,从而帮助提高MXNet生态的整体水平。aws将和其他的组织合作从而推动MXNet的发展。

aws和所支持的深度学习框架

在aws一直相信客户的选择,aws的全球支持也会给客户提供相关的工具、系统和软件,并且给他们提供正确的配置实例,AMIs软件还有管理系统。就像Amazon RDS,那里提供了诸如Mysql,PostgreSQL, 和 MariaDB等开源系统。在深度学习框架里面,我们也会在EC2实例中支持流行的开源深度学习框架,也会在其中配置合适的工具。

亚马逊EC2以其广泛的实例类型和具有大量内存的GPU而成为深度学习培训的重心。为此,aws创建了一套的工具去帮助客户更容易地开始使用:深度学习AMI,这上面已经预先安装好了流行的深度学习开源框架,并且可以使用CUDA驱动程序来使用GPU加速,这些驱动已经提前安装并且已经提前配置好了,可以随时使用;并且还支持像Anaconda和 Jupyter这样的工具。开发者也可以使用分布式深度学习CloudFormation模板去创建更大规模的,可伸缩的P2实例。

亚马逊将继续去投资深度学习技术,aws将继续在可用性,可扩展性和功能方面改进所有这些框架。与此同时,我们计划为MXNet做出重大贡献。

如何选择深度学习框架

当选择深度学习框架的时候,开发者,数据科学家和研究人员应主要考虑以下三个主要因素:

1. 可伸缩规模的多重cpu去训练更大的,更复杂的数据集还可以培养更大,更复杂的模型。深度学习要花费几天或者几周的时间去训练。所以,即使是适度地改进也会在开发和评估新模型上产生巨大的差异。

2. 开发速度和可编程性,尤其去使用开发人员熟悉的编程语言,以至于他们可以快速地构建新的模型还可以更新代码

3. 可以运行在不同的设备和不同的平台上,因为深度学习模型要运行在许许多多不同的地方,从笔记本电脑和能通过大型网络互联和大量的计算能力服务器群,到通常是连接相距甚远设备的移动通讯工具,这些将更少依赖网络互联和相当少的计算力。

对于 AWS 的开发者和很多我们的客户而言,这三件事同样重要。经过慎重地评估,我们选择 MXNet 作为亚马逊的深度学习框架,我们计划在现有和即将推出的新服务中广泛使用它

aws已经开展了一系列工作,作为承诺的一部分,我们将通过贡献代码(已经做了很多工作)积极地促进和支持开源,改进在线和 AWS 的开发人员体验和帮助文档,并持续改进可视化、开发环境,帮助开发者更方便地从其他框架迁移进来

MXNet介绍

MXNet 是一个全功能,灵活可编程和高扩展性的深度学习框架,支持深度学习模型中的最先进技术,包括卷积神经网络(CNN)和长期短期记忆网络(LSTM)。MXNet 由学术界发起,包括数个顶尖大学的研究人员的贡献,这些机构包括华盛顿大学和卡内基梅隆大学。

「MXNet 是在卡内基梅隆大学中诞生的,它是我所看到的最完美的深度学习可扩展框架,它可以让计算机科学更加美好。让不同学科,不同工作的人们团结在一起。我们对亚马逊选择 MXNet 感到兴奋,MXNet 将由此变得更加强大。」卡内基梅隆大学计算机科学系主任 Andrew Moore 说道。

MXNet 伸缩性

深度学习框架在多核心处理器中的运行效率是其性能的重要指标。更高效的伸缩性可以让训练新模型的速度显著提高,或在相同的训练时间内大幅提高模型的复杂性。

这正是 MXNet 的优势:aws正在使用越来越多的 GPU 训练图像分析算法 Inception v3(在 MXNet 中实现并在 P2 实例上运行)。MXNet 不仅具有所有已知库中最快的吞吐量(每秒训练的图像数量),而且吞吐量提高几乎与用于训练的 GPU 数量成正比(比例为 85 %)。

除了高可扩展性,MXNet 还提供混合编程模型(命令式和声明式),同时兼容多种编程语言(包括 Python、C ++、R、Scala、Julia、Matlab 和 Java)的代码。

MXNet 中的高效模型和可移植性

计算效率很重要(并且与可扩展性紧密相关),但是内存使用量也同样重要。在运行多达 1000 层的深层网络任务时,MXNet 只需消耗 4GB 的内存。它还可以跨平台移植,并且核心库(具有完整功能)可以整合进单个 C ++源文件中,并为 Android 和 iOS 进行编译。你甚至可以使用 Java 扩展在浏览器中运行它。

你可能感兴趣的