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来说最重要的一个部分.