机器之心原创
作者:一鸣
随着深度学习逐渐从实验室走向工业应用,各大企业都在探索构建算法架构、实现模型的工具和平台。和使用 TensorFlow 或 PyTorch 等开源框架的公司不同,旷视走向了一条自主研制的道路,建立了从算法研发到部署应用的全流程、一站式人工智能算法平台 Brain++。在 Brain++投入使用 5 年之际,机器之心在此为读者揭开 Brain++的神秘面纱。
旷视自研人工智能算法平台示意图
如果说算法模型是果实,那么开发它的环境和框架就是培育果树的土壤。尽管平时在开发中,框架和底层环境没有那么引人瞩目,但没有这些底层技术的支持,优秀的思路和创意也就无从实现。当前,深度学习社区基本上被 TensorFlow 和 PyTorch 两大框架垄断。开源框架固然具有很高的人气和易用性,但是在国际环境变幻莫测的大背景下,是否依赖这些框架就足够保险呢?同时,如果企业有新的想法和业务需求,开源框架能否完美实现?是否能够无缝嵌入业务之中?这些都是 AI 企业需要思考的问题。
近日,旷视自主研发的人工智能算法平台 Brain++荣获第六届世界互联网大会「世界互联网领先科技成果」。
旷视联合创始人兼 CTO 唐文斌在大会上表示,「2014 年我们开始研发 Brain++,它是一套端到端的 AI 算法平台,目标是让研发人员获得从数据到算法产业化的一揽子技术能力,不用重复造轮子也可以推进 AI 快速落地。我们的 Brain++还引入了 AutoML 技术,可以让算法来训练算法,让 AI 来创造 AI。
通过旷视从 2014 年开始自研深度学习框架,到现如今构建了一整套围绕 AI 开发的整体系统,似乎以上这些问题可以得到一个解答。
Brain++:旷视自研人工智能算法平台
很多人会误以为这仅仅只是旷视的一个深度学习框架,或者是企业内部开发的云计算平台。而事实上,Brain++在旷视内部已成为了支撑算法研究和开发的整体基础底层平台。
Brain++涵盖了深度学习算法开发的整个流程。
具体而言,Brain++涵盖了深度学习算法开发的所有环节。从数据的获取、清洗、预处理、标注和存储开始,到研究人员设计算法架构、设计实验环节、搭建训练环境、训练、加速、调参、模型效果评估和产生模型,到最终的模型分发和部署应用,Brain++为旷视的研发人员提供了一站式全流程的 AI 工程解决方案。
总体架构上,Brain++可以大体分为三部分,包括作为主体的深度学习算法开发框架 MegEngine、提供算力支持的 MegCompute、以及用于提供数据服务和支持的 MegData。
据旷视方面透露,Brain++ 其实是国内很早就开始研发构建的深度学习系统之一。早在 2014 年,Brain++ 就已经开发出来,在当时作为算法框架在公司内部开始使用。其中,旷视在 2017 年拿下 3 项 COCO 冠军,2018年拿下 4 项 COCO 冠军,以及今年发布的全新的通用物体检测数据集 Objects365,都与 Brain++ 的功劳密不可分。
人工智能平台 Brain++这一系统内部是什么样的?机器之心接下来会按照组成模块进行解读。
三大支柱模块成就 Brain++
旷视原创自研的新一代人工智能算法平台 Brain++由三大支柱构成,分别是深度学习框架 MegEngine、深度学习云计算平台 MegCompute 和数据管理平台 MegData。
MegEngine:极致性能
MegEngine 是 Brain++的核心组件,是为开发者和研究人员提供开发的深度学习框架。这一框架主要用于旷视内部进行计算机视觉领域的算法开发工作,包括大规模的人脸识别、图像分割、姿态识别等。
1. 基于计算图的深度学习框架
MegEngine 的整体架构。
从架构来说,MegEngine 分为四个层,包括计算引擎、运行时管理、编译和优化以及编程和表示。计算引擎以 MegDNN 为核心,发挥计算作用。MegDNN 是一个基于异构架构,有着统一的交互方法的内核,可以根据设备本身启发式地选择最优内核,也可以让用户自己选择最适合的内核进行计算。
在运行时管理层中包括两个模块,分别是内核调度和内存管理和优化两大模块。在内存管理和优化模块中,MegEngine 采用了动态、静态内存分配并存的方式。
在编译层和优化层,MegEngine 使用了基于计算图的编译和优化方法。编程和表示层进行用户交互,能够使用高级编程语言(如 Python)执行用户的命令。
2. 框架优势
旷视的深度学习框架 MegEngine 有着多种多样的优势,相比于开源的大部分深度学习框架,MegEngine 具有:
  • 运算速度快:MegEngine 动态、静态结合的内存优化机制,因此速度比 TensorFlow 更快;
  • 内存占用少:通过分析整个执行方案的内存使用情况,MegEngine 充分优化内存,特别是亚线性内存优化,可以支持复杂的网络结构,自动利用部分冗余计算缩减内存占用,可达两个数量级,从而支持更大规模的模型训练;
  • 易用性好:MegEngine 封装了平台细节,易于新人用户快速上手;
  • 支持多种硬件平台和异构计算:MegEngine 支持通用 CPU、GPU、FPGA 以及其他移动设备端硬件,可多卡多机进行训练;
  • 训练部署一体化:整个框架既可用于训练又同时支持推理,实现模型一次训练,多设备部署,避免复杂的转换过程造成的性能下降和精度损失。
3. 和主流深度学习框架对比
MegEngine 之所以能够成为的核心算法框架,主要依靠其底层几大技术。
首先,MegEngine 基于 C++开发,可帮助用户借助编程语言进行高性能的运算执行。在框架内部,使用了目前流行的计算图方式。和其他框架不同,MegEngine 使用的是异构架构,方便使用框架进行分布式计算。
此外,MegEngine 内部的计算以算子的形式进行,它支持多种算子节点和变量算子,包括常用的卷积、全连接、ReLU 和用户可定制的算子,甚至可以计算二阶梯度,从而进行更多底层和灵活的运算。可以说,MegEngine 在尽全力提升深度学习计算性能的基础上,为用户提供了灵活易用的模型构建工具,极大地提升了开发效率。
根据旷视提供的资料,MegEngine 和当前开源的主流深度学习框架——TensorFlow、PyTorch 进行了对比。
MegEngine和 TensorFlow、PyTorch 框架的性能对比。
从图上可以看出,在主流的计算机视觉模型(Resnet50 和 ShuffleNet V1)上,MegEngine 在训练上可以和主流框架媲美。
4. 并行计算支持
值得一提的是,MegEngine 为了提升大规模图像数据进行处理和模型训练的效率,在分布式计算方面下足了功夫。分布式计算中的数据并行和模型并行方式都被用在了 MegEngine 中,极大提升了模型训练效率。
在模型并行方面,MegEngine 提供原语级别的支持,方便用户进行模型并行设置和执行。最终,模型并行可以和数据并行模式混合使用。有了深度学习框架天生对分布式计算的支持,MegEngine 在训练和推理效率上达到了很高的水平。
5. 原生 AutoML 支持
 MegEngine 还集成了旷视最新的 AutoML 技术,对深度学习算法的各个关键环节进行自动化的设计、搜索和优化。这项技术以 One-Shot 方法为核心,通过一次训练完成自动化过程,将计算代价减小至传统 AutoML 方法的万分之一,在可控的时间内搜索出高性能、易部署的模型结构。
 旷视 AutoML 技术图示。
相比于市场上的 AutoML 技术,旷视的 AutoML 技术有以下优势:
  • 计算代价小。传统的 AutoML 技术常常需要多次训练模型甚至会遍历部分模型空间,计算代价巨大。旷视的 AutoML 技术只需训练一次即可得到整个模型空间的刻画,大大减小了计算代价,只是平常训练代价的 1-3 倍。
  • 应用范围广。旷视 AutoML 技术提供了一套完整的解决方案,覆盖了大部分业务,包括活体检测、人脸识别、物体检测、语义分割等。
  • 部署方便。旷视 AutoML 技术涵盖了数据处理、模型训练、模型压缩、模型量化等流程,自动处理从数据到落地。
  • 精度高。旷视 AutoML 技术在诸多视觉任务上,超过人类手工设计,达到了业界最优。
除了支持深度学习框架中所有的基本功能,MegEngine 还有很多高级功能,如支持神经架构搜索、网络剪枝和构建低比特的小型神经网络(基于旷视提出的 DoReFaNet)等。
MegCompute:高效灵活
有了性能极佳的深度学习框架和全面的数据平台支持,Brain++也需要强大的算力支撑才能发挥完全的能力。深度学习框架的基础之上,旷视开发出了支撑整个平台计算的系统,称为 MegCompute。
这是一个包括了硬件基础设施、数据存储和计算调度的平台。用于协助研究人员部署训练环境、设计训练流程、提供算力和资源分配服务、监控实验进程、提供可视化效果展示、管理用户权限、存储数据等。
 MegCompute 平台的整体架构。
MegCompute 的总体架构可以概括为「三驾马车」,分别为基础设施、数据存储和计算。基础设施方面,通过高性能硬件支持深度学习计算和大规模数据传输。在数据存储方面,考虑到计算机视觉数据普遍为海量小文件,数据存储平台采用了分布式对象存储系统,具有大容量可弹性扩展的存储能力。此外,在云计算方面,使用精细的算力管理方式,给用户灵活分配计算资源,同时避免算力浪费。
MegCompute会为每个用户会分配若干台虚拟机做开发,这称之为 Workspace, 其中自带了 JupyterLab 方便研究员使用;旷视还通过开发可分享的插件,方便研究员将 JupyterLab 中的内容分享给指定的同事。为杜绝浪费,Workspace 中不带 GPU,那训练程序需要 GPU 怎么办呢?
MegCompute 提供了一种新颖的动态分配使用 GPU 的方式,当需要使用 GPU 运行程序时,可使用 rlaunch 命令将程序直接分配到若干台 GPU 运行,并可以在终端的标准输出获取到远程命令执行的结果。这种方式跟任务提交相比,可以做到无缝执行,不需要将程序打包成镜像进行分发,因为 rlaunch 可以做到跟本地拥有 GPU 类似的使用体验,而广受研究员欢迎。
此外,计算平台提供任务的优先级机制,让集群资源能够高效的利用。同时,通过 GPU 拓扑和网络拓扑感知功能,让大规模多机训练的网络更加快速和稳定,达到更高效的训练效率。
总体而言,MegCompute 从功能上,真正将旷视自研的深度学习框架扩展到了企业级别的系统服务平台,通过连接硬件、数据和深度学习框架,将构建深度学习模型的所有环节串联了起来。MegCompute 有以下几大特点:
  • 性能强大:MegCompute 有丰富的 GPU 计算资源,同时也支持各类硬件,可灵活高效地分配计算任务。
  • 全流程覆盖:MegCompute 支持模型构建的全部流程环节,让研究人员能够实现一站式的业务应用服务,满足工业级的 AI 能力研发测试、部署上线和业务生产方面的工作。
  • 弹性部署:MegCompute 采用了 Docker 容器技术,可以让用户弹性化地构建部署训练环境,在不需要使用的时候直接销毁,使得资源可以及时释放给其他用户,具有非常弹性的特点。
  • 用户友好:用户使用过程中,通过可视化界面进行环境搭建和训练设计方面的工作,也可以通过可视化的方式查看模型测试的结果,不需要关注太多的底层技术细节,使用非常方便。
  • 支持多种深度学习框架:除了和 MegEngine 自研深度学习框架紧密结合外,MegCompute 也支持使用 TensorFlow 和 PyTorch。
MegData:数据综合处理
在构建模型的时候,也需要大量的数据支持。Brain++中的 MegData 是负责提供数据方面的服务,主要有四个方面:1)数据管理;2)数据标注;3)数据处理;4)数据安全。
旷视 Brain++的核心组件 MegData。
旷视在研发过程中需要使用大量的图像数据,因此需要一个综合平台提供管理、标注、处理和存储安全相关的服务。根据旷视介绍,MegData 可以提供完整的数据服务,为用户提供了全流程的解决方案。
在标注方面,MegData 提供了数据标注相关的服务,将人工标注和辅助算法相结合,提升标注效率。经过多次的业务打磨,MegData 平台现已拥有全生命周期的项目管理平台,进一步实现 AI 助力,解放人工。另外,MegData 还将旷视原创算法引入标注平台中,利用数据辅助算法实现标注效率的大幅提升。这些标注算法都是基于云的,可以伸缩和扩展。
在自动标注上,旷视采用了很多算法。比如,使用聚类算法,旷视可以使某项标注任务的成本下降为原有的 10%。一些标注任务通过算法辅助验收,效率提升 150% 以上。
相比于其他同类平台,MegData 在数据层面为 AI 模型研究提供了安全、高效的数据存储和处理方式。同时,由于它是基于云的,具有很高的灵活性。最后,MegData 补全了 AI 算法研发中数据处理的缺失环节,使研发人员不需要花太多精力在数据层面,很大程度上提升了效率,节省了时间和研发成本。
总体而言,虽然不似其他两个 Brain++模块那样引人关注,MegData 在系统中发挥着重要的功能,负责完成了深度学习训练前很大一部分的数据管理、处理、标注和安全的工作。这些都是整个流程环节必不可少的。
自研平台驱动整体技术发展
Brain++系统凸显了旷视在技术开发上的三个趋势。首先,Brain++完全是自主研发的深度学习系统,涵盖了 AI 业务的整体流程。这说明旷视能够完全掌握核心的研发工具和平台。旷视 Brain++是为计算机视觉场景而专门研发的,这是一个以业务为导向的专业 AI 服务系统,因此旷视可以拿出很多精力,针对业务中的需求提出专门的解决方案,而新方法可以快速在实际应用中得到测试和验证,通过业务驱动框架的发展。
最后,由于旷视对 Brain++本身具有完整的掌握能力,并且通过计算机视觉相关场景驱动 Brain++的发展,它的迭代速度非常快。当前,新算法层出不穷,企业急需要能够快速实现算法的人工智能平台,能够迅速将新方法投入实际的生产中。Brain++能够快速根据新的变化进行调整,能够为旷视在新技术的研发和应用上抢占先机,使企业牢牢占领技术高地,保持技术能力常新常青。
文为机器之心原创,转载请联系本公众号获得授权
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):[email protected]
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:[email protected]
继续阅读
阅读原文