GPT4-For-SciML|使用chatgpt辅助科学计算、工程设计

前言

  • 1、本号将持续更新AI4PDEs&AI4CFD相关前沿进展
  • 2、本号主推:开源、启发性的文献
  • 3、感兴趣可以关注微信公众号:AI4CFD
  • 4、持续更新中!
alt

Title:MyCrunchGPT: A ChatGPT Assisted Framework For Scientific Machine Learning

摘要:科学机器学习(SciML)最近在计算科学和工程的许多不同领域取得了进展。其目标是无缝集成数据和物理知识,而无需使用复杂且计算量大的数据同化方案。然而,预处理、问题表述、代码生成、后处理和分析仍然是耗时的,这可能会阻碍SciML在工业应用和数字孪生框架中的广泛应用。在此,我们将SciML的各个阶段整合在ChatGPT下,以形成MyCrunchGPT,它扮演着指挥整个SciML工作流程的指挥家角色,基于用户的简单提示。特别地,我们展示了两个例子,展示了MyCrunchGPT在优化空气动力学中的机翼和在各种几何形状中交互模式下获取流场方面的潜在用途,强调验证阶段。为了展示MyCrunchGPT的流程,并创建一个可以促进更广阔愿景的基础设施,我们构建了一个基于webapp的引导用户界面,其中包括用于综合总结报告的选项。总体目标是扩展MyCrunchGPT以处理计算力学、设计、优化和控制以及SciML中涉及的一般科学计算任务,从而将其用作研究助理工具,但也用作教育工具。虽然这里的例子专注于流体力学,未来版本将针对固体力学和材料科学、地球物理学、系统生物学和生物信息学

关键词:ChatGPT工程设计 · NACA 机翼优化 · ChatGPT4PINNs · 流体力学 · 腔流

alt

1 引言

随着近期深度学习和自然语言处理技术的进步,大型语言模型(LLMs)在学术界和工业界都取得了显著的发展和研究兴趣。丰富的数字内容形式的大文本语料库,加上现代语言处理技术如变压器(Transformers)[1],提高了自然语言处理任务如语言翻译、文本分类和句子完成的效能和准确性。一些最先进的LLM包括BERT[2]、T5[3]、RoBERTa[4]、XLNet[5]等。这些模型通常在大型文本语料库上训练,包含数十亿的神经网络参数,并可以通过这些预训练模型[6–8]来适应用户的具体用例。OpenAI通过开发生成预训练变换器(GPT-3)实现了重大且可能突破性的进步,GPT-3在从句子完成到根据用户提供的指令提供特定回应等一系列自然语言处理任务中表现出色[9]。通俗地称为ChatGPT,GPT语言模型是当今存在的最大的自然语言处理模型之一(具有数千亿的参数),能够生成非常高质量、类似人类的对用户查询的响应。

ChatGPT模型的一个关键能力是其相比现有语言模型的显著改进,即能够学习和理解用户提供的指令并做出适当响应。换句话说,用户可以为ChatGPT定义一个期望的“人格”,由此,ChatGPT对用户查询的响应可以被制作得类似于人类的响应。这开启了在工程和自然科学中使用ChatGPT进行流程自动化的可能性[10–17]。凭借其为重复性、劳动密集型任务生成合适代码或响应的能力,这些任务常在工程和自然科学中遇到(例如,编写可视化代码或创建病人的访后总结),存在一个使用ChatGPT的生成能力来改进具有明确定义目标的流程的机会。自1970年代以来,结合专家系统的使用能力来自动化决策的想法已经被探索过。Dendral和Meta-Dendral[18]开发的开创性工作结合了机器学习的能力,识别未知化合物的分子结构。这项工作帮助展示了AI驱动的专家系统自动化特定领域复杂任务的能力

在这项当前工作中,我们开发了一个基于ChatGPT的助手,名为MyCrunchGPT(或简称MyCrunchGPT),以简化两项特定任务:(1)设计和优化2D NACA机翼,以及(2)使用物理信息神经网络(PINNs)[19]解决流体力学问题。我们稍后讨论的设计过程,涉及从概念生成到详细设计的一系列步骤。我们专注于概念设计阶段,以展示MyCrunchGPT设计助手的应用,它提供了一个基于自然语言的交互环境,引导用户完成设计以及2D NACA机翼的特定优化过程。设计助手有助于自动化生成新机翼设计的特定任务,使用替代模型分析这些新设计,帮助用户优化机翼形状,并在用户请求时可视化结果。更广泛地,我们旨在利用生成式设计[20-24]的理念,这是一个使用机器学习算法探索更大设计空间的过程,以增加设计师在概念设计阶段的选项。这里的关键思想是使用DeepOnet[25],第一个可以充当替代物并能概括不同机翼几何形状的深度神经算子。我们还演示了如何在MyCrunchGPT中使用物理信息神经网络(PINNs)[19]来计算和分析原型流动的结果,以及用户如何通过启动简单的提示来改变问题几何形状和训练超参数等方面,以便相应地改变底层代码实现同样的提示过程可以用于固体力学和计算科学与工程中的其他模拟和分析任务

1.1 目标和贡献

本工作的主要目标是为使用大型语言模型(LLMs)简化科学机器学习(SciML)在计算科学和工程日常任务中的应用奠定基础,加速工程设计和科学发现。虽然概念框架是通用的,但当前实施的框架受到了逻辑限制和当代GPT-4灵活API的缺乏。在这个背景下,我们工作的具体贡献包括:

  • 开发MyCrunchGPT作为助手,通过专业流程如工程设计来引导用户。例如,我们展示了使用标准CFD求解器进行2D NACA机翼设计、优化和验证。
  • 展示MyCrunchGPT在帮助用户使用PINNs解决经典流体力学问题时的应用,适用于不同的几何形状。
  • 开发一个通用框架,通过自定义交互式网络界面将MyCrunchGPT与专业工作流程集成。
  • 通过基于网络的框架便捷地进行人机交互,并生成从头到尾的报告和执行摘要。

科学机器学习(SciML)已经成为一种新型的科学计算形式,有潜力极大地影响所有计算科学和工程领域。它基于这样一个认识:神经网络不仅可以是函数的通用近似器,也可以是微分算子的通用近似器,这使得解决复杂的偏微分方程(PDEs)系统或参数化PDEs成为可能,同时无缝地将任何分散/噪声的时空数据注入到解决方案中。这种新型的非无菌计算已经被工业界迅速采纳,用于多样化的应用【26, 27】。然而,在神经网络架构搜索、超参数调优、解决方案验证和不确定性量化方面仍然存在许多挑战。此外,还有与问题表述、数据预处理、代码生成、可视化和分析以及不确定性量化相关的额外成本。我们提出通过构建一个集成的端到端框架来克服所有这些障碍,该框架使用chatGPT作为主前端,并使用内部方法,例如PDEs的PINNs、如DeepONet替代品的神经算子以及实时预测【28】,但也用于其他用途,例如,在科学计算中构建快速求解器,例如见HINTS【29】。这些发展综合在一起有可能使MyCrunchGPT成为一个友好且有效的研究助理,可以通过无缝地整合新数据、新方法和新LLMs不断学习。特别感兴趣的是产生解决方案,这些解决方案可以被验证和验证,以便它们满足物理原则,例如守恒定律,并与现有的实验数据和现有理论一致,这些可以由chatGPT轻松提供。

1.2 物理信息神经网络

(PINNs)首次在【30】中介绍,为获得正向和反向偏微分方程(PDEs)的数值解提供了一种新范式。PINNs通过将PDE解表示为神经网络,并通过由测量提供的数据以及在时空域内随机点评估的PDE,以半监督学习的方式学习解决方案。自动微分被利用来将预测解的PDE残差编码进损失函数。图1给出了PINN结构的示意图。

alt

图1: 原始物理信息神经网络的示意图,图源自【37】。左上部分(NN)代表未知函数u的神经网络解u_nn。在右上部分(PDE),自动微分用于获取输出关于其输入(x, t)的必要导数。然后将这些导数结合起来计算学习到的解u_nn和已知强迫函数g之间的偏微分方程算子L应用的残差R。损失函数是标准的监督均方误差(MSE)损失应用于已知边界/初始条件(以及可能在域内某些点的已知值)与残差R的MSE的结合。

自从它们诞生以来,已经开发了许多PINNs的变体,包括(但不限于)守恒型、贝叶斯型【32】、分数型【33】、并行型【31】、变分型【34】、随机型【35】等。由于PINN框架相当通用,它很适合应用于各种领域的问题。PINNs展示出有希望的结果的问题示例包括:使用来自MRI视频的血流分析预测脑动脉瘤的严重性【36】;模拟和预测COVID Omicron变体的行为【37】;从断层背景定向薄纱视频推断3D速度和压力场【38】;从超声数据量化微观结构材料属性【39】;在弹性成像中非均质材料识别【40】;预测柴油机中的气体流动动力学和未知参数【41】。

2 深度算子网络(DeepONet)

原始的DeepONet【25】由两个深度神经网络组成,分支网络和主干网络。分支网络在m个固定位置编码输入函数u,这些位置也称为传感器位置。分支网络可以由多层全连接网络或其他常规深度学习架构组成,如CNN、RNN和LSTM。输入函数u到分支网络的离散化在m个传感器位置进行,以便 ,其中n是样本数量。坐标位置 被加入到主干网络输入,以生成基函数,此处将对解决方案算子进行评估。解算子 通过输出嵌入的分支和主干网络的元素逐一乘积来构建。通过最小化一个损失函数( ),来得到优化的网络参数

其中 是从DeepONet获得的预测值, 是目标值。有关DeepONet构建的更多细节,读者可以参考【42】。

alt

图2: 原始DeepONet架构展示了分支网络和主干网络(改编自【42】)。分支网络接受在m个传感器位置评估的函数 作为输入,而主干网络则接受连续坐标和参数 作为输入。

3 MyCrunchGPT

使用chatGPT作为前端,并且在后端实现PINNs和DeepOnet的各种内部程序,还包括与几何、可视化和分析等相关的各种模块。这些模块和功能将在不久的将来随着GPT-4 API的可用而扩展,但目前我们展示如何在MyCrunchGPT中使用DeepOnet和PINNs。

3.1 MyCrunchGPT用于神经算子的设计

典型的设计过程从对产品的陈述开始,该陈述被转化为一系列技术要求。工程设计可以描述为在所述约束条件下解决给定问题的系统过程。工程设计过程通常包括三个阶段:概念设计、实体设计和详细设计【43】。概念设计阶段通常涉及创意生成、设计空间探索和初步设计评估。概念设计采用的方法论基于应用环境而有所不同,有时甚至基于用户的个人偏好。随着时间的推移,设计师基于经验发展出专门的知识库和设计方法。这提供了一个机会,可以在一个智能框架中捕获这个知识库和经验,该框架可以被其他设计师共享和同时使用。 在此阶段生成的设计概念的初步分析是至关重要的,以便选择概念进行进一步细化。在工程设计中,分析工具包括CAE、CFD、集总系统模型和其他基于模型的工具。通常,这些工具在计算上是昂贵和耗时的,特别是当需要分析多个设计时。为了增强分析阶段,预训练的基于算子的深度神经网络是有用的工具,它们能够在几秒钟内而不是几小时内生成分析结果。DeepONet通常针对特定任务进行训练,并且可以帮助替代或增强有时可能在概念设计阶段抑制分析的计算昂贵工具。快速分析多个设计的能力也为设计过程增加了价值,因为设计通常是一个迭代过程。因此,如DeepONet这样的基于算子的网络是我们框架的一个组成部分,并且作为分析的快速代理。

MyCrunchGPT用于基于深度算子的设计,提供了一个结构化的概念设计方法,利用AI设计助手引导用户完成概念设计生成过程。设计助手提供了一个高级界面,引导用户逐步完成特定的设计任务。设计助手使用chatGPT生成针对用户查询的领域特定响应的能力。凭借chatGPT理解和生成基于上下文的响应的能力,设计助手被定制以满足在设计过程中通常遇到的特定用例。此外,作为一个大型语言模型(LLM),设计助手生成的响应也可以根据用户的需求进行修改。例如,设计助手可以使初学者设计工程师在指导设计过程中探索特定主题。然后,助手的响应可以改变以适应专家设计师的需求,后者可能有兴趣执行特定的设计任务,并且需要更少的专业领域探索。最终的目标是创建一个AI辅助的专家系统,引导用户通过概念设计阶段。这样的系统的一些关键优势包括:

  • 为概念设计提供一种方法论方法。
  • 搜索和获取基于上下文的信息的能力,使得能够创建智能工作流。
  • 定制以满足特定用例,同时有能力满足不同技术背景用户的需求。

3.2 MyCrunchGPT用于PINN-based模拟

除了基于算子的设计外,MyCrunchGPT还可以协助用户开发定制的PINN模型和代码以解决科学机器学习中的问题。用户可以用自然语言描述他们想要解决的问题,包括有关PDE、领域和任何其他相关细节或文件,这些文件需要使问题成为良构问题(例如,观察到的数据点、自定义几何文件)。MyCrunchGPT将形式化用户描述的问题,并在必要时对解决方案的子处理进行可视化、与现有解决方案或其他数值代码验证解决方案。用户可以要求修改网络架构和其他超参数(优化器、学习率、边界损失和内部损失的权重等),并且MyCrunchGPT将相应地修改和执行代码。

3.3 MyCrunchGPT网页应用界面

为了演示MyCrunchGPT的流程,并创建一个能够促进这个项目更广阔愿景的基础设施,我们建立了一个基于网页应用的用户界面(GUI)。GUI包括一个侧边栏用于导航,包含三个页面:a)“关于”,传递MyCrunchGPT的描述;b)“简洁视图”,在此非技术用户可以与MyCrunchGPT交互,并且c)“综合视图”,类似于简洁视图,但包括控制台输出视图,展示深入的调试日志(服务于那些对后端日志感兴趣的用户)。GUI的关键组成部分有:

  • 对话:展示与机器人的对话和系统信息投影(如后台代码的日志)。它向用户显示提示,机器人回答,并将重要的系统信息(如后台代码的自定义日志处理、基于重要性的级别管理)转换到所有后台代码。然后,GUI翻译消息并挑选出要在对话框中显示的消息。
  • 输入框:一个带有提交按钮的文本框,用户使用它与模型交互。这个按钮使用异步线程实现,以便在后台进行计算时,重要信息可以显示在屏幕上。我们必须应用异步方法让MyCrunchGPT的长时间计算过程中的信息能够在计算中途出现。
  • 图片库:一个可以容纳多张图片的图片查看器,用户可以滚动查看图片。这使得分析师可以选择哪些图片将被展示(并稍后写入报告),通过仔细检查用户可以在报告中选择。

图3展示了MyCrunchGPT网页及其各种主要构成

alt

图3:MyCrunchGPT网页应用的综合视图布局。左侧是导航侧边栏。在主页面中,有两个面板,一个是与机器人的对话,另一个是图片占位符(显示为黑色)。用户提示框和提交按钮位于对话框下方。在底部我们可以看到带有综合日志的日志输出。最后,在上下面板之间是一个按钮,用于将屏幕上的信息导出为PDF报告,允许用户选择是否包含聊天内容。

4 以MyCrunchGPT协助的基于算子的设计框架为例

我们展示了使用MyCrunchGPT作为设计助手应用在2D NACA机翼设计和优化问题上的示例【44】。问题陈述如下:

问题陈述

alt

基于用户指定的最大弯翼(m)和最大弯翼位置(p)创建2D NACA四位数机翼设计。按照用户的要求生成几个新的设计。一旦生成,分析这些新设计周围的流场。同时,在用户定义的参数m和p的范围内生成优化的机翼几何形状。

这个问题被选择作为一个示例来展示MyCrunchGPT集成设计过程工作流,由于现有的DeepONet替代模型和CFD模拟数据的可用性【44】。我们认识到需要将我们的MyCrunchGPT框架扩展到其他设计问题和情境,并将此作为未来的工作。这里,我们简要描述了设计问题的设置,通过将整体设计问题划分为更小的子集以便于清晰。

4.1 问题子集1:生成新的机翼设计

机翼的表面是使用具有一定弦长的参数方程生成的,如下所示:

其中 (a_0 = 0.2969), (a_1 = -0.1260), (a_2 = -0.3516), (a_3 = 0.2843), (a_4 = -0.1015)。因此,2D机翼几何形状被定义为一个由坐标集 ( (x_u, y_u, x_l, y_l) ) 组成的点云,并且由参数空间 ( \eta_g = (t, p, m) ) 参数化。作为进一步简化以降低流动分离和湍流效应的可能性,参数空间 ( \eta_g ) 被限制如下:最大厚度 ( t ) 固定为0.15的常数值,以及参数化空间的剩余部分由最大弯度 ( p ) 和最大弯度位置 ( m ) 的范围 ( p \times m ) 在 ([0.20, 0.50] \times [0.01, 0.09]) 内定义。在这里,沿 ( x ) 方向采样了100个点,形成了一组100个点 ( {x_{coord}, y_{coord}} ),定义了机翼表面的坐标。为了降低训练DeepONet替代模型的输入空间维度,使用了带有30个控制点的非均匀有理B样条(NURBS),因此将输入数据维度减少到30。

4.2 问题子集 2:分析新设计周围的流场

CFD(计算流体动力学)模拟广泛用于分析感兴趣域内的流体流动。采用粘性纳维-斯托克斯方程的可压缩流体流动模拟经常被用来研究流体介质对以超音速移动的物体的影响。然而,使用可压缩流求解器的传统CFD方法在计算上昂贵,并且同时分析多个设计在设计探索阶段是一个主要瓶颈。作为一种变通方法,快速且精确的替代模型能够与昂贵的求解器协同工作,提供了一个有前景的选择,特别是在需要分析多个设计概念的概念设计阶段。 在以前的工作【44】中,开发并测试了一个基于算子的神经网络(DeepONet)替代模型,作为CFD模拟的替代方案,应用于一组2D NACA机翼设计。DeepONet替代模型使用为四十个2D NACA机翼设计生成的CFD模拟数据进行训练,该数据使用Nektar++【45】生成。我们利用这个预训练的DeepONet替代模型分析通过MyCrunchGPT设计助手生成的新设计。CFD设置的细节可以在【44】中找到,图4显示了用于DeepONet替代模型训练的训练和测试几何形状。

DeepONet替代模型能够将功能空间映射到算子空间,这需要域内的子采样。在这项工作中,这种子采样是通过使用免费的网格生成工具Gmsh【46】在流体域内生成网格来完成的。我们使用网格细化技术减少机翼前缘和后缘周围的网格尺寸。网格生成使用Gmsh的Python API自动化,该API与第4.1节讨论的设计参数化步骤集成。

4.3 问题子集3:生成优化的机翼几何形状

在设计过程中,对几何形状的形状优化是一个基本步骤,目标函数是基于一系列约束条件来最小化/最大化的。此处的优化问题是最大化升阻比的问题,参数为 ( m ) 和 ( p )。优化问题如下:

其中 ( \frac{L}{D}(m, p) ) 表示升阻比。升力 ( L ) 和阻力 ( D ) 是使用方程8-10计算得出的。DeepONet替代模型创建的映射图根据输入几何形状和输出空间中的位置 ( (x, y) ) 取值,并返回该位置的场值。这允许通过对机翼表面流场的离散积分来估算升力和阻力。

为了计算相对于域内坐标位置的输出场梯度,我们使用自动微分计算在DeepONet评估期间创建的计算图。解析导数 (\frac{dU}{d\hat{n}}) 由下式给出:

其中,速度场的偏导数 ({u_x, u_y, v_x, v_y}) 通过自动微分计算得出。

对于优化,我们使用Python库SciPy内的模拟双退火方法。双退火迭代地搜索一个基于接受标准的潜在解决方案,并受到模拟退火优化技术的启发【47】。生成优化机翼形状的过程如下:

步骤1:从参数空间 (p \times m \in [0.20, 0.50] \times [0.01, 0.09]) 进行随机抽样,使用拉丁超立方体。这些参数作为输入到分支网络。

步骤2:使用方程2生成机翼表面轮廓。之后,对机翼几何进行NURBS曲线拟合以定义分支网络的第二输入。

步骤3:使用DeepONet替代模型的主干输入坐标生成流场。计算流场值的升力和阻力。

步骤4:优化步骤,用新的参数选择在下一次迭代中。重复直至收敛或用户定义的步骤完成。

4.4 使用案例分析

我们考虑的使用案例场景在MyCrunchGPT设计助手示例中显示为图5。这个设计过程的用户需求包括:

  • 使用指定的最大弯度(m)和其位置(p)生成所选数量的新机翼设计。

    MyCrunchGPT角色

    收集用户输入并调用适当的Python API以启动设计生成。

  • 使用DeepONet替代模型分析新的机翼设计。

    MyCrunchGPT角色

    初始化预训练的DeepONet模型,调用必要的API来评估新设计通过DeepONet替代模型,并生成流场。

  • 查看流场结果。

    MyCrunchGPT角色

    正确解析用户输入,调用可视化API以绘制请求的流场。

  • 生成优化的机翼几何形状以最小化升阻比。

    MyCrunchGPT角色

    调用优化模块(使用SciPy优化器)。优化模块对参数空间进行采样,基于采样的参数创建新的机翼设计,并根据目标函数优化设计。

  • 验证DeepONet结果与CFD工具的对比。

    MyCrunchGPT角色

    启动CFD工具API(Nektar++),请求用户进行模拟设置,更新CFD模拟脚本,并启动CFD运行。

alt
alt

为了演示,我们简化了使用案例,制作了一个步骤流程图(图5),尽管我们注意到基于GPT的设计助手可以学习更复杂甚至是循环的任务,这得益于chatGPT模型理解和学习长指令序列的能力。

alt

图5: 2D机翼设计的使用案例场景。这个场景包含了用户在2D机翼设计过程中预期会采取的步骤。MyCrunchGPT在此过程中作为助手响应,引导设计师同时收集完成用户请求所需的信息。MyCrunchGPT助手被指示用适当的类人回应来回应用户的输入。

4.5 基于DeepONet的机翼设计工作流

根据MyCrunchGPT的使用案例情境,我们建立了设计助手所需的过程工作流。自定义chatGPT以便作为设计助手行动的必要步骤涉及创建一系列指令,从用户请求的响应开始到结束。这一点至关重要,因为chatGPT(构成我们的MyCrunchGPT助手的核心)是一个大型语言模型,并且产生一般信息。例如,请参见图6,其中chatGPT响应了一个寻求2D机翼设计帮助的用户查询,并提供了一系列通用指导和可能采取的步骤。然而,这些信息可能不利于设计师采取有效行动。

alt
alt

MyCrunchGPT指令

[
  {"role""user""content""你是一名设计工程师的助理。当用户请求设计2D机翼时,提示用户提供所需的新设计数量,参数的最大极限值 max camber 和 camber len。只在你的回应中请求这些值。然后在设计生成时通知用户。"}
]

我们创建了一组指令以调节基于2D机翼设计用例的响应。这些指令通过使用chatGPT 3.5 API添加到消息历史记录中,并设置了chatGPT应如何响应用户查询。作为一个示例,我们添加了以下特定指令(见图7)到chatGPT API的消息历史中,当用户请求生成2D机翼设计时,向GPT服务器请求用户指定的参数(最大弯度_max_camber, m_和最大弯度位置_p_)。

由于chatGPT是一个顺序学习的语言模型,可以向chatGPT API传递这样的指令序列以模拟用户会话的情境。这种序列化指令可以帮助GPT维护上下文,并且这种能力对于管理复杂的工作流程非常有用。由于当前chatGPT API还没有执行像在用户电脑上读/写或打开文件等操作的能力,我们使用预定义的python函数来完成必要任务。调用这些函数的顺序是由图5中的使用情形来确定的。

通过使用案例场景图5所示,展现了Crunch GPT在设计中的完整工作流程,如图8所示。根据图5中描述的工作流程,生成一组指令,以启动MyCrunchGPT响应用户查询。解析操作解析chatGPT的响应,以提取执行下一步操作所需的相关参数。例如,当用户输入参数 m 和 p 时,chatGPT解析这些信息成JSON格式,该格式由解析操作处理以生成调用必要Python操作(在本例中为‘NACA轮廓生成器’)所需的参数。MyCrunchGPT执行用户请求的步骤序列,寻求必要的信息并在设计过程的每个阶段向用户提供适当的反馈。

我们在以下部分通过用户界面的屏幕截图展示了MyCrunchGPT设计助手在每个步骤中生成的响应。

请求1 -> 用户请求设计2D机翼:MyCrunchGPT要求用户提供相关设计参数的值,基于其预定义的指令(见图9)。

请求2 -> 用户提供请求的参数:MyCrunchGPT通知用户提供的参数值,并且设计过程正在启动。在后台,所需的Python函数(‘NACA网格生成器’)被用于通过解析用户提供的参数值来生成新设计;见图10。

请求3 -> 显示结果:当用户请求MyCrunchGPT展示生成的设计时,可视化程序在后端被调用以在网页应用的图像查看窗口显示新生成的机翼设计。结果即时在网页应用的图像查看器窗口显示;见图11。

请求4 -> 生成流场:当用户请求MyCrunchGPT分析新机翼设计周围的流场时,使用后端的DeepONet替代模型进行分析【44】。该替代模型生成了流场分析结果。通过调用必要的Python函数分析新机翼设计周围的流场,从而完成设计分析过程。用户一旦设计分析完成便会收到通知。

请求5 -> 显示流场:用户在查看机翼设计后可能希望检查围绕特定设计的流场。收到此类请求后,MyCrunchGPT在后端调用可视化程序,并在图像查看器中显示必要的流场

请求6 -> 生成优化的机翼形状:当用户请求MyCrunchGPT创建一个优化的机翼几何形状以最小化升阻比时,MyCrunchGPT会调用后端的优化模块,启动初始化该过程。用户通过一个界面窗口被告知进度,该界面展示了每次迭代中机翼形状的发展情况。优化迭代次数的要求也可以由用户定义(本例中未展示)。用户通过MyCrunchGPT界面得到优化进度的通知

请求7 -> 显示优化景观:当用户请求MyCrunchGPT显示优化过程的全貌时,MyCrunchGPT调用后端的可视化模块,生成展示优化过程中机翼设计如何进化的必要图表

请求8 -> 验证针对优化机翼设计的DeepONet结果与CFD工具:作为验证步骤,用户可能希望使用CFD工具评估优化后的几何形状。MyCrunchGPT内置了一个开源的CFD工具,Nektar++,在用户请求时可以调用。此时,MyCrunchGPT将通知用户。当用户输入CFD模拟的更新参数值后,MyCrunchGPT解析这些信息,分析默认模拟设置文件,识别出该文件中需要更改的参数,用用户定义的值更新这些参数,然后将更新后的代码显示给用户以供验证(图17a)。一旦用户确认了这些CFD设置,MyCrunchGPT就调用Nektar++ API启动模拟。Nektar++ API内部执行的第一个任务是将由Python中的'mesh_generator' API生成的通用流体域网格转换为与Nektar++兼容的网格。此后,MyCrunchGPT再次调用Nektar++ API启动模拟。

请求9 -> 比较DeepONet预测与CFD结果:MyCrunchGPT在模拟完成后通知用户。之后,用户可能会要求MyCrunchGPT将CFD结果与优化的机翼几何形状的DeepONet预测进行比较。在此阶段,MyCrunchGPT要求用户提供需要比较的流场(x-方向速度),解析用户输入,并生成必要的比较。用户然后可以请求额外的流场比较(y-方向速度),MyCrunchGPT使用上下文语义生成相应的比较。

alt

图8: 示意图显示了MyCrunchGPT设计助手的工作流程。如左侧所示,确定用于准备MyCrunchGPT的指令是根据机翼设计用例中概述的步骤序列。这些指令使我们能够接收到针对用户查询的特定响应。用户的回应被解析成执行必要动作所需的参数,通过调用相应的Python模块来实现。

alt

图19:CFD模拟(19a)与DeepONet预测(19b)之间x-方向速度的比较。 当用户请求查看y-方向速度比较时,MyCrunchGPT编译必要的可视化API生成比较:CFD模拟(19d)、DeepONet预测(19e)以及它们的绝对误差(19f)。这些图像旨在为读者提供清晰度和评估,因此在图像查看窗口外绘制。

5 用于AI辅助PINN-based分析的例证

作为AI辅助创建PINN代码的一个示例,我们将请求MyCrunchGPT解决盖板驱动腔问题,这是CFD中用于稳态不可压流的标准基准问题。偏微分方程(PDE)定义如下:

其中 通常被认为是([0, 1] [0, 1])。这里 ( u ) 和 ( p ) 分别是速度矢量和压力。在域的顶部边界施加狄利克雷边界条件,通过将盖板速度设为1来实现x方向,其他墙面施加无滑移边界条件,即将速度的两个分量都设为零。( Re ) 是雷诺数,设为100。

在这项工作中,我们展示了ChatGPT辅助的针对三角形和正方形域上的盖板驱动腔流问题的PINNs。我们选择了两种不同类型的几何形状,并用非结构化的三角形网格对其进行了离散化,如图21所示。此问题的工作流程图在图22中给出。图23、24和25展示了第一组聊天指令及所请求的视觉内容。图26展示了第二组聊天指令,修改了问题,并附有所请求的视觉内容。

alt

图22: 询问MyCrunchGPT解决一个带有PINN的PDE问题的工作流程图。用户定义了PDE及其相关细节,并请求训练一个针对PDE的PINN。用户可能提出多种请求,如指定配置、可视化解决方案的不同组成部分、与已知解决方案/直接数值模拟(DNS)对比验证,或者保存/加载训练过的参数。用户可能要求修改问题,而不需明确重新定义PDE,引用之前的指令。GPT用于解析指令为组件,将这些组件映射到相应的内部模块,并通过组合选定的模块合成完整程序。

alt
alt
alt

为了验证和确认从MyCrunchGPT获得的结果,我们准备了正方形域中盖板驱动腔流的数据库,通过数字化现有文献[48]中的结果。在内部,MyCrunchGPT可以访问我们为几何(2D和3D)、微分、训练、验证和可视化开发的各种优化和经过彻底测试的Python代码。这些代码被开发成高度模块化,以便MyCrunchGPT可以轻松组合它们以达到用户的规格,允许用户请求的灵活性,同时保持代码的正确性,并在很大程度上避免LLMs容易出现的幻觉,尤其是在要求从零开始编码时。我们还有一个数据库,包含了许多基准问题的示例科学代码和高精度解决方案,MyCrunchGPT可以访问这些数据库。MyCrunchGPT的PINN模拟正在持续开发中,新功能如网页搜索、论文问答、不确定性量化、超参数调整等将很快被加入。多模态性也将被加入,具有与给定解决方案视觉交互推理的能力。

alt

6 总结与展望

在这项工作中,我们使用两个示例来演示使用ChatGPT进行科学机器学习(称为MyCrunchGPT)以及与用户定义的工作流程集成作为助手的用途。作为第一个示例,我们定制了ChatGPT的响应,以协助用户完成设计和优化2D NACA翼型的不同步骤。为此,我们创建了一组指令,让MyCrunchGPT根据用户的请求和用户定义的设计工作流程进行操作。该过程始于用户指定生成新翼型设计的需求,这些设计受到最大弯度(m)和最大弯度位置(p)参数的约束。然后,MyCrunchGPT提示用户通过对话窗口提供必要的参数值,解析用户的请求,并在后台调用必要的Python函数。一旦设计生成, MyCrunchGPT将通过一个替代的DeepONet模型引导用户进行评估过程。该替代模型使用离线训练的空气动力学设计CFD数据进行训练,如[44]中所述,并用于确定这些新翼型设计周围的流场。作为下一步,用户请求MyCrunchGPT在参数(m)和(p)上施加约束来优化翼型形状,其目标是最大化升阻比。MyCrunchGPT在后台调用必要的优化程序,并生成优化后的翼型几何形状。最后,MyCrunchGPT还协助用户将DeepONet预测的流场结果与传统数值求解器(Nektar++)进行比较,该求解器已与MyCrunchGPT工作流程集成。优化后翼型几何形状的DeepONet预测与CFD求解器预测之间的比较显示了较小的绝对误差。最后,MyCrunchGPT为用户提供了利用文献报道的结果验证其发现的能力。总之,我们演示了一个基于指令的框架,使ChatGPT能够调用适当的响应,引导用户完成设计和优化过程。

作为第二个示例,我们使用MyCrunchGPT来协助创建和训练一个用于解决指定PDE(驱动盖板基准问题的Navier-Stokes方程)的PINN,并提供可视化和验证学习解与直接数值模拟数据的学习解之间的解。进一步的请求涉及将学习解与文献中提供的实验数据进行验证。MyCrunchGPT的PINN功能(以及MyCrunchGPT的一般功能)正在积极开发中,以包括有用的工具,如不确定性量化,多模态解交互,超参数调整和分布式计算等。

整个过程已嵌入到基于Web应用程序的GUI中。该Web应用程序允许用户与机器人进行交互,查看系统日志,并观察过程的图形和输出。我们采用了各种方式让用户与GUI进行交互,并计划扩展它以适应更复杂的请求。例如,如果用户要求比较某些结果的表格。我们打算添加更多的可视化技术,并改进前端与后端的交互方式。最后,当用户对屏幕上显示的信息满意时,他们可以将其导出到摘要文档中。该文档还包括由机器人完成的过程的底线摘要和与基准的比较。我们也计划扩展此功能,并允许用户与机器人进行交互,以根据应用程序创建更加定制的报告。

在对MyCrunchGPT的未来工作中,我们计划开发基于概率集的设计[49–54],并将多个神经操作器(如FNO、WNO、LNO和ViTO)[55–59]纳入其中,还包括不同版本的PINN,包括域分解和自适应激活函数[60–62],这将使CruchGPT更加多功能和强大。我们还将开发适用于其他领域的新版本的MyCrunchGPT,包括系统生物学、固体力学、材料科学、地球物理学和生物信息学

结语

  • 持续分享更新AI4PDEs&AI4CFD前沿进展
  • 开源代码、启发性文献
  • 感兴趣请关注微信公众号:AI4CFD

本文由 mdnice 多平台发布

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值