上海人工智能实验室&商汤科技技术
本项目由上海人工智能实验室&商汤科技投递并参与“数据猿年度金猿策划活动——2021大数据产业创新技术突破榜榜单及奖项”评选。
数据智能产业创新服务媒体
——聚焦数智 · 改变商业
模块注册机制基于注册器和构建器,可以轻松地进行模块拓展,而不需要在原有框架代码中进行改动。使用注册器管理字符串到类的映射,其中支持注册的模块类型包括但不限于模型结构、数据预处理模块、优化器。使用构建器可以将配置文件转换成对应的模块,其提供了灵活的构建方式,使得可以构建定制化的训练流水线。模块注册机制的另一特性是采用分层策略划分模块的注册域,不仅能够避免跨项目间同名模块的冲突,也能够支持跨项目间模块的相互调用。
技术说明
模块注册和跨项目调用机制
开发算法工具库以解决人工智能基础理论知识与商用业务落地工程经验间脱节的问题。OpenMMLab基于在学术研究和行业落地的经验,对 AI算法进行标准化模块工具开发,大大降低具体行业业务人员的算法学习成本,将以工业化的人工智能研究颠覆传统手工作坊式的研究方式,提供先进的研发工具,使人工智能研究进入快车道。
算法核心组件作为开放算法体系的基础,为算法提供公共的架构支持和模块实现。核心组件主要分为三个部分:基础支持库、通用算子和训练流程框架。基础支持库提供了友好的文件读写接口、图像视频处理接口、基础工具库等,通用算子提供了常用算子的高效的 GPU 实现,训练流程框架提供了通用的算法训练流程支持,使得体系内的算法能够在相同的架构中进行训练。
在 OpenMMLab 开源算法体系的整体架构中,突出两个特点:模块化和简洁化。模块化让用户可以更灵活地进行排列组合,以及开发新的方法和模块;简洁化让用户不用过多关注和核心逻辑无关的事情,将辅助功能交由框架自行处理。
OpenMMLab 开源算法体系通过配置文件、注册器和构建器实现模块化的基础支持,然后在模块层面将数据、模型等进行拆解和抽象,进行模块化的实现,在最顶层通过执行器来实现流程的简洁化。
注册器提供了在不修改算法框架核心代码的前提下进行模块拓展的能力。通过管理字符串到类的映射,可以实现从配置文件直接构建模块。在开放算法体系中,不论是模型结构,数据预处理组件,还是优化器,甚至顶层的训练流程,都是通过这种方式来构建的,给用户提供了极大的拓展空间。
图2-2 MMCV 中注册器的构建机制
基于注册器和构建器,可以轻松地进行模块拓展,而不需要在原有框架代码中进行改动,这也是OpenMMLab 推荐的进行算法开发的流程。
在 OpenMMLab 中,Registry 类可以提供一种完全相似的对外装饰函数来管理构建不同的组件,例如 backbones、head 和 necks 等等,Reg