11 月 5 日,在 Wave Summit+2019 秋季深度学习开发者峰会上,飞桨全新发布和重要升级了最新的 21 项进展,在深度学习开发者社区引起了巨大的反响。
很多未到场的开发者觉得遗憾,希望可以了解飞桨发布会背后的更多技术细节,因此我们特别策划了一个系列稿件,分别从核心框架、基础模型库、端到端开发套件、工具组件和服务平台五个层面分别详细解读飞桨的核心技术与最新进展,敬请关注。
今天给大家带来的是系列文章之飞桨工具组件解读。
飞桨深度学习平台工具组件,包括PaddleHub迁移学习、PARL强化学习、PALM多任务学习、PaddleFL联邦学习、PGL图神经网络、EDL弹性深度学习计算、AutoDL自动化深度学习、VisualDL训练可视化工具等,旨在推动前沿深度学习技术的产业化落地,满足多样的产业需求。下面带来飞桨深度学习平台工具组件详细解读,核心内容3993字,预计阅读时间4分钟。
01
PaddleHub是预训练模型管理和迁移学习工具。开发者通过使用预训练模型,可以更便捷地开展迁移学习工作。PaddleHub主要有以下特点:
1、丰富的预训练模型库
飞桨的预训练模型库,目前主要覆盖自然语言处理和计算机视觉两个方向,包含图像分类、目标检测、词法分析、语义模型、情感分析、语言模型、视频分类、图像生成、图像分割等70多个技术领先的而且经过长期的产业实践验证的优质模型,可以帮助开发者快速开始。
2、少量代码即可完成迁移学习
PaddleHub Fine-tune API的开发,目的是帮助开发者降低迁移学习的门槛。在预训练模型的领域,我们可以认为模型都是标准化的,有标准化的输入,也有标准化的输出,跟软件是样的模块化。通过自定义数据集,再加上Fine-tune API,组网的工作可以通过一行代码搞定,而且PaddleHub集成了工业级简单实用的策略,包括数据的预处理等,可供开发者尝试。同时,引入『模型即软件』的设计理念,通过Python API或者命令行实现一键预测,更方便地应用飞桨模型库。
3、支持超参优化,自动搜索超参数
PaddleHub AutoDL Finetuner提供一个黑盒优化的策略,目标是用尽可能少的次数来找到一个更好的超参,使得我们的模型在验证集上的指标更好。这个问题没有很明确的公式描述,因此需要通过黑盒优化的技术来求解:通过定义一个超参的类型和范围,让机器来自动搜索,而且对于任意的机器学习的代码都可以使用黑盒优化,可以帮助开发者提高整个超参优化的效率。
4、通过Hub Serving,实现一键Module服务化部署
Hub Serving是为用户端到端体验打造的,从预训练模型快速的生成API的服务,可以实现安全可控、支持私有化的部署。开发者可以基于PaddleHub开放的模型在自己的企业内部搭建起预训练模型和服务,并通过API调用的方式快速接入。客户端的应用方式非常简单,通过我们最经典的HTTP的方式,可以快速的使用这些预训练模型,让更多的人能够用到预训练模型的效果。
更多内容,请参考:
https://github.com/PaddlePaddle/PaddleHub
02
PaddlePALM (PAddLe for Multi-task) 是一个强大快速、灵活易用的任务级(task level)多任务学习框架,用户仅需书写极少量代码即可完成复杂的多任务训练与推理。PALM框架实现了简洁易懂的任务实例创建与管理机制,强大易用的参数管理与复用接口,以及高效稳定的多任务调度算法。此外,框架提供了定制化接口,若内置工具、主干网络和任务无法满足需求,开发者可以轻松完成相关组件的自定义。框架中内置了丰富的主干网络及其预训练模型(BERT、ERNIE等)、常见的任务范式(分类、匹配、机器阅读理解等)和相应的数据集读取与处理工具。框架运行的基本原理图如下图所示:
框架支持基于配置和基于API这两种使用方式。对于典型的多任务学习场景,用户可以从内置的reader、backbone和paradigm池中自由组合出任务实例,而后基于参数管理机制指定任务实例之间的参数复用关系,最后创建任务控制器,启动多任务训练或推理。
这里举一个实际应用场景的例子。假如有一个目标任务机器阅读理解MRC,为了提升模型的泛化能力(获得更佳的测试集表现和模型鲁棒性),我们可以设置两个辅助任务掩码语言模型任务MLM和问答匹配任务MATCH。通过PaddlePALM我们可以很轻松的完成这个较为复杂的多任务学习过程。
首先,我们为三个任务选取合适的共享参数的主干网络用于文本特征抽取与学习(例如BERT、ERNIE等),主干网络可以写入全局配置文件或由用户手动实例化。而后,我们为每个任务选取合适的数据处理工具和任务输出层,进而创建任务控制器,启动三个任务的联合训练。
为了提升易用性,PALM多任务学习目前已经进行了一个很好的封装,只需要20行左右的代码,就可以同时训练多个任务来提升模型效果。基于这个模块,今年百度自研的D-NET的模型,实现了EMNLP2019阅读理解的十项冠军。
更多内容可参考:
https://github.com/PaddlePaddle/PALM
03
近几年来,深度神经网络的成功推动了人工智能的发展,然而,在实际场景中,有大量的数据是在非欧式空间的,这限制了深度神经网络的应用。而图神经网络在这类数据上有着出色的处理能力,使得最近一段时间图神经网络在学界与工业界上大放光彩。
百度顺应潮流发布的PGL充分利用飞桨独有的Lod Tensor特性,实现了高度并行的图神经网络消息传递机制,在性能上超越了DGL等现有图学习框架13倍。依托于飞桨核心框架以及自研的分布式图引擎,PGL可支持十亿节点百亿边的巨图训练。此外,PGL原生支持异构图Meta Path采样以及Message Passing双模式,预置了13种业界主流图学习算法,方便开发者熟悉和使用图神经网络领域模型,包括以下技术特色。
1、高效:通用消息聚合性能超越业内主流框架DGL 13倍
图神经网络模型的独特优势在于充分捕捉数据中的结构信息。PGL采用消息传递范式(Message Passing)构建图神经网络的接口,用户只需要简单地编写send和recv函数就能够轻松的实现一个简单的GCN网络:其中send函数被定义在节点之间的边上,负责将消息从源点发送到目标节点;recv函数则负责将这些消息聚合起来。目前,PGL提供两套聚合方式,一套是Scatter-Gather用于解决常见如求和聚合的方式,而另外一套则是基于飞桨Lod Tensor特性实现的并行通用的消息聚合方法。得益于并行的消息聚合能力,PGL的速度能够达到DGL的13倍。
2、规模:支持十亿节点百亿边的超大规模图训练
依托于分布式图引擎以及大规模参数服务器Paddle Fleet,PGL可以轻松在MPI集群上搭建分布式超大规模图学习算法。超大规模图会以切分形式在分布式图引擎中存储,此外还提供诸如图信息访问、子图采样、游走等操作算子。在此之上则是PGL构建的分布式图训练模块,该模块会与参数服务器Paddle Fleet进行联动训练,满足用户数十亿节点Embedding学习需求。
3、易用:轻松搭建异构图学习算法
在工业应用中,许多的图网络是异构。PGL针对异构图包含多种节点类型和多种边类型的特点进行建模,旨在为用户提供方便易用的异构图框架,让用户可以快速构建自定义的异构图模型。目前,PGL支持异构图的Meta Path采样以及异构图的Message Passing机制。异构图存在不同类型的节点和边,为了融入Message Passing机制,PGL可以在异构图中分别对不同类型的边进行消息传递。最后将同一个节点在不同边类型的表示融合在一起。
4、丰富:预置13种业界主流图学习模型
为了便于用户熟悉和使用图神经网络领域的模型,PGL预置了13种主流的图学习模型。这些模型涵盖了同构与异构、图表示学习与图神经网络、分布式训练等样例,可以赋能推荐系统、知识图谱、用户画像、金融风控、智能地图等多个场景。用户可以方便地根据自己的需要选择不同的样例进行复现、修改、上线等。
更多内容,请参考:
https://github.com/PaddlePaddle/PGL
04
PARL(PAddle Reinfocement Learning) 是高性能、灵活的强化学习框架,提供可复现性保证,大规模并行支持能力,复用性强且具有良好扩展性。
通过复用通用算法库里面已经实现好的算法,开发者可以很快地在不同算法间切换,保持了高效的迭代频率。PARL 的算法库涵盖了从经典的DDPG,PPO, TD3 等算法,到并行的A2C, GA3C, IMPALA以及并行的Evolutionary Strategy等算法。尽管算法库包含了各种类型的复杂算法,但是其接口是相当简单的,基本上是 import 即可用的方式。
同时,基于PARL提供的高效灵活的并行化训练能力进行强化学习训练,可以使得训练效率得以数百倍地提升。PARL 的并行接口的设计思想是用 python 的多线程代码实现真正意义上的高并发,参赛选手只需要写多线程级别的代码,然后加上PARL的并行修饰符就可以调度不同机器的计算资源,达到高并发的性能。
PARL 应用了百度多年来在强化学习领域的技术深耕和产品应用经验,具有更高的可扩展性、可复现性和可复用性,强大的大规模并行化支持能力。开发者可以通过 PARL 用数行代码定制自己的模型,一个修饰符就能实现并行。此外,PARL 代码风格统一,包含了多个入门级别的强化学习算法,对初学者相当友好。
特别值得一提的,在机器学习领域顶级会议NeurIPS 2019 主办的 Learn to Move 强化学习比赛中,百度继2018年夺得冠军后再度蝉联冠军。本次比赛的难度非常大,在参赛的近 300 支队伍中,仅有 3 支队伍完成了最后挑战。百度基于飞桨的强化学习框架 PARL 不仅成功完成挑战,还大幅领先第二名 143 分。显而易见,百度在强化学习领域占据了明显的优势,冠军含金量颇高。
更多内容请参考,PARL:
https://github.com/PaddlePaddle/PARL
05
PaddleFL(Paddle Federateddeep Learning)是开源联邦学习框架,可轻松地复制、比较不同联邦学习算法,提供众多联邦学习策略及在计算机视觉、自然语言处理、推荐算法等领域的应用。此外,PaddleFL还将提供传统机器学习训练策略的应用,例如多任务学习、联邦学习环境下的迁移学习。依靠着飞桨的大规模分布式训练和Kubernetes对训练任务的弹性调度能力,PaddleFL可以基于全栈开源软件轻松地部署。
更多内容可参考:
https://github.com/PaddlePaddle/PaddleFL
06
AutoDL包含自动网络结构设计、迁移小数据建模和适配边缘计算三部分。开源AutoDL设计的图像分类网络在CIFAR10数据集正确率达到 98%,效果优于目前已公开的10类人类专家设计的网络,居于业内领先位置。
更多内容可参考:
https://github.com/PaddlePaddle/AutoDL
07
VisualDL是面向深度学习任务设计的可视化工具,包含scalar、参数分布、模型结构、图像可视化等功能。该项目正处于高速迭代中,不断增加新组件。目前,大多数DNN平台使用Python作为配置语言。VisualDL原生支持python使用,在模型Python配置中添加几行代码,便可为训练过程提供丰富的可视化支持。
更多内容可参考:
https://github.com/PaddlePaddle/VisualDL
想与更多的深度学习开发者交流,请加入飞桨官方QQ群:796771754。
如果您想详细了解更多飞桨PaddlePaddle的相关内容,请参阅以下文档。
官网地址:
https://www.paddlepaddle.org.cn/
项目地址:
PaddleHub:https://github.com/PaddlePaddle/PaddleHub
PALM:https://github.com/PaddlePaddle/PALM
PGL:https://github.com/PaddlePaddle/PGL
PARL: https://github.com/PaddlePaddle/PARL
PaddleFL:https://github.com/PaddlePaddle/PaddleFL
AutoDL:https://github.com/PaddlePaddle/AutoDL
VisualDL: https://github.com/PaddlePaddle/VisualDL