📅  最后修改于: 2023-12-03 14:39:16.648000             🧑  作者: Mango
Apache MXNet(简称为MXNet)是一个可扩展的、高效的深度学习框架。MXNet最初由国立台湾大学的Distributed Systems Lab孵化并由Amazon Web Services赞助。MXNet提供了一种可移植的、分布式的神经网络训练和推理的一体化平台。Apache MXNet的系统架构由以下组件构成:
MXNet框架是一个深度学习计算引擎,支持动态和静态计算图。它是一种以动态图为主的计算引擎,具有自动求导能力。用户可以以Python、R、Scala、C++、Julia等多种编程语言来编写MXNet的程序。
MXNet支持动态计算图,也就是计算图可以在运行时构建、修改和执行。这种方式具有以下优点:
MXNet还支持静态计算图,可以在编写代码时对计算图进行修改和编译。这种方式具有以下优点:
MXNet运行时是一个底层引擎,负责计算机视觉、自然语言处理、推荐系统等深度学习应用的推理和训练。MXNet运行时支持多种硬件加速器(如NVIDIA GPUs、AMD GPUs、Intel GPUs、Apple GPUs、Qualcomm DSPs、FPGAs等),并支持CPU和GPU的混合计算。
MXNet运行时还包括以下几个子系统:
NDArray是MXNet的核心数据结构,类似于多维数组。NDArray支持自动求导和分布式计算,并可直接访问GPU和CPU的内存。NDArray是MXNet与其他框架的交互数据格式。
自动求导是MXNet的核心功能之一,MXNet可以自动构建计算图,并根据计算图自动计算梯度。MXNet支持动态和静态计算图,并支持高级的求导运算(如二阶求导)。用户可以在MXNet程序中灵活使用自动求导功能。
算子(operator)是MXNet中的基本计算单位,类似于函数。MXNet支持数百种算子,包括卷积、池化、全连接等常用算子,还支持循环神经网络、图卷积网络等复杂算子。用户可以方便地使用MXNet官方提供的算子,并可以自定义算子。
MXNet通过多种网络拓扑结构来支持分布式训练,包括数据并行、模型并行、混合并行等。MXNet还提供了高效的参数服务器、数据加载器和通信库,以支持高效的分布式训练。
MXNet生态系是由社区驱动的,包括MXNet applications,MXNet model zoo,MXNet Gluon等三个子系统。
MXNet应用子系统是由MXNet社区开发的MXNet应用程序,如残差网络、多任务学习等。MXNet应用程序广泛应用于计算机视觉、自然语言处理、推荐系统等深度学习应用。
MXNet模型库子系统提供了一些已经预训练好的深度学习模型,包括AlexNet、ResNet、MobileNet等常用模型。用户可以直接使用这些模型来构建深度学习应用程序。
MXNet Gluon是MXNet的高级API之一,它提供了一种简洁、灵活、可扩展的深度学习编程接口,可以帮助用户快速构建模型、训练模型、进行推理。MXNet Gluon可以实现动态计算图、静态计算图,简化了MXNet的使用。