框架技术创新

飞桨科学计算套件赛桨PaddleScience底层技术依赖飞桨外围框架。为了无力地撑持科学计算工作高效训练与推理,飞桨外围框架在主动微分、编译器、执行器和分布式等多方面别离进行了技术创新。值得一提的是,主动微分在机制上的变革带来了框架计算量方面的优化,联合自研编译器CINN的加持,在典型科学计算工作2D定常Laplace模型上达到业界性能最优。

主动微分

飞桨外围框架在2.3版本中针对主动微分机制和主动微分API提供多种技术创新。

主动微分机制

主动微分在机制方面,通过设计主动微分根底算子体系,并在其上定义linearize和transpose程序变换规定。飞桨在动态图中新增对前向微分的反对,实现前反向不限阶的主动微分机制。翻新后的主动微分机制具备良好的算子反对扩展性,目前曾经反对全连贯网络,并在2D定常Laplace、3D定常圆柱绕流等典型科学计算工作上实现验证工作。

目前的主动微分机制设计流程为:用户实现前向组网后,会首先将前向过程对应的网络转化到主动微分根底算子体系上,而后屡次调用linearize和transpose两种程序变换实现高阶前向/反向微分,最初将网络整体转化到飞桨原生算子体系上实现组网或者对接编译器进行更多优化。该机制将计算拆分到更细的粒度,因为引入并正当应用切空间(前向微分空间)信息,绝对于原有的主动微分机制有计算量上的优化,在2D定常Laplace模型上实测有最大1.58倍性能晋升。

主动微分API

在主动微分API方面,飞桨为内部用户新增2个主动微分API,别离是前向主动微分forward_grad与反向主动微分grad两种接口,均反对高阶微分。为了不便用户应用,同时提供Jacobian、Hessian的求解,反对按行提早计算,在简单偏微分方程组中显著晋升计算性能。另外,也公开了实现此次翻新后的主动微分外围机制API jvp与vjp,以后所有API均放在incubate空间下,处于试验个性,会依据用户需要及具体利用场景继续演进。上述API列表以及计算示例如下表所示。

分布式主动并行

为了反对用户应用大规模网格点数据进行高效训练,PaddleScience采纳高可扩大的飞桨主动并行技术,它能依据用户输出的串行网络模型和所提供集群资源信息主动进行分布式训练。基于对立分布式计算图和对立资源图设计,飞桨主动并行可反对任意并行策略和各类硬件集群资源上的分布式训练,能将原用户原计算图中每个串行tensor和串行operator主动切分成分布式tensor和分布式operator,并插入适合高效通信来保障与原串行计算统一,如下图所示。目前飞桨主动并行反对半自动与全自动两种模式:

  • 模式一:半自动模式下用户能够依据本人须要指定某些要害tensor和operator的切分形式,而框架会通过数据流剖析形式进行主动推导残余的tensor和operator;
  • 模式二:全自动模式下不须要用户标记任何切分形式,所有tensor和operator都由框架基于Cost Model自适应抉择最优的切分策略。基于主动并行所提供的数据并行、梯度累积和数据集并行加载等分布式能力,在3D圆柱绕流工作上32卡扩大效率可达到93%。联合主动并行,PaddleScience将来将更容易取得简单并行策略反对。

编译器

主动微分机制将科学计算模型中的深度学习算子拆分成若干细粒度的根底算子,若间接计算,这些细粒度算子将使得模型的大部分工夫被节约在数据交换和执行调度而非理论计算上。这意味着咱们并未齐全利用到硬件的计算资源,因而模型的计算速度还仍有较大的晋升空间。神经网络编译器在此类问题上有着显著的劣势,包含针对计算图的通用Pass优化、算子交融以及主动代码生成等。飞桨神经网络编译器CINN即是解决此类问题的无力工具,它在打消大量无用数据交换和执行调度开销的同时,极大地升高算子开发所需的人力老本,相比于未开启编译减速的执行形式,开启CINN在2D定常Laplace模型上实测有最大3.72倍性能晋升。

CINN为科学计算模型提供了一套欠缺的优化机制,典型的常量折叠,冗余算子打消,特定硬件的gemm rewriter库算子替换等优化Pass在CINN中均已实现。主动算子交融能力也在日趋强化,为科学计算等畛域模型的训练性能提供更多的减速契机。以2D定常Laplace模型为例,最大的交融算子汇合可蕴含94个小算子。

图 左:CINN架构图 中:gemm rewriter示例 右:5个小算子交融示例

咱们以2D定常Laplace模型作为对立测试模型,设定采样点数100*100,选取多组网络层数和暗藏层节点数的全连贯网络训练2000 epoch,别离在JAX、飞桨动态图、飞桨动态图+新主动微分、飞桨动态图+新主动微分+CINN编译器几种模式下进行测试。以飞桨动态图模式作为baseline,计算其余模式绝对飞桨动态图的减速比。(性能测试硬件平台:V100 16GB单卡;Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 40-core)

从试验后果能够看出,受害于新主动微分机制上的变革和自研编译器CINN的性能优化加持,在典型科学计算工作2D定常Laplace模型上达到业界性能最优。

执行器

飞桨中有两种数据结构能够示意网络模型,一种是Program,将模型表示成OP序列,不便在单机单卡下程序执行OP;另一种是Graph,将模型表示成计算图构造,不便在多卡下并行调度OP,并默认开启许多图优化的IR pass以晋升训练性能。因为Program相比Graph批改简略,能够不便地插入分布式须要的数据通信等OP,因此飞桨中许多重要的分布式性能都是基于Program构造进行开发。在科学计算我的项目中,咱们对上述典型的科学计算模型实现Program和Graph两种示意构造的无损互转,使得计算图优化后的Graph能够转换成Program进行分布式训练,买通计算图优化和分布式训练联合的技术门路,充分利用两者的优化能力,大幅晋升模型训练性能。

此外,飞桨框架在2.3版本中公布了全新的动态图执行器,其中实现高效的多stream和多线程异步调度组件,使得模型训练更加性能优越和易扩大,并已在单机单卡场景下默认应用。针对PaddleScience,咱们通过对动态图新执行器在对接Graph IR体系和反对分布式训练等方面的性能适配和裁减,使图优化后的模型能够利用新执行器进行分布式训练。

拓展浏览

AI+Science系列(一) :飞桨减速CFD(计算流体力学)原理与实际

AI+Science系列(二):国内首个基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!
赛桨PaddleScience v1.0 Beta:基于飞桨外围框架的科学计算通用求解器

相干地址

  • 飞桨AI for Science共创打算

https://www.paddlepaddle.org....

  • 飞桨PPSIG-Science小组

https://www.paddlepaddle.org....**