刚刚,百度飞桨官宣量子机器学习开发工具 Paddle Quantum,这是国内唯一支持量子机器学习的深度学习平台。
机器学习(ML)虽然不能精确模拟自然界中的系统,但却能够学习系统模型并预测系统行为。在过去几年,经典的 ML 模型解决了科学领域诸多难题,在癌症检测、地震余震预测、极端天气预测以及系外行星探测等方面发挥了巨大作用。
近年来,随着量子计算技术的发展,在量子机器学习模型上的新发现将对世界级重大问题产生深远影响,从而带来医学、材料、传感和通信领域的突破。但是,迄今为止我们遇到的瓶颈是,缺乏研究工具来发现有用的、可以处理量子数据并能在计算机上使用的量子机器学习模型。
量子计算是由量子力学和计算理论交叉形成的全新计算模型。据了解,为推进量子计算研究,百度在 2018 年 3 月成立了百度量子计算研究所。其核心研发方向聚焦于量子算法、量子人工智能以及量子架构三大方向。
在百度“WAVE SUMMIT 2020”深度学习开发者峰会专场,飞桨重磅发布了 量子机器学习开发工具量桨(Paddle Quantum)。百度研究院量子计算所所长段润尧表示,量桨的发布,使百度飞桨成为了国内首个、也是唯一支持量子机器学习的深度学习平台。
段润尧表示,量桨是是基于百度飞桨研发的量子机器学习工具集。量桨建立起了人工智能与量子计算之间的桥梁,可快速实现量子神经网络的搭建与训练,同时还提供多项前沿量子应用。量子领域的科研人员可以使用量桨进行量子人工智能的研发,为深度学习爱好者提供了一条学习量子计算的捷径。
段润尧认为,人工智能和量子计算之间是一种相互纠缠、密不可分的关系。
一方面,量子计算最主要的目标之一就是借助于量子特性开发高性能的量子机器学习算法,从而加快或拓宽人工智能的应用场景。当然,要使得这些算法发挥作用则需构建量子计算机。
另一方面,量子计算的研发尽管取得了巨大的进展,在大规模应用落地之前还有许多非常棘手的科学与工程技术难题有待解决,这除了需要大量优秀的科研人员参与之外,更离不开现有的先进计算技术的支持。而大量使用各种先进的 AI 技术来突破量子计算研发瓶颈一直是极其重要的研究方向。
段润尧表示,如何建立起量子计算和人工智能之间的桥梁离不开深度学习的参与。量桨的诞生便是这一桥梁作用的体现。
量桨的一大显著特点是易用性。通过量桨,开发者可轻松搭建简洁的量子神经网络,也可根据丰富的量子机器学习案例一步步组建出自己喜欢的模型。
量桨还具有极好的通用性以及拓展性。百度在飞桨中系统地扩展了包括复数变量、复数矩阵乘法在内的多项底层功能,这使得量桨可以完美地支持量子电路模型,从而也支持通用量子计算相关的研究。
另外,量桨还提供了多项优化工具可根据具体问题的特点加以选择。这些功能可以很容易进行拓展。
量子计算的核心应用集中在组合优化问题的求解以及量子化学系统模拟等方向。量桨针对这些关键方向提供了专门的强大工具集。此外,量桨还推出了一些原创性的量子机器学习模型,可以完成像吉布斯状态制备这样的应用。
量桨的量子机器学习开发套件包括:量子开发工具集,量子化学库,以及一系列优化工具。与此同时,量桨还提供了量子机器学习、量子化学模拟以及量子组合优化这三大核心量子应用。
体验量桨 Paddle Quantum:
https://github.com/PaddlePaddle/Quantum
在谷歌开源 TensorFlow 一年以后,百度宣布开源其深度学习平台飞桨(英文名 PaddlePaddle)。飞桨发展到现在,已经具备了开发便捷的核心框架、支持超大规模深度学习模型训练、多端多平台部署的高性能推理引擎和产业级开源模型库等技术。飞桨是中国首个也是目前国内唯一开源开放、功能完备的产业级深度学习平台,正是因为它的出现,百度成为继 Facebook、谷歌和 IBM 之后又一个开源深度学习框架的科技公司。
飞桨地址:https://www.paddlepaddle.org.cn
GitHub 地址:https://github.com/PaddlePaddle/Paddle
在今天的发布会上,百度飞桨总架构师于佃海表示,飞桨核心框架具备四大特色:易学易用的前端编程界面、统一高效的内部核心架构、原生完备的分布式训练支持、高性能可拓展的推理引擎。
针对飞桨易学易用的前端编程界面,飞桨通过编程一致的计算描述,实现了自然完备的动静统一。飞桨期望将深度学习计算的编程和内在表示保持一致,所以在用户界面上没有引入 Graph 等概念,直接以程序化的 program 形式,描述神经网络执行的计算过程,对应的用户开发和通用的体验更加接近。
这个角度,其实和 Pytorch 等框架的理念接近。只是从更好的全局优化,以及上线部署的角度考虑,飞桨同时提供了一种完备的内在描述 ProgramDesc,可以表达任意复杂的模型,并实现编译期和运行时的分离。
对飞桨而言,基于编程一致的计算描述,向动态图的扩展及动静转换是非常自然的。除了使用 TracedLayer 的简易转换方式,通过 Program Translator 的通用方案,可以完备地将 Python 语法下的计算编译为 program,从而和全局优化延时执行模式打通,并实现模型结构存储和上线部署。百度对飞桨动态图做了深度优化,目前功能和体验已基本完备。
此外,为了进一步简化用户的编程复杂度,百度近期研发了 飞桨高层 API。高层 API 同时屏蔽了动静的差异,并可以使用一行命令方便地切换执行模式。 除此之外,飞桨的最新版本还新增了几十个基础 API,各种复杂模型的开发会更加便捷。
针对飞桨的命令式编程范式,飞桨的动态图带来了全新的开发体验,编程交互更加自然灵活,更容易写出优雅的代码。语义理解框架 ERNIE,使用飞桨动态图重写后,核心代码大幅减少,且基本没有训练性能的损失。
为了上线部署及部分场景的训练加速。飞桨采用了动静合一的两种方案,主要是通用的 program translator 方案,只需通过添加一个装饰器,就可以将对应函数内部所有定义,包括依赖数据的控制流实现,递归地转换为 program 执行,这种方式下可以灵活控制实现动静混合编程。
而在高层 API 下,使用一行代码设定 enable 命令式编程,就可以切换全局执行模式。飞桨高层 API 进一步通过对执行类、组网类、领域类 API 的封装,更加清晰易用。设计时考虑到了和底层 API 互相兼容,可以搭配使用,并不割裂。通过高层的封装抽象,整体编程逻辑大为简化,具体代码大大减少,特别是对训练流程类的代码,平均可以减少大约 80%。目前飞桨的高层 API 是 alpha 版本。
飞桨目前有两层 IR,program 对接用户编程界面,简洁完备地表达深度学习计算,还可以便捷的迁移变换,无缝对接分布式训练和推理部署,保证了整体架构的一致性,而又不显著增加复杂度。SSA Graph,主要对接更底层的优化策略,比如算子自动融合,并发调度,易构硬件执行调度等等。两层 IR 更好地衔接了前端和后端,兼顾和简洁、高效和整体统一性。
针对这部分,百度近期也有一些优化升级工作。将飞桨的默认显存分配策略,升级为自动按需分配,更加节省资源;完善了通用算子自动融合策略,进一步提升了训练性能;建立了非常完备易用的自动混合训练功能,充分发挥硬件优势,提升训练速度,同时配合前项中间层重计算策略,可以支持更大 batch 的训练。
分布式训练是工业场景的一个刚需。演讲中,于佃海强调了飞桨的分布式训练在它设计上的原生性、完备性,以及对应的易用性。
分布式训练策略是综合硬件特性和任务特性的一种折中设计,需要考虑实用性。飞桨在广泛实现业务场景的打磨中,把头部分布式训练场景的能力优化到极致,同时也做到了对最广泛并行模式和加速策略的覆盖。由于飞桨分布式训练和核心框架协同一体,更有利于发挥性能优势。我们可以看到,从飞桨的单机程序,到多设备训练的扩展,非常简单,只需要通过统一极简的 API 和配置,剩下均由框架自动完成。
最近,百度发布了飞桨超大规模分类功能,通过模型并行实现对千万类别分类任务的支持。此外,也完善了流水线并行,更好地发挥异构设备的协同优势;同时对参数服务器功能进行了整合优化,使得功能更完善,使用更简单。
飞桨目前的推理引擎方案和主框架保持很强的统一性的同时,又具有很好的扩展性和极高的性能。百度有和训练框架一体的原生推理系统 Paddle Inference,它和训练复用部分优化策略,并且在底层算子实现上完全一致,做到了百分百兼容,即训即用。
百度针对飞桨的推理场景做了深度优化,且实现了对外部推理加速库的可插拔加载,如可挂接 NV 的 TensorRT,实现对部分计算的更灵活加速选择。对移动端和嵌入端场景,在自有多硬件加速库的基础上,提供了独立的轻量化推理引擎 Paddle Lite,对端侧任务提供高性能支持。同时,在算子定义和模型表达层面,和核心框架保持一致。
在 Paddle Lite 下,飞桨实现了对国产 AI 芯片全面的支持。近期,百度开展了包括对多线程多流加速等策略完善在内的多项性能优化工作,特别是强化了对低精度量化推理的支持。
这些技术特色直指高效和易用的核心设计理念。到目前为止,框架整体上已形成界面清晰、功能完备、成熟稳定的架构体系。
飞桨全景图
在更新层面,百度深度学习技术平台部高级总监马艳军博士介绍了飞桨的七项开源以及二十三项重要升级。本次升级侧重在两个方面:工业级应用的极致体验和持续布局深度学习前沿技术(具体内容可通过文末的飞桨官网地址查看,以下仅介绍重点内容)。
在开发层面,除了动态图和 API 的升级,飞桨也提供大量官方模型库和开发套件,方便开发者进行二次开发,并且是做低代码的二次开发。 本次新增 39 个算法,总算法数量达到 146,预训练模型已经有 200 多个。
工业级分类模型,包括 23 种分类的经典网络;图像分类算法的深度优化,利用知识蒸馏可以获得 3% 的效果提升,在 ResNet50_vd 上面分类精度达到 82.4%;开发套件易于部署,可以用于服务端集成,同时也可以做模型孵化,同时推理部署可以部署在移动端或者边缘设备上。
算法丰富度进一步提升,新增 58 个预训练模型,总数达到 101 个;模型精度非常高,单模型在 COCO 数据集上能够达到 53% 以上的 MAP,实时预训练模型在 COCO 上能达到 43% 以上的 MAP;模型速度非常快。
模块化设计,方便进行二次开发,并且性能较好。其中,百度自研的语音合成模型 WaveFlow能以 40 倍实时速度合成高保真音频;轻量化,只有 5.9 的 million 参数,比 WaveGlow 要小 15 倍;训练简单。
这次升级包括三个方面:训练速度、显存和大规模分布式扩展能力。升级了自动混合精度训练,用一行代码就可以实现训练速度提升两倍。在显存策略方面,可用于训练极深网络模型。在分布式训练技术方面,飞桨研发了数据并行、模型并行、流水线并行等技术体系,并结合云端研发了弹性训练技术,这其中模型并行和弹性训练是这次新增发布的能力。
在推理部署环节,飞桨升级了服务器端的推理引擎,并可以通过 PaddleServing 来实现模型的服务化部署。同时,移动端和边缘端的推理部署也进行了升级。
这次升级的模型优化工具 PaddleSlim 有如下特点:一是工业级高可用,能够裁减非常复杂的网络,并且贴近实际的硬件环境,可以提供模型小型化方案;二是整个策略可扩展,开发者可自定义压缩策略;三是在很多场景进行了应用验证,这其中包括 CV 领域场景,也包括自然语言处理当中语义理解场景。
原生推理引擎 Paddle Inference 进行了升级,内置高性能 CPU 和 GPU 等不同硬件 Kernel 优化;子图集成 Paddle Lite 和 TensorRT;提供多语言 API 接口,实现推理引擎部署。除了 C++ 和 Python 外,还提供了 GO 和 R 语言,方便开发者使用。
在模型服务化部署上也进行了升级,增加工业级支持,升级分布式稀疏参数索引、高并发底层通信、模型管理等功能,同时使用一行命令就可以轻松部署多种模型。
易用性提升,Python 的开发环境更加完备,可以实现一键编译优化。在全硬件平台支持方面,除了主流 CPU 和 GPU 外,新增了大量 AI 芯片支持,适配更多移动端和边缘设备场景。
该框架可以进行本地运算,能够实现低延迟和数据安全。因为是 JavaScript 的环境,用户免安装就可以直接跨平台使用。
目前已经集成多款飞桨开放出来的能力,把这些能力进行流程打通之后,整个使用体验和门槛都可以大幅降低。
飞桨的 master 模式最核心的技术是预训练模型和迁移学习的工具。预训练模型方面,重点聚焦超大规模视觉模型和 NLP 的语义理解模型 ERNIE。迁移学习工具方面,新增了多个迁移学习算法,开发者可以使用开源的 PaddleHub(开源的预训练模型的应用工具)或者是 Easy DL 平台来体验 Master 模式(零门槛的 AI 开发平台)。
在移动端联邦学习方面,进一步完善了端云协同训练,并且开源了百万级用户设备的模拟器,方便快速迭代。在企业间联邦学习方面,新增了纵向联邦学习能力,方便开发者或者研究者,基于工具做自己的联邦学习相关研究。
除此之外,飞桨在图神经网络等层面也有更新,开发者可以通过飞桨平台进行查看。
飞桨地址:https://www.paddlepaddle.org.cn
GitHub 地址:https://github.com/PaddlePaddle/Paddle
领取专属 10元无门槛券
私享最新 技术干货