0%

MXNet 源码详解--顶层架构

过去两年用 mxnet 定制了很多 op, 深入学习了 mxnet 源码。本系列以 mxnet v0.7.0 代码为主,深入分析 mxnet 的源码,做一个阶段性的总结,同时也希望能在 mxnet 上进行深度开发的同学提供帮助。

mxnet 的顶层架构如上图所示:
KVStore: 提供 kv 存储,其中一个使用实例是训练参数的存储和更新。
Data Loading: 提供了一个高效灵活的 Data IO 的方法,保证在训练的时候系统供数的速度
NDArray: 用来存储计算数据,同时提供了高效灵活的借口,其它的类似数据结构还有 TBlob, mshadow::Tensor, mshadow::TensorContainer, 其中TBlob和 mshadow::Tensor在 op 的开发中经常用到,要深入理解和掌握。
Symbolic Execution: 提供和静态图的优化和调度执行。v0.7.0 版本只有静态图,最新的版本也提供和动态运算的能力。
Symbol Construction: 提供了构建静态图的方法
Storage Allocator: 提供了高效的内存管理,包括 CPU 的内存和 GPU 的显存
Runtime Dependency: 根据计算图的拓扑依赖,实现依赖分析和计算调度
Resource Manager: 全局资源管理,包括随机数和临时空间
Operators: op 定义,对于实现新的 op 来说最重要的一个部分。