旷视研究院田忠博:旷视深度学习框架天元的开源演进
雷锋网按:8 月 7 日 - 9 日,由中国计算机学会(CCF)主办,雷锋网、香港中文大学(深圳)承办,鹏城实验室、深圳市人工智能与机器人研究院协办的第五届 CCF-GAIR 2020 全球人工智能与机器人峰会如期落地。
8 日,大会与 AI 研习社、OpenI 启智社区联合举办“AI 源创专场”,重点讨论了新基建背景下,国内开源创新建设将催生的新势能,以及其将引发和促进的新产业机会。
会上,旷视研究院高级技术总监田忠博做了主题为《天元深度学习框架的开源演进》的分享。
旷视在数据、算力、算法方面有三大驱动:数据管理平台 MegData 、深度学习云计算平台 MegCompute、深度学习框架 MegEngine,三者共同构成了旷视的 AI 生产力平台 Brain++。
田忠博首先追溯了 Brain++ 的发展,从旷视在 AI 生产力基础设施构建上所积累的强大能力以及天元深度学习框架开源初衷展开,解析了天元深度学习框架的技术特点、迭代历程,及其正在努力构建的开源生态。雷锋网 (公众号:雷锋网) 将田忠博的演讲进行了不改变原意的编辑,以下为全文:
大家好,我是旷视研究院的田忠博,我今天跟大家分享旷视在天元深度学习框架上的进展,也希望能够借助这个机会和在座的各位专家、各位同仁以及观看现场直播的朋友们介绍旷视是如何通过开源开放推动 AI 行业发展的。
旷视 AI 生产力平台 Brain++
我们认为,AI 有三个最主要的核心因素:数据、算力和算法。旷视自研的 AI 生产力平台 Brain++ 包括数据管理平台 MegData ,深度学习云计算平台 MegCompute,今天我要着重介绍的是其中最核心的组件——深度学习框架天元 MegEngine。现在旷视所有的算法研究和生产都是使用 MegEngine 进行的。
简单回顾一下旷视 Brain++ 的发展历程。2014年,MegEngine 立项,我们开始对它进行研发。2015 年,旷视的研发和生产都迁移到了 Brain++ 体系上来,我们多次用这样的技术获得了国际顶级 AI 竞赛的冠军,同时也依托这套技术在旷视研究院持续发布我们最领先的技术成果。2019 年,AI 生产力平台 Brain++ 在乌镇世界互联网大会上获得了“世界互联网先进成果奖”,这是对旷视技术理念和实践的认可。
2020 年 3 月,旷视决定将 Brain++ 的核心组件——深度学习框架天元 MegEngine 开源出来,我们也希望开源出来的框架能够帮助更多企业、研究机构以及学生更好地使用最新的 AI 技术。
我们第一个开源版本是天元 0.3.1,到 2020 年 6 月底,我们发布了 Beta 版,差不多经历了 90 天的时间。这期间有 339 个 committers 为天元贡献代码,代码量从 35 万行增长到 48 万行。
我们也刚刚发布了 0.6 版本。我们有非常积极活跃的开发体系,希望把最新的工作和研究成果体现在天元的代码仓库中。
天元深度学习框架的技术特点
大家可能会想,现在已经有很多的深度学习框架,天元的开源意义是什么?天元能给大家带来什么?我给大家介绍一下天元的总体架构。
天元框架从上到下分成五个层次,最上面是服务开发者的 API 层,大家通过 API 层直接和深度学习框架打交道。我们提供了 Python 和 C++ 的接口,通过 C++ 接口可以进行工业生产和研发。
下面有统一的图的表示层。现在深度学习框架有动态计算和静态计算两种流派,我们有动态图和静态图的表示方式,但在不同的表示方式下有统一的核心计算图,这是天元比较重要的区别。
天元在核心的计算图层提供了优化和编译功能,可以实现自动求导,完成复杂的图优化,使大家通过 API 层,将用户表达的人类可理解的计算范式,转化为机器易执行的范式。
图编译层可以做复杂的代码生成和代码的算子融合,进一步提升效率。
下面的一个层次是运算和运行管理。在运行期间,我们需要管理内存、不同设备的同步,这里包括计算的调度和内存管理的调度。在计算调度方面,我们把所有的设备抽象成流,通过流调度器,跨异构设备的图形可以被非常好地管理起来。
同时,我们在内存方面也下了非常大的功夫。我们有一个非常先进的静态内存管理器和管理机制,通过对整个计算流程的分析和分解,能够排布、安排内存最优的方案。在我们的测算下,静态可以给予相比主流框架 10% 到 20% 的提升。同时我们支持动态内存管理,可以把尺寸可变的内存有效管理起来。
深度优化器可以有效解决在内存比较小的设备上进行大规模模型训练的问题。
最底层我们实现了一整套的计算内核层,实现一套高性能的算子,可以实现跨设备异构计算的统一接口,可以支持 X86、CUDA、ARM 和 ASIC 的设备,包括高性能异构通信库,支撑大规模分布式训练的需求。
深度学习框架天元非常重要、核心的特性就是可以同时在同一个框架内训练、量化、推理。
旷视是全球领先的人工智能产品和解决方案公司,既做人工智能方面的技术研究,同时也有非常强烈的需求把最新的成果变成每个人都可以获得的产品。所以我们在设计框架之初就有非常强烈的想法,把训练和推理在同一个框架内解决。
现在我们发现它有非常大的好处,比如说能够实现一次训练多端部署,能实现从训练到量化到推理的完整解决方案,可以支持各种主流量化范式,特别是量化感知训练,可以在精度几乎无损失的情况下进行低精度模型的生产,同时保持最好的性能。
训练、推理、量化放在一起,不需要复杂的模型转化,不需要其它中间工具辅助,还可以借助这样的机制,在整个流程中嵌入自动模型优化手段,极大加速从原始算法到产品生成的流程。
旷视发现,静态的计算范式和动态范式各有长处。动态便于科学实验,静态方案非常适合做生产部署,所以我们把静态图、动态图在同样的范式内整合起来。我们可以把动态运行的部分变成静态运行的部分,关掉也可以用动态的方式执行,可以利用动态强大的表达能力和表达特性,很容易把全部的范式进行快速的产品部署。我们也可以进行混合编程,在部分结构灵活地穿插起来。
对于现在的深度学习框架来说,计算速度和性能不仅在训练侧,部署侧也越来越关键,我们可以看到,天元与主流框架训练时的对比,包括单卡和 8 卡的对比,都拥有明显的性能优势。推理框架的性能也非常出色,有 10%、20% 甚至更多的性能提升。
得益于内存方面的工作,我们不管在训练还是推理方面,对很多 IoT 设备、手机应用功耗都更友好,适用面更多。
我们还有非常全面的平台支持。Beta 版不仅包括英特尔 x86,还有 SSE、AVX、AVX512-VNNI。CUDA 支持 Maxwell、Pascal、Turing,ARM 支持 V7、V8、V8.2。天元可以实现更高的性能,更加灵活高效,而且可以在同一平台上同时支持英特尔 8 和 float 32 的推理,这样大家可以在同一个平台上非常容易地调用自己的量化模型。
天元还有一个特点是简单易用。我们做开源框架,用户是否容易上手使用非常关键。我们会不断提升用户使用体验,完善优化我们的文档体系、工具体系,帮助大家快速上手。
现在的主流框架中,其实对于推理、量化的部分,相关介绍文章非常少,0.5.0 版本里我们完成了一整套推理部署教程,让大家可以一步一步完成模型从训练到完整部署的全部过程。中间有推理性能分析工具和优化文档,可以看到各个算子在当前设备上的性能,也可以帮我们发现当前需要完善和提升的部分。同时,我们可以提供很好的一致性,可以在 Linux、Windows、Mac、Android 甚至自己的应用中,在一些无操作性的环境中部署和运行。
我们提供了量化参考模型,大家可以拿到量化模型训练代码以及预训练模型,得到具体的量化方式。同时我们有完整的对量化进行操作解读的方案,大家利用这样标准化的量化方式就能够自行对模型量化和优化,而且使用方法非常简单。
这里我提到的是亚线性内存优化技术,利用计算换取减少内存的使用量。这是我们在原有论文的基础上实现的一整套基于遗传算法方案的搜索,可以通过边界联动、块的移动,在有残差的结构搜寻到最节省的因素,用最小的方案使得在几乎不影响速度的情况下大幅度减少设备使用内存。
天元框架技术生态
我们期待以更开放的心态和大家一起把项目做得更好,我们也在这里做了很多工作,一方面希望把自己的研究成果拿出来,比如我们建立的天元的研究中心,包括最近的图像分类、检测、分拨、自然语言处理和标准的量化模型,都是在使用最频繁、最精炼的骨干网络。
我们还引入新型的算法。大家知道生成式对抗网络,这是非常流行的方法,我们在天元的模型中心提供了基于 DCGAN 和 WGAN 的方式,也实现了 Simple Baseline 和 MSPN。
我们发表了一篇以开源为主要发布方式的论文,密集人群检测的一些情况里,两个人的重合非常高,以至于以前的检测算法很难检出,新的算法则可以把重叠严重的人体检测出来,这样的代码也会通过天元发布出来。我们希望构建学术方面的影响力,可以帮助大家更好地认识天元和天元生态,也希望大家和我们一起做这方面的学术研究。
为了方便大家使用,我们还提供了 MegStudio 开箱即用的 AI 环境,大家可以在上面注册分配使用CPU 资源,试用我们的模型,也可以看一下天元现在的成熟程度和可用程度到底达到了什么样的情况。
我们的网站上提供了丰富的文档体系,包括如何做分布式训练,如何进行亚线性性能的优化,如何做模型部署,如何定制自己的算子,如何做量化,如何进行分析以及安卓推理,包括文档、API 文档全部提供了中文翻译,希望方便更多的、各个层次的开发者获得想要的知识。
我们还在官方网站上提供了我们和北大的深度学习实践系列课程,由旷视研究院院长的孙剑老师和资深研究员给大家授课,非常适合深度学习的初学者与爱好者了解这个行业的整体概况和先进技术。我们还提供了 MegEngine使用入门课程,学习 MegEngine 的使用方式。
我们想做好天元的生态,和更多合作伙伴合作。(崔)宝秋老师促成了我们和小米 MACE 的合作,另外我们也和 Tengine 合作。我们希望通过这样的方式,更多体系内的研究员和学生都能享受到整个开源社区给大家带来的好东西。
我们在今年的 9 月份,把第一个里程碑的版本天元 1.0 版本推给大家。我们希望天元的生态更加开放、更加完善、更加具有吸引力,希望把更多有竞争力、有吸引力的功能提供给大家,助力中国开放生态的发展。希望大家加入我们的社区,和我们一起实践天元的核心理念,共建开源社区,谢谢大家。
。