训推一体,动静合一:深度学习框架「天元」出世

「深度学习,简单开发」,刚刚开源的天元(MegEngine)将为开发者们带来全新的深度学习开发体验。


又一个国产深度学习框架开源了。3 月 25 日,旷视科技在北京发布了新一代人工智能生产平台天元(MegEngine),其「训练推理一体」、「动静合一」、「兼容并包」、「灵活高效」的强大性能或许将为 AI 领域带来新的风向。

「天元是旷视 1400 名研发人员一直以来使用的深度学习引擎,已部署在上百个产品、几十种计算平台上,」旷视首席科学家、研究院长孙剑在发布会上表示。「他可以帮助开发者做到协同设计训得好,高效系统训得快,大规模数据或模型训得动。」

旷视首席科学家、研究院长孙剑发布会现场分享。

旷视提出的 AI 生产力平台 Brain++包括深度学习框架(天元 MegEngine)、深度学习云计算平台(MegCompute)、以及数据管理平台(MegData),将算法、算力和数据能力集为一体。本次开源的天元是 Brain++平台的核心。

  • 天元 MegEngine 深度学习框架官方网站:https://megengine.org.cn/

  • GitHub 开源地址:https://github.com/MegEngine/MegEngine


时至 2020,自贾扬清等人开放 Caffe 已过去六年,旷视为什么选择在这个时间点开源自身的核心技术?旷视研究院高级技术总监、天元项目负责人田忠博告诉我们:「这一进程其实去年已经开始推动,我们认为目前国内市场上缺少天元这样的项目。」

这是一个需要勇气的行动。据了解,在做出开源的决定以前,旷视技术团队内部经过了多次讨论。这关系到框架技术是否成熟,生态环境是否发展完善,以及未来发展的方向。

田忠博指出,天元是一套训练推理一体化、动静态合一的工业级深度学习框架,具体架构包括五层:


从最上层的接口层到最底层的计算内核,天元做了很多优化,例如内存管理中的亚线性优化和高性能算子库等。

天元架构是旷视在研发过程中遇到痛点,并逐步解决的成果。旷视相信这些痛点也是行业共通的难题,通过这一开源架构,我们可以一站式地解决这些问题。

早在 2014 年 8 月,深度学习框架天元就在旷视内部诞生了,它随后成为了 Brain++的核心组成部分。「自 2012 年起,陆续有研究者开发出了第一代深度学习框架。在旷视,我们在实践过程中发现手工编写每层配置文件的方式非常不灵活,」孙剑介绍道。「因此我们发展了第二代深度学习框架,通过计算图的方式设计模型并求导,大大提高了效率。2015 年谷歌正式发布了 TensorFlow,采用了和旷视殊途同归的思路。当时我们进行了比较,发现自己的方法更具优势,所以天元就继续发展下来了。」

天元与目前流行的 TensorFlow、PyTorch 相似,旨在让更多的人可以在其基础上构建自己的应用,创造属于自己的价值。

此前,百度等公司也推出了自己的深度学习框架。天元会有哪些不同?「在这其中,我们是唯一一个以 AI 为本业的公司,天然需要使用深度学习算法解决问题,」旷视副总裁谢忆楠表示,「我们把自己在 AI 解决各领域问题过程中的工具开源出来,从视角上看或许会获得更好的效果。」

天元跻身全球主流框架

机器之心很多读者都用过深度学习框架,很多读者也都想入门深度学习框架。那么假设我们有 Python 和 NumPy 数值计算方面的基础,旷视新开源的天元又会有哪些方面吸引我们?

孙剑表示,天元有三大特别吸引人的优点,「第一是框架与算法的协同,框架需要为硬件开发优化算子,这样才能结合框架、设备开发最好的网络,ShuffleNet 系列高效神经网络就是协同设计的结果之一。第二即高效与强大性能,一般训练 COCO 数据集需要 30 多个小时,2017 年基于天元的 MegDet 并行物体检测系统,2 小时就能完成,并且精度更高。」

「第三是很好地支持大数据、大规模训练。借天元开源之际,我们同时也发布最新版 Objects365 V2,它是世界上最大的物体检测数据集,是目前学界流行的 COCO 数据集 的 16 倍大小。有这么大规模的数据,模型也需要扩增。如果模型扩大 10 倍的话,总体训练量就会增加 160 倍。而天元对于这种大模型、大数据也是没问题的,」孙剑接着说。

田忠博说:「天元是为工业级、研究院规模的研发机构设计的,它具备的一些核心特点都是用来解决现实研发过程中的痛点。」从具体体验与特性上,我们确实能发现天元解决很多开发痛点,它们从代码风格、编程范式到底层优化展现了不一样的思路。

一键切换训练推理

机器学习中,训练与推理一直不是一体的,当我们设计算法时,首先需要训练框架的支持,然后再把训练好的模型转移到推理框架上,从而将后续的推理计算放到各种硬件上。这中间会存在训练与推理的转换,这个过程需要手动完成,甚至转换后也不能保证模型性能与进度。

「训练推理一体化能把繁杂的模型生产流程简化到一步、两步,我们也希望它能够极大缩短算法研发和部署的时间,真正支持大规模的生产级诉求」,田忠博说,「为此,天元框架需要做到三点:无需模型转换就能做推理;训练的速度、精度与推理保持一致;在不同设备上做推理需要保证模型精度可以对齐。」

从算法直接到部署硬件,中间不再需要转换模型,只需要几行代码与 API,模型的实践效果就能看得到。对于大多数算法工程师,可能比较精通深度学习模型,对推理与模型部署相对而言不是那么熟,天元无疑能降低大量工程实践成本。

更重要的是,在部署过程中,天元通过自动算法选择机制和一系列针对推理的自动优化,能帮我们删除冗余代码,找到最适宜该设备的算法实现,达到灵活高效的目标。

动静合一,图并存

从 Theano 到 TensorFlow 1.X,它们都遵循着「静态计算图」这条路,我们会发现在用这类方法写模型时,需要很强的「向量化思维」,For 循环之类的语句就不要多想了。此外,因为写代码只是建计算图,调试的时候异常困难,我们不知道图中的数据流到底是什么样的。

很快,在 PyTorch 等框架中出现了动态计算图,用它写模型就像写个普通 Python 脚本,但这样写出来的模型,却是难以高效部署的。天元同时支持动态图与静态图,在科研训练与调试时采用动态图,到部署的时候又切换到静态图,这样就能充分利用两者优势。

如上图所示,天元可以直接通过 @trace 装饰器确定某个函数到底是动态图还是静态图,而且状态还可以手动调整。这不就意味着在调试时我们可以将函数设置为动态图,直接查看每个变量的信息,而要到了部署等实际应用时,再把静态图打开,提升训练与推断速度?

如果以这样的方式调用动态与静态计算图,那真的称得上整合了两种方式的优势。

此外,我们还发现有一种动、静态的「混合编程」,即在动态图中调用静态图。可以想象,定义网络结构等过程使用动态图比较直观,而后采用静态图的方式执行实际运算,这也是非常吸引人的方式。后文在代码示例中,也会展示这种新颖的「混合编程」。

人生苦短,Pythonic 好入门

如果深度学习建模一直采用静态计算图,估计框架就会劝退很多开发者。但是天元这种主要采用动态图的框架,构建模型就像搭积木,而且还能以一般的 Python 编程方式去搭。相信很多接触机器学习的开发者都会选择 Python,它加上 NumPy 等数值计算库,差不多就能完成大多数任务。

如果有了这些基础,再搭建深度模型就没问题了,天元一样承接 Pythonic API,学习成本非常低。此外,因为旷视本身在计算机视觉方面有非常雄厚的累积,田忠博表示:「天元内置了一些独特的深度学习算子,它们和旷视在 CV 上的独到能力息息相关,能针对 CV 模型的训练与应用实现深度优化。」

对于 API 与代码风格,我们还是比较推荐直接查看本文后面的示例,可以直观感受到,不论把天元当做深度学习的入门框架,还是与 PyTorch、TensorFlow 等一起作为备选框架都没问题。天元的编程风格与 API 配置,和已有的编程习惯、现有框架的风格都是一致的。

当然,这些并不是天元所有特性,还有很多需要进一步探索。例如它还有很强的多平台、多设备适应能力,既能灵活调用硬件能力,又可以高效训练大模型。

天元框架实际体验怎么样?

那么实际用天元写模型是什么样的体验?机器之心体验了旷视发布的 MegStudio,通过在线开发的方式,我们可以快体验到天元的特性与编程方式。

MegStudio 上准备好了一些入门项目,它展示了新框架的使用方式,例如「基本概念」主要介绍什么是计算图、张量和算子等基础知识,每一个项目都是通过中文文字与可运行的代码组成的,就像常用的 JupyterLab 那样,通过运行这些基本项目可以让开发者快速掌握天元的基本使用。

为了直接展示天元的风格,我们可以快速试试 DL 入门的「第一个模型」MNIST 图像识别。准备数据这里就不展示了,天元可以直接调用 API 来处理常见数据,准备 MNIST 数据两行代码就够了。如果要搭建一个简单的卷积神经网络,天元允许使用 PyTorch Module 的方式定义,搭建模型就是搭积木。

如上所示,继承 M.Module 后,Net 类只需要定义初始化参数与重写前馈 forward 过程就可以了。卷积层、批归一化层、激活函数等模块的使用非常符合直接,只需要给定必要参数就没问题了。

这种继承 Module 的方式非常直观,是一种动态计算图编写方式。如果要实现前向传播,传给它输入数据就行了,要是需要调试,在 forward 函数下设置断点,或者打印变量的信息都没问题。

然而,一般写模型真正复杂的地方在于定义模型架构之外的过程,例如后面需要完成的训练与测试过程。天元的优势在于,它允许动态图结合静态图,即使定义模型使用的是动态图,但在定义训练与测试函数仍然可以用静态计算图。


如上在最为核心的前向、反向传播与模型损失计算过程中,我们可以采用天元中的 @trace 装饰器,直接调用静态计算图模式。因为绝大多数计算都发生在这个过程,因此,由动态计算图转为静态计算图将更有优势,天元能采用更高效的方式训练模型。

最后就是迭代训练过程了,这里天元也采用了 DataLoader,这种方式非常便捷。后续的损失函数计算与最优化器更新,与现有的 DL 框架比较类似,我们差不多不需要学习额外的知识,了解一下 API 就能用。


当然,后续还有保存、加载模型,也是两条语句的功夫。总体而言,很明显天元类似 PyTorch 保持了最好理解与使用的接口,并在关键的计算过程提供装饰器以调用静态计算图,这可以称得上是结合了动态、静态图各自的优势。

因为整体上天元的 API 接口非常精简,且保持着主流框架所养成的编程习惯,入门门槛还是非常低的,之前了解过深度学习框架的同学,不需要文档都能快速读懂整个过程。此外天元作为新手入门框架也没是没问题的,学会了它,差不多等同于学会了深度学习常用框架。

此外,除了 MegStudio,旷视还发布了模型中心 ModelHub,它汇聚了全球顶尖算法的一些预训练的模型,和旷视研究院一些最新的技术、研发成果。

旷视联合创始人兼 CTO 唐文斌 发布会现场分享

旷视的计划中,Brain++将作为「AI 基础设施」逐步开源、开放,将生产力共享给广大开发者,让每个拥有小场景需求的人都可以做出能够解决其关键问题的最优算法。此外,旷视还希望在未来面向高校课程、初创企业提供更多支持,以方便小规模深度学习部署。

值得一提的是,旷视本次发布的天元版本是 Alpha 版。旷视表示,更为「正式」的版本会在今年晚些时候上线,随着大量组件的更新,旷视会逐步将计划中开源的代码和能力进一步释放出来。「3 月份开源的版本包含前期整理的代码和关键组件,今年 6 月我们还会发布对 Arm 架构、深度学习加速芯片、低比特和量化环境的支持。在今年 9 月份,天元还会有动态图的核心升级,整个系统会走向第一个开源的稳定版。届时体验会达到更为理想的状态。」田忠博表示。

自 2012 年起,旷视就推出了人脸识别开放平台 Face++,近几年来,AI 已从实验室中快速走向实用化。旷视的研发人员们认为,「天元」的开源宣告着人工智能技术再次回到了算法探索的层面。

未来,旷视还会进一步增强这一框架的分布式机器学习能力,对底层编译与代码生成能力进行优化,并欢迎机器学习社区力量的加入。

入门深度学习唐文斌孙剑天元深度学习框架旷视科技
相关数据
孙剑人物

孙剑,男,前微软亚研院首席研究员,现任北京旷视科技有限公司(Face++)首席科学家、旷视研究院院长 。自2002年以来在CVPR, ICCV, SIGGRAPH, PAMI等顶级学术会议和期刊上发表学术论文100余篇,两次获得CVPR最佳论文奖(2009, 2016)。孙剑博士带领的团队于2015年获得图像识别国际大赛五项冠军 (ImageNet分类,检测和定位,MS COCO 检测和分割) ,其团队开发出来的“深度残差网络”和“基于区域的快速物体检测”技术已经被广泛应用在学术和工业界。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

数据管理技术

数据管理是利用计算机硬件和软件技术对数据进行有效的收集、存储、处理和应用的过程,其目的在于充分有效地发挥数据的作用。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

云计算技术

云计算(英语:cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。

批归一化技术

批归一化(Batch Normalization,BN)由谷歌于2015年提出,是一个深度神经网络训练的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中的“梯度弥散”问题,从而使得训练深层网络模型更加容易和稳定。目前BN已经成为几乎所有卷积神经网络的标配技巧了。从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化。

Jupyter技术

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

百度机构

百度是全球最大的中文搜索引擎,是一家互联网综合信息服务公司,更是全球领先的人工智能平台型公司。2000年1月1日创立于中关村,公司创始人李彦宏拥有“超链分析”技术专利,也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一。

https://www.baidu.com/
旷视机构

北京旷视科技有限公司是一家行业领先的人工智能公司,在深度学习方面拥有核心竞争力。旷视向客户提供包括先进算法、平台软件、应用软件及内嵌人工智能功能的物联网设备的全栈式解决方案,并在多个行业取得领先地位。2017年和2019年,旷视跻身《麻省理工科技评论》发布的两项「50大最聪明公司」榜单中。 旷视是全球为数不多的拥有自主研发深度学习框架的公司之一,旷视自研的深度学习框架MegEngine作为旷视人工智能算法平台Brain++的核心组件,为算法训练、部署及模型改进过程提供重要支持。 旷视总部位于北京,拥有 2,000 多名员工,并在北京、上海、南京、成都等地都设有研发中心。旷视的典型客户包括金融科技公司、银行、智能手机公司、第三方系统集成商、物业管理者、学校、物流公司及制造商等。

https://www.megvii.com/
机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

找到机构
推荐文章
暂无评论
暂无评论~