科学的规划

PDF
科学的规划/2020/文章

研究文章|开放获取

体积 2020 |物品ID 8888811 | https://doi.org/10.1155/2020/8888811

乔丹·奥特,迈克·普理查德,娜塔莉·贝斯特,埃里克·林斯特德,米兰·柯契奇,皮埃尔·巴尔迪, "Fortran Keras科学计算深度学习桥",科学的规划, 卷。2020, 物品ID8888811, 13 , 2020 https://doi.org/10.1155/2020/8888811

Fortran Keras科学计算深度学习桥

学术编辑:曼纽尔·e·阿西奥·桑切斯
收到 2020年4月20日
认可的 07年8月2020年
发表 2020年8月28日

摘要

实现人工神经网络通常通过高级编程语言(如Python)和易于使用的深度学习库(如Keras)来实现。这些软件库预装了各种网络体系结构,提供自动区分功能,并支持GPU以实现快速高效的计算。因此,深度学习实践者会倾向于在Python中训练神经网络模型,因为在Python中这些工具都是现成的。然而,许多大型科学计算项目都是用Fortran编写的,因此很难与现代深度学习方法集成。为了缓解这个问题,我们引入了一个软件库,Fortran Keras桥(FKB)。这座双向桥梁将深度学习资源丰富的环境与稀缺的环境连接起来。本文描述了FKB提供的一些独特功能,如可定制的层、丢失功能和网络集成。本文最后给出了一个案例研究,该案例研究应用FKB解决了关于全球气候模拟实验方法稳健性的开放性问题,其中子网格物理外包给深度神经网络仿真器。在这种情况下,FKB允许超参数搜索100多个亚网格云和辐射物理候选模型,最初在Keras中实现,并在Fortran中传输和使用。这样一个过程允许评估模型的紧急行为,即,当拟合缺陷与明确的行星尺度流体动力学耦合时。结果揭示了离线验证错误和在线性能之间先前未被识别的强烈关系,在这种关系中,优化器的选择出乎意料地至关重要。这反过来又揭示了许多新的神经网络结构,这些结构在气候模型稳定性方面产生了相当大的改进,包括一些减少了误差的结构,用于一个特别具有挑战性的训练数据集。

1.介绍

Fortran编程语言最初开发于20世纪50年代,并于1957年出版。它的创建是为了帮助程序员在IBM 704计算机上实现科学和工程问题的解决方案,在当时需要用机器语言或汇编语言编写。Fortran被认为是革命性的,可能是历史上最有影响力的软件产品之一。1.].自创建以来,它已经进化了很多次,最近的版本是在2018年,每个版本都添加了新的功能和功能。Fortran最初受到了广泛的欢迎,并由于其快速和高效的计算能力而一直是一种广泛使用的语言。此外,Fortran的优势在于它的向后兼容性,这使得现代编译器能够构建60年代和70年代编写的代码。

尽管不再像以前那样流行,Fortran仍然被用于一些专门领域,包括海洋学、固体力学、计算物理学、地震模拟、气候建模和航空航天。由于Fortran的继续使用,大量的遗留代码和新代码都存在。不幸的是,由于它们的规模和复杂性,很难用更主流的语言重写所有现有的代码库。因此,当在现代语言中创建算法和扩展库时,必须开发向后兼容的方法,以便在较旧的遗留代码(如Fortran)中使用它们。

近年来,机器学习和深度学习的兴起导致了各个领域的成功应用。训练集的规模和可用计算能力的显著改进导致了一波新的实现浪潮[2.,3.].反过来,这种成功也增加了深度学习的使用和传播。这些方法已应用于许多领域,例如,从遥感[4.,5.]转为电脑视觉[6.10],和游戏[11,12].具体来说,在科学计算领域,神经网络的应用取得了许多进展。神经网络已被增强为具有物理信息的能力[13,14],更好地适应保护限制。学习偏微分方程[15,16在多个科学领域都被证明是有价值的。

深度学习的成功和普及激发了用几种现代编程语言编写的功能强大的软件库的创建。然而,Fortran并不是受益于这些深度学习库的现代语言之一。这种缺失使得Fortran程序员几乎没有实现深度神经网络的选择。

在Fortran中,深度神经网络的实现可以通过两个主要途径实现。一种解决方案是用Fortran重写所有现有的深度学习库。第二个解决方案是利用现有框架并将可用的功能连接到Fortran。考虑到现有的深度学习包的规模和范围以及它们令人眼花缭乱的发展速度,前者是极其艰巨和耗时的[1719]。本文描述的后一种方法是,允许用户利用现有框架的力量,同时在深度学习资源丰富的范例和缺乏深度学习资源的范例之间架起一座桥梁。通过这种方式,我们可以利用当前可用的深度学习软件库的各个方面,例如Keras[20.],并将它们带到在Fortran中写的大规模科学计算包。为此,我们提出了Fortran-Keras Bridge(FKB),这是一个双向桥梁连接模型,在CORTRAN中提供的型号。源代码可公开可用,可以在https://github.com/scientific-computing/FKB.我们首先回顾一下从FKB集成中受益的现有Fortran项目。

2.Fortran项目

FKB可以与用Fortran编写的许多现有大型计算密集型项目集成。这些项目将受益于FKB使之成为可能的神经网络模型的轻松集成。

例如,Fortran被用来做大量的气候和海洋建模工作。例如,美国生产的社区地球系统模型[21]是用面向对象的Fortran-90编写的;这是世界上使用最广泛的气候模型,美国能源部使用的其他气候模拟代码也是[22]及国家海洋及大气管理局地球物理流体动力学实验室[23].与此同时,欧洲海洋模拟中心(NEMO)[26引擎用于研究区域和全球尺度的海洋环流问题,并对未来进行预测,它也是用Fortran语言编写的。混合坐标海洋模式(HYCOM)[27],也用于海洋建模,扩展了传统的海洋模型,使之能够从深海平稳过渡到沿海地区。研究人员还开发了波浪和风应力建模模型[26]。天气研究和预测模型(WRF)可以说是区域决策支持中使用最广泛的数值天气预测模型[27]。自2000年发布以来,WRF注册数量已增至36000多个。WRF生成大气模拟,支持特殊应用,包括空气化学、水文学、野地火灾、飓风和区域气候,并且再次是基于Fortran的模型。

Fortran在固体力学软件包中不断被用于实现有限元方法。流行软件包,如ANSYS [28],有限元分析[29]和LS-DYNA [30.或接受Fortran子例程。类似地,在地震建模中,SPECFEM3D [31软件包利用Fortran进行模拟。

这样的例子不胜枚举。代码Saturne [32,由Électricité de France和NEK5000开发[33]是Fortran开源计算流体动力学软件包。Code_Saturne允许用户通过Fortran子例程进行自定义,这只是FKB的一个应用程序域。NEK5000积极用于先进反应堆Exascale模拟中心(CESAR)项目。Fortran还被不断地用于化学和物理中的分子建模。哈佛大学高分子力学化学(CHARMM)开发项目用Fortran编制了一个功能强大的分子模拟程序[34]该模拟程序不仅主要针对生物系统,还可用于无机材料。太平洋西北国家实验室的分子科学软件组开发了一个类似的工具NWChem[35].NWChem是一个包含量子化学和分子动力学功能的计算化学软件。在分子物理领域,Fluktuierende Kaskade (FLUKA)是计算粒子传输和与物质相互作用的专有工具[36].

上面提到的模型和项目可以利用FKB库来利用它们的代码库中的神经网络。例如,神经网络已被证明在模拟海面温度冷却以进行台风预报方面是有用的[37].因此,FKB与NEMO、HYCOM或WRF模型等工具的集成是可能的。在最近的计算流体动力学研究中,Ling等人解决了雷诺平均Navier-Stokes方程,类似于Code_Saturne和NEK5000。通过实现深度神经网络,作者报告说,该体系结构提高了预测精度[38].最后,Fluka工具包含了广泛的分子物理应用,包括剂量计算。Vega-Carrillo等人已经证明了神经网络在中子剂量计算中的辅助作用[39]。对于全球气候模拟,有证据表明,深度神经网络可以提供巧妙的替代方案,以取代亚网格云和大气湍流物理的假设近似[40,41].我们希望FKB库能够使Fortran用户扩展他们的研究和项目,包括神经网络。

在回顾了几个可以利用FKB的基于Fortran的项目后,我们现在介绍这座桥的两侧。以下各节将为锚定这座双向桥的两侧奠定基础。我们首先介绍深度学习锚定。

3.Python锚(深度学习)

许多编程语言提供了实现人工神经网络的工具和库。然而,近年来,Python已经成为这个领域中最受欢迎的语言。指标图1.显示Python的主导地位。Python的使用比第二流行的语言多了近50%;R. Python在机器学习中的普遍存在使它成为利用Fortran现有库的明显选择。那么问题就变成了,Python中哪个可用的软件库最适合连接到Fortran?

在可用的深度学习库中,Keras [18]在从业者中最受欢迎(图1 (b)).Keras是一个建立在TensorFlow之上的应用程序编程接口(API) [17,为用户提供快速实现、培训和测试网络的能力。这种便利性封装了从零开始实现深层网络时必须处理的许多低级复杂性。Keras抽象了TensorFlow的许多复杂方面,同时还提供了可定制性和易用性。这种组合使Keras成为许多深度学习应用程序的首选。由于它的普及和易用性,Keras是构建双向桥梁一端的明确选择。

数字2.描述了Python锚(FKB/P)在深度学习生态系统中的定位。Keras API利用Python构建深度神经网络。FKB/P位于Keras的顶部,用于访问Keras生产的模型,并将它们传输到Fortran锚,FKB/F。这种结构允许与希望利用深度神经网络架构的Fortran应用程序集成。在描述了Python中的深度学习锚之后,第4节为用Fortran锚定桥梁奠定了基础。

4.Fortran锚(科学计算)

在Fortran中进行了几次尝试来实现神经网络,取得了一些成功[4347].然而,许多实现都诉诸于手工破解一次性神经网络,或者绑定其他语言的代码[47沿着这些线,人们可以考虑通过FORTRAN直接访问Python功能,通过在FORTRAN中运行Python实例。在提供灵活性和易用性的同时,这容易受到速度和计算资源的极端不足。因此,对于大规模计算项目SUC来说,该解决方案变得不可行。h如第节所述2.

Fortran中有少量现有的神经网络库[4648].最新和发展良好的库是Neural Fortran [46,一个轻量级的神经网络库,用Fortran编写。Neural Fortran库提供了以基于数据的并行性实现任意大小的人工神经网络的能力。此外,在基准测试中,Neural Fortran被证明具有与Keras相当的计算性能,同时保持更低的内存占用。这个库提供了一个基础来锚定双向桥的Fortran方面,FKB/F。通过在- neural Fortran之上扩展和构建,我们可以将Keras模型转换为Fortran中现成的模型,并在现有的Fortran项目中实现它们。

FKB在科学计算生态系统中的定位如图所示2..Fortran锚,FKB/F,可以使用最初在Keras构建和训练的模型,然后可以通过FKB/P转移到Fortran。为了使用这些模型,FKB的Fortran端实现了一个神经网络库。FKB的这一部分可以在大型科学计算软件中使用,例如本节中确定的项目2.

通过利用FKB,它可以无缝地用Python训练网络,并将它们转换为Fortran,在大规模模拟中运行。类似地,在Fortran中构建的神经网络模型可以转移到Python中进行额外的分析、扩展和优化——包括使用Python中的可用工具进行超参数搜索[20.,49,50].由于已经适当地介绍了桥的两边,下面的部分将描述FKB的具体特性和功能。

5.FKB的特点

一旦在高级API(如Keras)中训练神经网络,实践者在基于Fortran的项目中使用该模型的实际途径就很少了。一种方法可能是在Fortran中对网络操作进行硬编码,同时手动从Keras模型中移动参数。在气候建模中可以看到这方面的几个例子[41,5153].

提供一个具体的例子,在[41],作者训练了一个深度神经网络(DNN)来表示Keras中的亚网格云和对流能量传输过程。为了评估其可信度,他们需要测试DNN的双向相互作用,当它的数千个复制品嵌入到一个粗略分辨率的全球大气模型中时,该模型是用Fortran神经网络编写的,模拟云与行星地球物理流体动力学的确定性物理计算相互作用。由于全球大气模拟器不提供本地神经网络支持,作者将其DNN模型硬编码到全球模拟软件框架中。这种方法有明显的缺点。Keras中对模型所做的每一个微小更改都需要重写Fortran代码。如果希望用Fortran测试一套模型,这种方法就站不住脚了。

因为每个网络可能需要不同的超参数,因此,需要为每个新模型重写和编译Fortran代码。这个过程极大地限制了模拟器中要测试的可用模型的宽度。这一瓶颈目前是气候模拟界正在进行的辩论的一个重要障碍,更广泛地说,是关于是否在下一代气候模拟中使用亚网格物理的DNN表示。对不同候选神经网络(NN)的测试不足意味着,当NN与流体动力学耦合时,对于一个NN的适合度的微小缺陷可以放大到什么程度,我们知之甚少,而流体动力学刚刚开始被探索[54].

这些问题需要一个解决方案,在Keras和Fortran之间架起一座桥梁。FKB软件通过两个关键要素解决这些问题。首先,它提供了一个用Fortran(FKB/F)实现的神经网络库。其次,它提供了将现有Keras模型解析为与Fortran神经网络库(FKB/P)一致的格式的能力。因此,用户可以在Python和Fortran之间无缝地来回切换。此上下文提供了一种迭代神经网络调优(Python)和测试(Fortran)的方法,并提供了一种在两个软件环境之间进行转换的简单方法。此外,FKB为神经网络提供了目前不可用的Fortran特定功能。在记录FKB遵循的格式时,突出显示这些新功能将非常有用。以下各节分别描述Python和Fortran锚的特性FKB/P和FKB/F。

5.1.FKB/P

Keras模型一旦构建、训练和保存,就会存储在层次数据格式5(HDF5)文件中。这些文件包含网络架构、权重、偏差和其他信息优化器、学习率、梯度等。FKB/P从HDF5文件中解析网络架构,提取层数、激活函数、每层节点以及所有权重和偏差。此信息被转换为与FKB/F中的Fortran神经网络配置相匹配。这允许用户在Fortran中构建等效网络,可以在Fortran环境中轻松加载和使用。如果在Fortran内部对模型进行了任何修改,FKB/P会将其解析回等效的HDF5文件中,以便再次在Keras中使用。

相反,网络可以用Fortran进行初始构造。经过初步培训和测试后,用户可以切换到Keras进行进一步的评估。在Keras中,用户可以在这些工具可用的地方进行额外的测试或超参数调优[49].

在Python和Fortran之间无缝通过神经网络架构的能力对于任何在这一领域工作的从业者都是必不可少的。这个桥允许用户利用高级的Keras api——在计算效率高的gpu上进行训练——然后将训练过的模型插入Fortran代码库中。该功能弥补了Keras和Fortran之间的鸿沟。

5.2。FKB / F

FKB的Fortran锚利用并扩展了原始的神经Fortran库。下面,我们介绍新实现的特性,使神经Fortran更加灵活,能够在双向桥上进行通信。

5.2.1.自定义图层

为了在Fortran中实现神经网络,FKB利用并扩展了neural Fortran库[46].我们构建的原型Neural Fortran库格式只能实现一个完全连接的层。向前和向后的操作发生在网络模块的这层之外。算法中给出了一个例子1..从算法中,可以观察到硬编码矩阵的层权乘法,偏差的加法,以及网络模块内部的激活函数。这个网络级子程序访问和修改各个层的属性。这种僵化的格式与现代神经网络实现模式不一致[1719,但这使得它不可能实现其他层或自定义操作。为了增加库的灵活性,操作必须封装在层中,与当前的实践保持一致。

纯子程序fwdprop(self, x)
!执行前向传播并将参数存储到激活状态
!在backprop中使用的函数和激活本身。
Class (network_type), intent(in out): self
真实(rk)、意图(in):x()
整数(ik): n
关联(层=>self%层)
层(1)%一个=x
n=2、尺寸(层)
层(n) %z=Matmul (transpose(layers(n-1) % w), layers(n-1) % a)+层(n) % b
层(n) %一个=自%layers(n)%activation(layers(n)%z)
最后做
结束把
结束子例程fwdprop

在FKB中,我们引入了一个可扩展的层类型模块(算法)2.).为了实现层,只需扩展图层类型并指定前向和后向功能的构造。秉承这种格式提供了几个优点。通过重组图书馆的格式,我们提供了实现任意层的能力。另外,在网络模块中,所有层都存储在指针数组中。这导致算法显示的封装版本2.其中,网络模块中的前向传递调用层特定的前向功能。这样,所有的操作都被限制在层模块中,一层的输出作为输入传递给下一层。

函数输出(self, input)
...
!通过向前传递激活的层进行迭代
n=1、尺寸(层)
调用层(n) %p%(层(n - 1) %p% o)
最后做
!从最后一层获得输出
最后一层输出=层(大小(层))%p%啊
端函数输出

FKB支持完全连接或密集层,dropout [55,56,以及批处理规范化[57].算法3.是扩展layer_type以实现批处理规范化层的示例。这种格式为用户提供了更多的功能和可定制性。因此,Keras提供了更多的标准层,同时为用户提供了实现自己定制操作的灵活性。

!BatchNorm层从基础层扩展而来\u类型
!实现批处理规范化
类型,扩展(layer_type): BatchNorm
!ε参数
实(rk):ε
包含
public, pass(self): forward => batchnorm_forward
过程,public, pass(self): backward => batchnorm_backward
结束类型Batchnorm.
5.2.2。Fortran语言培训

有必要区分这些术语离线在线用于下一节。这些术语用于区分两种不同的设置,在这两种设置中,Fortran计算包中可以使用神经网络。这两种设置都可以利用历史或模拟数据来训练人工网络。区别在于如何使用模型的预测。在在线设置中,预测来自模型的预测用于演化物理过程。一个时间步的预测会影响系统在下一个时间步的行为。因此,模型的输入将根据模型过去的行为而变化。在脱机设置中,情况并非如此。过去的预测不会影响futu中模型的输入重新。

在许多情况下,如果有足够的先验数据,离线训练可能足以学习模型。然而,在某些情况下,在线培训可能是选择的方法。为此,FKB用于处理特定代价函数的梯度下降优化的反向传播。

上面提到的前向和后向操作的层封装(节)5.2。1.)在训练中变得非常有价值。而不是网络模块中发生的所有计算[46,它们包含在特定层的函数中。与前向传递非常相似,后向操作在层中发生。在这种方式下,每一层都负责计算相对于它的参数的梯度,并返回相对于它下面的层的梯度。

在线培训可用于多种目的。首先,神经网络模型可以完全用Fortran语言学习,基于物理动力系统仿真集成过程中不断变化的状态变量,然后在事实发生后转移到Keras。在此设置中,来自模拟器的基本事实被传递到网络以供参考第二,在线培训可以为不完美的预训练模型提供温和的修正,例如,为了避免只在神经网络与其他物理计算耦合时才显示的缺陷的放大。这里,一个el在Keras中接受离线培训,并转移到Fortran(第节)5.1).在某些情况下,由于各种原因,离线训练数据的分布可能与在线数据的分布不同。在这种情况下,对网络进行轻微的修正是有益的。最后,可以建立一个辅助模型来学习和弥补初级模型的不足。通过这种方式,两个网络一起工作,以平衡任何不稳定的问题。

层操作的封装直接带来了易用性和正确的格式。在线培训提供了解决一系列潜在问题的解决方案。因此,模型可以通过轻微的修改进行更新,或者完全在线学习。

5.2.3。定制的损失函数

在许多应用中,实践者可能希望优化一个独特的量,一个函数,而不是一个均方误差或交叉熵。当目标变量相互作用或在期望的应用程序中知道它们的关系的附加信息时,这是很常见的。例如,在对任何物理系统建模时,来自神经网络的预测必须不违反物理约束,能量不能在系统中产生或消灭。为了满足这个限制,可以写一个损失函数来量化物理性质的破坏量。这种结构可以被最小化,以减轻约束违反[13].

自定义丢失函数的实现是Keras、TensorFlow和PyTorch等高级api的标准,以在其代码库中提供这种能力[1719]。由于FKB是为那些在环境、物理或应用特定约束常见的物理科学领域工作的人设计的,因此它提供了实现自定义损耗功能的能力。为了利用这一功能,用户必须实现他们想要的损耗功能,就像在Keras中一样。由于FKB不提供自动微分,因此训练也需要输入的导数。一旦指定了这些函数,就可以将它们放入现有框架中并正常运行,就像Keras一样。

通过在算法中实现基于共度损耗函数来证明这种能力4..为了实现这个以前不可用的loss函数,我们首先声明两个函数。首先,交叉熵的标量损失。其次,导出了相对于输入对数的损耗。这两个函数分别被引用为loss和d_loss。通过提供这种功能,用户可以利用各种损失功能来最小化应用程序特定的数量。一旦描述,它们可能包含在现有的框架中,并在在线培训中使用。

函数crossentropy_loss(self, y_true, y_pred)
!给定预测和期望的输出,返回标量损耗
Class (network_type), intent(in out): self
真实(rk),意图(in):y_真(),y_pred()
损失=- sum(y_true∗log(y_pred))
端功能损失
函数d_crossentropy_loss(self, y_true, y_pred) result(loss)
!给定预测和预期输出
!返回关于softmax输入的损失
Class (network_type), intent(in out): self
真实(rk),意图(in):y_真(),y_pred()
真正的(rk),可分配:损失()
损失=y_pred——y_true
结束函数d_loss
5.2.4。乐团

集成由不同的模型组成,每个模型基于相同的或自举的数据进行训练。集合的输出将是其所有成员预测的平均值。在机器学习中,模型集合通常比任何一个单独的成员表现得更好。集成策略利用了每个模型都会产生不同错误的事实。因此,当平均在一起时,这些预测会变得更加准确,因为某些误差会被消除。机器学习实践者的一致意见是令人信服的,并使性能提高1-2%[58].

这种平均的结果是,集成提供了性能上的提升以及额外的健壮性。在物理约束违反会产生稳定性问题的领域,可以应用集成来抑制这些问题。通过对多个网络进行平均,任何一个模型的不稳定性都将在出现更多可靠预测的情况下大幅降低。

提供的功能要求用户指定一个目录,其中包含感兴趣的模型和所需的噪声量。集合类型将读入每个模型,并构建对应于每个模型的网络。要从集合中获得预测,将输入向量传递给它。对于非零噪声量,为高斯噪声每次将输入向量传递给集合成员时,都会将其应用于输入向量。这样,每个成员都可以看到略有不同的输入变量,从而提高该点周围预测的稳健性。此操作使用OpenMP并行运行,在OpenMP中,可以为每个网络分配线程以加快计算;这种方法可以可以通过OpenACC对基于GPU的大型集成网络计算线程进行调整。计算完成后,将预测值平均在一起,并给出最终输出。

6.案例研究

以下部分提供了一个案例研究,演示了FKB在下一代实验性气候模拟中的应用。超参数化社区大气模式3.0版本(SPCAM3)用于本研究的所有模拟。超参数化是一种方法,它通过在大尺度大气的常规行星尺度模式中嵌入数千个潮湿对流的有限域显式子模式来在气候模式中表示亚网格云物理,从而解决了这一长达十年的问题[5962].这种方法往往涉及两个数量级更多地球模拟的计算单位面积上的强度,但最近锉等人使用深层神经网络来模拟所有的昂贵的次网格云解决模型”(CRM)影响行星主机大幅减少计算代价(41].这项研究,以及新兴的气候模型文献中的其他研究[51]已经证明了数据驱动方法在解决云和对流对行星气候的关键未解决影响方面的潜在优势,与之前基于启发式的亚网格物理近似方法相比。然而,在气候模拟中模拟湍流的想法仍然是一个新兴的想法,与不明确的权衡,包括频繁的不稳定性,当NN模拟器与流体动力学耦合时,社区正在寻求如何控制[51].甚至有人质疑,这些模拟器在训练期间的离线技能是否能预测它们的在线表现[63,64,一个重要的未决问题。

这些问题之所以没有得到充分的研究,主要是因为缺少FKB现在使气候科学家能够在行星气候模型中测试各种候选神经网络和集合的简单软件界面。

为了说明这方面的进展,我们现在应用FKB来阐明目前正在讨论的两个相关问题:(1)离线性能是否转化为在线模型性能[63,64] ?(2)哪个神经网络超参数对在线性能影响最大?

使用FKB,研究可分为两个阶段。首先,利用SPCAM3的模拟数据,通过Keras训练出一套108个候选对流神经网络模型。其次,将模型转换为Fortran并在SPCAM3模拟器中进行在线运行(即与行星流体动力学耦合)。在发生灾难性故障之前,步骤的数量可以作为性能的初步度量。很明显,在没有FKB库的情况下,在基于fortran的地球大气其余部分模型中运行数百个对流的候选神经网络子模型几乎是不可能的。由于每个网络包含各种超参数,每个超参数在训练过程中具有不同的权值和偏差,包括特定层的属性,如可选使用dropout或批处理归一化。为了利用SPCAM3的FKB库,我们只需提前编译神经网络库,并将其链接到SPCAM3的编译。本案例研究实现的文档步骤在https://github.com/scientific-computing/FKB/blob/master/SPCAM_Instructions.md

该神经网络模型的输入是一个94维向量。特征包括代表大尺度(主体模型)温度、湿度、经向风垂直结构、表面压力、入射太阳辐射、感热通量和潜热通量标量的垂直分解向量。网络的输出是一个65维向量,由嵌入模型对其主机的影响组成,即CRM和辐射加热率、CRM增湿率、大气层顶部和地球表面的净辐射通量以及降水量之和。

这里使用的培训数据很难匹配,因为它们来自CRM培训数据的增强版本,最初由[41].在超参数化模拟中,人们可以通过可用于形成有趣的亚网格风暴组织形式的房间来控制内部分解尺度的自由度。可以控制每个嵌入式CRM数组的物理范围(即使用的列数)[65].在[41], CRM阵列只有8列(32公里范围,考虑到4公里水平分辨率)。在这里,我们将范围扩大四倍(从32公里增加到128公里,即从8列增加到32列),以提高它的物理真实性。尽管进行了多次尝试,但这些数据从未被成功地拟合。从丰富的数据中训练出来的神经网络在嵌入到气候模型中后,往往会在短短几个模拟周内产生崩溃(见[54),以获得详细信息)。

我们的工作假设是,当模拟器在更高质量的CRM训练数据上训练时,自由运行测试的历史失败反映了气候模型应用中超参数调优不足的一个更广泛的问题。为了解决这个问题,我们使用SHERPA进行随机搜索神经网络优化[49,这是一个用于超参数调优的Python库。我们在表中详细描述了感兴趣的超参数1.,以及搜索过程中可用选项的范围。感兴趣的超参数包括是否使用批处理归一化、dropout的数量、漏出的ReLU系数、学习率、每层节点、层数和优化器。随机搜索算法的优点是对超参数搜索问题的结构不作任何假设,是探索各种设置的理想方法。


的名字 选项 参数类型

批正常化 (是的,没有) 选择
辍学者 [0, 0.25] 连续
漏雷卢系数 [0 - 0.4] 连续
学习速率 (0.00001 - -0.01) 连续(日志)
每层节点 (125、256、512) 离散
层数 [4] 离散
优化器 (亚当,RMSProp, SGD) 选择

我们获得了108个候选神经网络模型配置,每个训练25个周期,早期停止监测验证损失。在离线训练阶段之后,神经网络模型被转换成对应的Fortran模型,并在SPCAM3中运行。我们强调这一关键步骤是禁止使用标准工具的,因为这些工具需要对每个候选模型进行手工翻译。然而,通过利用FKB库,每个模型都被独立加载到Fortran中,并在SPCAM3的主行星模型中作为大规模大气状态的亚网格物理仿真器运行。每个模型都与流体动力学耦合,以在前所未有的多样化候选神经网络架构中运行广泛的预后测试。108个候选神经网络模型中的每一个都在线运行,所有这些模型都不需要重写任何Fortran代码,它们具有不同数量的层、特定层的设置(批处理规范化、relu大小等)、每层的节点、权重和偏差。

为了解决第一个问题并评估神经网络模型的性能,我们将其训练期间的验证MSE与在线测试的时间到失败的时间进行了比较,在在线测试中,有8192个神经网络实例,在全球范围内以规则的间隔进行,与它们的宿主大尺度地球物理流体动力学全球大气模式相互耦合。这个产量图3.,这为线下和线上的关系提供了新的线索。

该图中的结果显示了离线验证错误和在线性能之间的关系。离线MSE与在线稳定性之间存在明显的负相关关系(Spearman相关为−0.73;p= 4.961e−19).有趣的是,多层感知器的均方误差损失一旦与气候模式耦合,就失效时间而言,是一个合理的稳定性预测器。这一发现在[64],如果在类似的环境中使用类似的网络名称,则这种关系可能不存在,[63在gan模拟的降阶动力系统中也存在类似的不一致现象。

当然,稳定性本身是预测成功的必要条件,但不是充分条件,这也需要对模拟气候中的偏差进行深入分析。数字4.显示了对流层温度和湿度偏差的时间演变,通过离线验证误差着色。这些指标揭示了,虽然我们的搜索已被揭开了许多“稳定”的运行,但可以在没有灾难性地崩溃的情况下运行几个月,但大多数这些运行在操作环境中都不会非常有用。几乎所有NNS都表现出模拟气候中的主要误差,漂移到错误的吸引子,在温度高于10 k的温度下具有根均方误差。但是,产生最佳离线验证误差的NN具有稳定性所需的所需质量和较小偏差小于2 k的技能,竞争[41].有趣的是,与几个排名最好的模型(洋红色虚线)的集合平均值的耦合并没有比与最佳拟合模型的耦合更好,使用SHERPA找到它的值(图)4.).

简言之,我们成功地进行了耦合模拟,在没有正式的超参数调整和FKB的情况下,这一模拟尤其具有挑战性。这一结果表明,充分的超参数调整对于解决亚网格物理中DNN气候模式应用中的慢性不稳定性可能至关重要。

第二个问题自然会出现,即哪些超参数对在线性能影响最大4(b)4.(i) 分解基线关系对单个超参数选择的敏感性。优化器的选择与在线性能的相关性最强(图3.).如表所示,斯皮尔曼值证实了这一发现2..优化器超参数与在线性能的绝对相关值最大。没有其他超参数显示出相关性的明显区别,而优化器的选择,包括网络深度和参数总数,众所周知,这些参数对离线适合这个问题很重要[66],但令人惊讶的是,它们对耦合技能的预测不如优化器的选择,优化器的影响(对于此应用程序)以前没有被隔离。


相关 -价值

BatchNorm 0.0859 3.7896e-01
辍学者 0.1919 4.7591e−02
漏水的ReLU 0.0055 9.5465e-01
学习速率 −0.2087 3.0923e−02
密集的节点 0.1427 1.4249e-01
0.0410 6.7491e-01
优化器 −0.6998 5.0177e−17
参数 0.1528 1.1609e-01

对所使用的特定优化器的进一步调查显示SGD优化器的性能较差;NNs配合SGD,在线连接时,运行时间不得超过1000步(图3.).图中的视觉直觉3.由Spearman相关值证实。SGD、Adam、RMSProp的Spearman值分别为-0.6670、0.5936、0.0586。这些值表明SGD的使用与在线表现呈负相关,而Adam与在线表现呈正相关。这一结果让人推测,在线技能的提高可能是通过更高级的优化器和增强的梯度更新计划实现的。

最后,在回答了激发本案例研究的两个问题后,我们可以将最佳表现模型的结果与[41],适用于具有挑战性的水平范围为32公里的crm。Rasp等人提出的模型是一个单一的深度神经网络。该模型的超参数空间在很大程度上没有得到充分的在线探索,这是由于将这些模型转换到Fortran中需要花费大量的时间。Rasp等人的模型(由作者提供)在由于不稳定性问题而崩溃之前运行了128步。本研究中获得的五个最佳模型完成了一个5年的模拟,即87,840步;其中两个模型在模拟对流层温度小于2摄氏度时进一步显示了均方根误差。这种稳定性方面的显著改进是Python和Fortran之间可以轻松传输各种模型(由SHERPA识别)的直接结果(多亏了FKB)。我们还注意到,这种方法比最近提出的另一种方法更可取,后者通过小幅度高斯输入扰动开始稳定相同的模型[54,这个策略虽然很有前景,但增加了计算成本,并引入了样本外推断问题,这些问题可以通过我们在这里概述的强力优化和广泛集成的预测测试路径来避免。

本案例研究研究了两个紧密纠缠的问题:(1)离线性能是否对应于在线模型性能?(2)哪些神经网络超参数对在线性能影响最大?这两个问题都已经通过利用FKB库得到了回答。该库提供了将在Keras中训练的模型快速转移到Fortran的能力,在Fortran中,它们可以在现有的模拟器中在线运行。在没有FKB的情况下,如果没有不合理的人为干预,这些问题都无法解决,因为操作目标是一个气候模型,用Fortran编写了超过10万行代码。

7.结论

深度学习的无处不在源于广泛的免费和开源库[17,46,58].深度学习的成功和流行值得将其集成到大规模计算软件包中,比如那些用Fortran编写的软件包。我们没有使用Fortran重写所有现有的库,而是通过FKB库在底层、Fortran和Python之间引入了一个双向桥梁。该库为研究人员提供了在Fortran代码库中实现神经网络的能力,同时能够使用Keras来回传输它们。

Fortran几十年来一直是计算密集型领域的主要工具,由于其快速计算能力和大量遗留代码,它无疑将继续得到使用。FKB库允许用户在Fortran中直接访问Keras API的许多特性,包括创建定制层和丢失函数以满足他们的需求的能力。我们通过涉及SPCAM3模拟器的案例研究演示了FKB的可积性。FKB的一个优点是易于使用,它可以预先编译,一旦连接,就可以在现有的大型模拟器中轻松利用,正如我们在全球大气的多尺度物理模拟应用中所说明的那样。

数据可用性

代码在中公开提供https://github.com/scientific-computing/FKB.记录案例研究的步骤被记录在https://github.com/scientific-computing/FKB/blob/master/SPCAM_Instructions.md

的利益冲突

作者声明,本论文的发表不存在利益冲突。

致谢

JO和PB的工作由NSF NRT(Grand 1633631)支持。MP从OAC-1835863和AGS 1734 164确认NSF经费。本研究还使用了极端科学和工程发现环境(HSEC)的资源,这是由国家科学基金会批准的ACI 158562A.67]和分配号TG-ATM190002。

参考

  1. “FORTRAN,”2011年3月,https://www.ibm.com/ibm/history/ibm100/us/en/icons/fortran/浏览:谷歌学者
  2. A. Krizhevsky, I. Sutskever,和G. E. Hinton,《基于深度卷积神经网络的图像网络分类》,神经信息处理系统研究进展,第1097-11052012页。浏览:谷歌学者
  3. J.Schmidhuber,“神经网络中的深度学习:概述,”神经网络,第61卷,第85-117页,2015。浏览:谷歌学者
  4. N.LaHaye,“具有无监督深度学习的多模式目标跟踪和图像融合,”应用地球观测和遥感专题,第12卷,第3056-30662019页。浏览:谷歌学者
  5. 朱晓霞,“遥感深度学习:资源综合综述与清单”,IEEE地球科学与遥感杂志, vol. 5, pp. 8-36, 2017。浏览:谷歌学者
  6. J.Ott、A.Atchison和J.Erik,“探索挖掘软件存储库中低成本学习的适用性,”大数据杂志, 2019年第6卷第35页。浏览:谷歌学者
  7. J. Ott,“在图像和视频中识别源代码的深度学习方法”2018年IEEE/ACM第15届国际采矿软件库会议论文集,第376-386页,瑞典哥德堡,2018年5月。浏览:谷歌学者
  8. J. Ott,“使用卷积神经网络从图像中学习编程语言的词汇特征”第26届程序理解会议记录2018年5月,瑞典哥德堡,第336-339页。浏览:谷歌学者
  9. J. thompson, M. Stein, Y. Lecun, and K. Perlin,“利用卷积网络实时持续恢复人手姿势”,图形上的ACM事务(ToG), 2014年第33卷,第169页。浏览:出版商的网站|谷歌学者
  10. G. Urban,“在筛查结肠镜中,深度学习实现了接近人类水平的息肉检测,”胃肠病学, 2018年,第155卷。浏览:谷歌学者
  11. F. Agostinelli, S. McAleer, A. Shmakov,和P. Baldi,《用深度强化学习和搜索解决魔方》,自然机器智能, vol. 1, no. 18, pp. 356-363, 2019。浏览:出版商的网站|谷歌学者
  12. D. Silver,“通过深度神经网络和树搜索掌握围棋”自然, 2016年第529卷。浏览:谷歌学者
  13. T. Beucler,“在模拟物理系统的神经网络中加强分析约束”,2020,http://arxiv.org/abs/1909.00912浏览:谷歌学者
  14. M. Raissi, P. Perdikaris,和G. E. Karniadakis,《物理信息的神经网络:解决非线性偏微分方程正解和逆问题的深度学习框架》,计算物理学杂志,第378卷,第686-707页,2019。浏览:出版商的网站|谷歌学者
  15. Y. Bar-Sinai, S. Hoyer, J. Hickey, M. P. Brenner,“学习偏微分方程的数据驱动离散化”,美国国家科学院院刊,第116卷,第31期,第15344-153492019页。浏览:出版商的网站|谷歌学者
  16. S.H.Rudy,“偏微分方程的数据驱动发现,”科学的进步,第3卷,2017年。浏览:谷歌学者
  17. M. Abadi,“Tensorflow:用于大型机器学习的系统,”第十二届操作系统设计与实现研讨会论文集2016,第265-283页,Savannah, GA, USA, 2016年11月。浏览:谷歌学者
  18. F. Chollet,《Keras》,2015,https://github.com/fchollet/keras浏览:谷歌学者
  19. p·亚当,在Pytorch中的自动分化华沙大学,华沙,波兰,2017。
  20. B. James, D. Yamins,和D. D. Cox,“Hyperopt:一个用于优化机器学习算法超参数的python库”,在第12届Python科学会议论文集,第13-20页,奥斯汀,德克萨斯州,美国,2013年6月。浏览:谷歌学者
  21. J. W. Hurrell,“社区地球系统模型:合作研究的框架”,美国气象学会公报, vol. 94, pp. 1339-1360, 2013。浏览:谷歌学者
  22. J.-C.Golaz,“能源部E3SM耦合模型第1版:标准分辨率下的概述和评估,”地球系统模拟进展杂志,第11卷,2089-2129页,2019。浏览:谷歌学者
  23. GFDL的CM4的结构和表现。0气候模型。”地球系统模拟进展杂志,第11卷,第3691-3727页,2019。浏览:谷歌学者
  24. NEMO系统团队,“NEMO海洋引擎”,气候模拟中心的科学笔记,卷。2019年27日。浏览:谷歌学者
  25. A.J.Wallcraft、H.Hurlburt、E.J.Metzger、E.Chassignet、J.Cummings和O.M.Smedstad,“使用HYCOM进行全球海洋预测”,年2007年国防部高性能计算现代化项目用户小组会议, pp. 259-262,宾夕法尼亚州匹兹堡,美国,2007年6月。浏览:出版商的网站|谷歌学者
  26. M.A.Donelan,“波浪和风应力建模,”地球物理研究杂志:海洋, 2012年第117卷。浏览:谷歌学者
  27. J. G. Powers,《天气研究和预报模型:概述、系统努力和未来方向》,美国气象学会公报,第98卷,1717-1737页,2017。浏览:出版商的网站|谷歌学者
  28. E. Madenci和我,Guven,基于ANSYSR©的有限元方法及其工程应用,施普林格,柏林,德国,2015。
  29. l·b·奥格森,《阿巴克斯》岩土工程的发展,第79卷,565-570页,爱思唯尔,阿姆斯特丹,荷兰,1996。浏览:谷歌学者
  30. Y. D. Murray,“LS-DYNA混凝土材料159型用户手册”,技术代表,联邦公路管理局,华盛顿特区,美国,2007,技术代表。浏览:谷歌学者
  31. d . KomatitschSPECFEM3D笛卡尔v2.0.2《地球动力学计算基础设施》,Davis, CA, USA, 2012。
  32. F. Archambeau, N. Mechitoua, M. Sakiz, " Code saturne: finite volume Code for computation of turbulent incompressible flow -industrial applications, "国际期刊有限卷1,第1卷,2004年。浏览:谷歌学者
  33. J. Fischer和S. G. Kerkemeier,“nek5000网页”,2008,http://nek5000.mcs.anl.gov浏览:谷歌学者
  34. B.Brooks、R.E.Bruccoleri、B.D.Olafson、D.J.States、S.Swaminathan和M.Karplus,“CHARMM:大分子能量、最小化和动力学计算程序,”计算化学杂志,第4卷,第187-217页,1983。浏览:出版商的网站|谷歌学者
  35. M. Valiev, E. J. Bylaska, N. Govind等人,“NWChem:用于大规模分子模拟的全面和可扩展的开源解决方案,”计算机物理通信,第181卷,第9期,第1477-14892010页。浏览:出版商的网站|谷歌学者
  36. a . Ferrari, P. R. Sala, a . Fasso,和J. Ranft,“FLUKA:一个多粒子传输代码”,技术代表,斯坦福大学,斯坦福,加州,美国,2005,技术报告SLAC-R-773。浏览:出版商的网站|谷歌学者
  37. G.-Q。“台风预报模型中台风-海洋反馈参数化的神经网络深度学习算法”,地球物理研究通讯,第45卷,第3706-37162018页。浏览:出版商的网站|谷歌学者
  38. J.Ling、A.Kurzawski和J.Templeton,“使用嵌入不变性的深层神经网络进行雷诺平均湍流建模,”流体力学学报,第807卷,第155-166页,2016。浏览:出版商的网站|谷歌学者
  39. H.R.Vega Carrillo,“中子剂量测定中的人工神经网络,”辐射防护剂量学,第118卷,第251-259页,2005。浏览:出版商的网站|谷歌学者
  40. Kaggle,“Kaggle ML & DS调查”,2018,https://www.kaggle.com/kaggle/kaggle-survey-2018.14浏览:谷歌学者
  41. S. Rasp, M. S. Pritchard和P. Gentine,“深度学习在气候模型中表示亚网格过程”,美国国家科学院院刊, vol. 115, pp. 9684-9689, 2018。浏览:出版商的网站|谷歌学者
  42. “数据科学和机器学习的Kaggle状态”,2019,https://www.docdroid.net/qzyxCr4/kaggle-state-of-data-science-and-machine-learning-2019.pdf浏览:谷歌学者
  43. J. Bernal,NEURBT:使用批量学习进行分类的计算神经网络程序,国家标准与技术研究所,盖瑟斯堡,ML,美国,2015,技术报告8037。浏览:出版商的网站
  44. J. Bernal和J. Torres-Jimenez,“SAGRAD:用模拟退火和共轭梯度法训练神经网络的程序”,国家标准与技术研究所研究杂志, 2015年,第120卷,第113页。浏览:出版商的网站|谷歌学者
  45. P. Brierley,“Fortran90 MLP支撑代码,”http://www.philbrierley.com/phil.html浏览:谷歌学者
  46. M. Curcic,“用于神经网络和深度学习的并行Fortran框架”,ACMSIGPLAN Fortran论坛,第38卷,第4-21页,2019年。浏览:出版商的网站|谷歌学者
  47. 美国尼森,快速人工神经网络库(Fann)的实现2003年12月,美国波士顿,Addison-Wesley
  48. D、 J.Lary,M.D.Müller和H.Y.Mussa,“使用神经网络描述示踪相关性大气化学与物理, 2004年第4卷,143-146页。浏览:出版商的网站|谷歌学者
  49. L. Hertel,《Sherpa:机器学习的鲁棒超参数优化》,SoftwareX, 2020,https://arxiv.org/pdf/2005.04048.pdf浏览:谷歌学者
  50. J. Snoek, H. Larochelle, R. P. Adams,《机器学习算法的实用贝叶斯优化》,神经信息处理系统研究进展,第1卷,第2951-29592012页。浏览:谷歌学者
  51. N. D. Brenowitz和C. S. Bretherton,“神经网络统一物理参数化的预测验证”,地球物理研究通讯,第45卷,第6289-62982018页。浏览:出版商的网站|谷歌学者
  52. 【答案】d。Chen,和A. Gettelman,“用机器学习模拟bin微物理过程”,在第100届美国气象学会年会论文集2020年1月,美国马萨诸塞州波士顿。浏览:谷歌学者
  53. D. John Gagne,“表层的机器学习参数化:填补观测建模的缺口”,在AGU秋季会议记录,旧金山,加州,美国,2019。浏览:谷歌学者
  54. N. D. Brenowitz,“解释和稳定对流的机器学习参数”,2020,http://arxiv.org/abs/2003.06549浏览:谷歌学者
  55. P.Baldi和P.Sadowski,“辍学学习算法,”人工智能,第210卷,第78-122页,2014。浏览:出版商的网站|谷歌学者
  56. N.斯里瓦斯塔瓦(N. Srivastava),《退出:一种防止神经网络过度拟合的简单方法》(Dropout: a simple way to prevent neural networks from overfitting),机器学习研究杂志,第15卷,1929-1958页,2014年。浏览:谷歌学者
  57. Sergey Ioffe和C. Szegedy,“批处理规范化:通过减少内部协变量移位加速深度网络训练”,2015,http://arxiv.org/abs/1502.03167浏览:谷歌学者
  58. f . CholletDeep Learning mit Python and Keras: Das Praxis-Handbuch vom Entwickler derkeras bibliothek2018年,德国波恩,mitp - verlag。
  59. W. W. Grabowski,“利用云分解对流参数化(CRCP)将云过程与大规模动力学耦合”,大气科学杂志,第58卷,第2期9,页978-997,2001。浏览:出版商的网站|谷歌学者
  60. M.Khairoutdinov,C.Demot和D.Randall,“使用CSU多尺度建模框架,评估AMIP风格模拟中的模拟年际和次季节变化,”杂志的气候第21卷第2期3,页413-431,2008。浏览:出版商的网站|谷歌学者
  61. M. Khairoutdinov, D. Randall和C. DeMott,“使用云解析模式作为物理过程的超参数化来模拟大气环流”,大气科学杂志,第62卷,第7期,第2136-2154页,2005年。浏览:出版商的网站|谷歌学者
  62. K. Thayer-Calder和D. A. Randall,“对流润湿在疯狂julian振荡中的作用,”大气科学杂志第66期11, pp. 3297-3312, 2009。浏览:出版商的网站|谷歌学者
  63. D. John Gagne II, H. M. Christensen, A. C. Subramanian, A. H. Monahan,“随机参数化的机器学习:lorenz’96模型中的生成式对抗sarial网络”,地球系统模拟进展杂志,第12卷,2020。浏览:出版商的网站|谷歌学者
  64. S. Rasp,“在线学习是解决神经网络参数化中的不稳定性和偏差的一种方法”,2019年,http://arxiv.org/abs/1907浏览:谷歌学者
  65. M.S.Pritchard、C.S.Bretherton和C.A.Demot,“限制32–128 km水平尺度几乎不会影响超级参数化社区大气模型v.3.0中的MJO,但云解析网格列的数量限制了垂直混合,”地球系统模拟进展杂志,第6卷,第723-739页,2014。浏览:谷歌学者
  66. P. Gentine, M. Pritchard, S. Rasp, G. Reinaudi,和G. Yacalis,“机器学习能打破对流参数化的僵局吗?”地球物理研究通讯第45卷第5期11, pp. 5742-5751, 2018。浏览:出版商的网站|谷歌学者
  67. J. Towns,《XSEDE:加速科学发现》,科学与工程计算,第16卷,第62-74页,2014。浏览:出版商的网站|谷歌学者

版权所有©2020 Jordan Ott等人。这是一篇发布在知识共享署名许可协议,允许在任何媒介中不受限制地使用、分发和复制,前提是原作被正确引用。


更多相关文章

PDF 下载引用 引用
下载其他格式更多的
订单打印副本订单
的观点126
下载35
引用

相关文章

我们致力于尽快分享与COVID-19有关的调查结果。我们将为已接受的与COVID-19相关的研究文章以及病例报告和病例系列提供无限制的发表费用豁免。审查条款不包括在此豁免政策。注册在这里作为一名审稿人,帮助快速处理新提交的文件。