
- Apache MXNet 教程
- Apache MXNet - 首页
- Apache MXNet - 简介
- Apache MXNet - 安装 MXNet
- Apache MXNet - 工具包和生态系统
- Apache MXNet - 系统架构
- Apache MXNet - 系统组件
- Apache MXNet - 统一算子 API
- Apache MXNet - 分布式训练
- Apache MXNet - Python 包
- Apache MXNet - NDArray
- Apache MXNet - Gluon
- Apache MXNet - KVStore 和可视化
- Apache MXNet - Python API ndarray
- Apache MXNet - Python API gluon
- Apache MXNet - Python API autograd 和初始化器
- Apache MXNet - Python API Symbol
- Apache MXNet - Python API Module
- Apache MXNet 有用资源
- Apache MXNet - 快速指南
- Apache MXNet - 有用资源
- Apache MXNet - 讨论
Apache MXNet - 简介
本章重点介绍 Apache MXNet 的功能,并讨论此深度学习软件框架的最新版本。
什么是 MXNet?
Apache MXNet 是一款功能强大的开源深度学习软件框架工具,帮助开发者构建、训练和部署深度学习模型。在过去的几年里,从医疗保健到交通运输,再到制造业,实际上在我们日常生活的方方面面,深度学习的影响都非常广泛。如今,许多公司都寻求使用深度学习来解决一些难题,例如人脸识别、目标检测、光学字符识别 (OCR)、语音识别和机器翻译。
因此,Apache MXNet 获得了
一些大型公司的支持,例如英特尔、百度、微软、Wolfram Research 等。
公共云提供商的支持,包括亚马逊网络服务 (AWS) 和微软 Azure。
一些大型研究机构的支持,例如卡内基梅隆大学、麻省理工学院、华盛顿大学和香港科技大学。
为什么选择 Apache MXNet?
当时存在各种深度学习平台,如 Torch7、Caffe、Theano、TensorFlow、Keras、Microsoft Cognitive Toolkit 等,你可能会好奇为什么选择 Apache MXNet?让我们来看看其背后的原因。
Apache MXNet 解决了一些现有深度学习平台最大的问题之一。该问题在于,为了使用深度学习平台,必须为不同的编程风格学习另一个系统。
借助 Apache MXNet,开发者可以充分利用 GPU 和云计算功能。
Apache MXNet 可以加速任何数值计算,并特别强调加速大型 DNN(深度神经网络)的开发和部署。
它为用户提供了命令式和符号式编程的功能。
各种功能
如果您正在寻找一个灵活的深度学习库来快速开发尖端的深度学习研究,或者一个强大的平台来推动生产工作负载,那么您的搜索在 Apache MXNet 结束。这是因为它具有以下功能:
分布式训练
无论是多 GPU 还是多主机训练,都具有接近线性的扩展效率,Apache MXNet 允许开发者充分利用其硬件。MXNet 还支持与 Horovod 集成,Horovod 是 Uber 创建的一个开源分布式深度学习框架。
对于此集成,以下是 Horovod 中定义的一些常见分布式 API:
horovod.broadcast()
horovod.allgather()
horovod.allgather()
在这方面,MXNet 为我们提供了以下功能:
设备放置 - 借助 MXNet,我们可以轻松指定每个数据结构 (DS)。
自动微分 - Apache MXNet 自动执行微分,即导数计算。
多 GPU 训练 - MXNet 允许我们根据可用 GPU 的数量实现扩展效率。
优化的预定义层 - 我们可以在 MXNet 中编写自己的层,并优化预定义层以提高速度。
混合
Apache MXNet 为用户提供了一个混合前端。借助 Gluon Python API,它可以弥合其命令式和符号式功能之间的差距。可以通过调用其 hybridize 功能来实现。
更快的计算
线性运算(如数十或数百次矩阵乘法)是深度神经网络的计算瓶颈。为了解决此瓶颈,MXNet 提供了:
针对 GPU 优化的数值计算
针对分布式生态系统优化的数值计算
借助自动化常用工作流,可以简洁地表达标准 NN。
语言绑定
MXNet 与高级语言(如 Python 和 R)深度集成。它还支持其他编程语言,例如:
Scala
Julia
Clojure
Java
C/C++
Perl
我们不需要学习任何新的编程语言,而是 MXNet 结合混合功能,允许从 Python 到我们选择的编程语言中的部署实现异常平滑的过渡。
最新版本 MXNet 1.6.0
Apache 软件基金会 (ASF) 于 2020 年 2 月 21 日在 Apache License 2.0 下发布了 Apache MXNet 的稳定版本 1.6.0。这是最后一个支持 Python 2 的 MXNet 版本,因为 MXNet 社区投票决定在后续版本中不再支持 Python 2。让我们来看看此版本为用户带来的一些新功能。
与 NumPy 兼容的接口
由于其灵活性和通用性,NumPy 已被机器学习从业者、科学家和学生广泛使用。但众所周知,如今诸如图形处理单元 (GPU) 等硬件加速器已越来越多地融入各种机器学习 (ML) 工具包,因此 NumPy 用户为了利用 GPU 的速度,需要切换到具有不同语法的新的框架。
借助 MXNet 1.6.0,Apache MXNet 正在朝着与 NumPy 兼容的编程体验迈进。新接口为熟悉 NumPy 语法的从业者提供了同等的可用性和表达能力。此外,MXNet 1.6.0 还使现有的 Numpy 系统能够利用 GPU 等硬件加速器来加速大规模计算。
与 Apache TVM 集成
Apache TVM 是一款面向 CPU、GPU 和专用加速器等硬件后端的开源端到端深度学习编译器堆栈,旨在弥合注重生产力的深度学习框架与注重性能的硬件后端之间的差距。借助最新的 MXNet 1.6.0 版本,用户可以利用 Apache(孵化) TVM 以 Python 编程语言实现高性能算子内核。此新功能的两个主要优势如下:
简化了以前基于 C++ 的开发流程。
能够在多个硬件后端(如 CPU、GPU 等)之间共享相同的实现。
现有功能的改进
除了上述 MXNet 1.6.0 的功能外,它还在现有功能上提供了一些改进。改进如下:
对 GPU 进行逐元素运算分组
众所周知,逐元素运算的性能受内存带宽限制,因此,链接此类运算可能会降低整体性能。Apache MXNet 1.6.0 执行逐元素运算融合,这实际上会在可能的情况下生成即时融合运算。此类逐元素运算融合还可以减少存储需求并提高整体性能。
简化常用表达式
MXNet 1.6.0 消除了冗余表达式并简化了常用表达式。此类增强功能还可以改善内存使用情况和总执行时间。
优化
MXNet 1.6.0 还为现有功能和算子提供了各种优化,如下所示:
自动混合精度
Gluon Fit API
MKL-DNN
大型张量支持
TensorRT 集成
高阶梯度支持
算子
算子性能分析器
ONNX 导入/导出
Gluon API 的改进
Symbol API 的改进
100 多个错误修复