社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

利用 AI 构建更好的发动机 —— 深度学习加速清洁燃烧仿真

MATLAB • 3 年前 • 749 次点击  

摘要: ICEnet 利用 AI 技术,通过计算机模型和深度学习加速和改进发动机设计,打造燃油效率高的内燃机。
David Schmidt 致力于保护环境,但采用的方法并不是他最初所设想的那样。
攻读工程学博士期间,他的研究方向是核聚变。在导师的极力建议下,他主攻燃料喷射物理学,这是惯性约束聚变反应堆和内燃机共有的核心过程,后者也是这位导师的另一个研究方向。由于聚变反应堆投入实用尚有时日,Schmidt 转向了发动机研究。
虽然电动汽车日益普遍,但在未来几十年中,内燃机仍会在公路、海洋和飞机跑道占据一席之地。
Schmidt 的工作使内燃机变得更清洁、更高效。“面对新问题,即使一开始没什么兴趣,过一段时间也会发现它已经藏进你脑海深处。”他说道,“要不了多久,你就对这个问题日思夜想起来。”
典型内燃机仿真中湍流的多尺度特性。(图片所有权:M. Dias Ribeiro)
马萨诸塞大学阿默斯特分校的机械和工业工程教授 Schmidt 称燃油喷射“非常极端”。燃料穿过细如发丝的小洞,“然后以至少 1 马赫的速度呼啸而出,其动量足以穿透手掌”。因此,物理发动机研究在昂贵之余还有些危险。不过,借助仿真,我们得以更好地理解其内部原理。
即便在计算集群上运行高保真的发动机仿真,耗时仍需一周之久,而况集群也花费不菲。因此,在过去两年里,Schmidt 领导了 ICEnet,这是一个总部设在马萨诸塞大学阿默斯特分校的联盟,旨在利用神经网络加速该仿真过程。
他的实验室在开发用于研究湍流和燃烧的工具方面取得了重大进展。他表示,利用机器学习,他们得到了“更好、更准确的答案,考虑到投入的计算能力,可谓远超预期”。


嵌入



该联盟包括:Schmidt 在马萨诸塞大学的实验室;西门子、AVL 和发动机仿真软件开发商 Convergent Science;发动机制造商康明斯;图形处理设备制造商 NVIDIA;以及 MathWorks。
西门子、AVL 和 Convergent Science 为包括康明斯在内的客户设计仿真软件
这些程序称为计算流体动力学 (CFD) 求解器,通过将整个发动机或单个发动机组件分解成一百万或更多的小单元来表示它们。
在每个单元内,在每个时间步中,仿真结合了无数因素的影响来决定单元当前的状态,包括温度、压力等等。决定这种状态的因素来自质量、动量和能量守恒的基本计算,再加上嵌入软件模块。
ICEnet 正在开发两个模块:一个模块计算湍流的物理性质,另一个模块计算燃烧的化学性质。
借助这种嵌入系统,就不必生成新的 CFD 求解器,毕竟 CFD 求解器可能包含数百万行表示活塞运动、火花塞等的代码。“现有的代码库能不变则不变。”Schmidt 说道,“因此,我们设计了嵌入系统,让模块交换更轻松。”
ICEnet 构建了一个工业级的端到端工作流,用户可以对其进行调整以适应其特定的 CFD 工作流程。

ICEnet 使用一组称为 OpenFOAM 的 CFD 求解器,它是开源的。但他们的模块也可以轻松嵌入其他 CFD 求解器,例如西门子、AVL 和 Convergent Science 所使用的那些求解器。这三家公司可能不会原样照搬这些模块,而是对其进行调整以满足自己的需求。

计算湍流和燃烧的工作流。(图片所有权:Peetak Mitra 和 David Schmidt,马萨诸塞大学 ICEnet)
为了开发这些模块,Schmidt 使用了 MATLAB®,原因有以下几点。根据 Schmidt 实验室的研究生 Peetak Mitra 的说法,MATLAB 易于使用,为客户所熟悉,没有 bug,且有来自 MathWorks 的技术支持;并且,相比 PyTorch 等其他机器学习框架,MATLAB 胜在能够生成 C++ 代码,这是 CFD 求解器所使用的语言。
该项目不仅要求开发新的算法,还要求算法足够可靠,足以胜任日常使用。“要是在学术界,算法只要能成功运行一两次,我们就得敲锣打鼓了。”Schmidt 表示,“这种软件好比泥沙筑堡,很难经得起考验。”
MathWorks 的深度学习产品经理 Shounak Mitra 表示,“ICEnet 构建的是工业级的端到端工作流程,用户可以对其进行调整,以适应他们在该领域的特定 CFD 工作流程。”


混沌一团



Schmidt 喜欢引用数学家兼气象学家 Lewis Fry Richardson 的一首诗:“大漩涡育小漩涡以动能,小漩涡亦以此孕子女,生生世世以之更迭,终消于粘滞。

“Big whirls have little whirls that feed on their velocity, / and little whirls have lesser whirls and so on to viscosity.”

湍流(流体、气体或等离子体的混合)在许多尺度上发生。一个尺度上发生的情况会对其他尺度产生影响。对湍流的精确仿真非常缓慢,因为需要捕捉到最微小的动力学。ICEnet 通过估算来加快仿真过程。

每个单元中发生的情况都是使用一个公式计算得出的,该公式的输入与密度、压力、温度、速度和应变有关。输出是气体速度。
一个仿真可能包含一百万个单元,因此每个时间步就有一百万次这样的计算(持续时间从千分之一秒到百万分之一秒不等)。ICEnet 将单元数量减少了两倍以上。它利用快速神经网络恢复丢失的细粒度信息。
团队首先运行高分辨率仿真,以此训练一个神经网络来估计仿真的行为。
然后,在低分辨率仿真中,他们向公式添加了一个由网络计算的项,称为学习校正。该校正可以恢复由于降低分辨率而丢失的大部分信息。
一些研究人员彻底抛弃仿真,改用经过训练的网络,但 Schmidt 发现这对准确性牺牲太大。
他需要传统的公式来确保质量、动量和能量守恒,就像核对账目一样。“所以,我们所做的就是将现有的仿真技术和机器学习结合起来。”
在最初的研究中,该系统并不是次次都能加快仿真速度。他们已经将一百万个单元减少到几十万个,但在每个时间步内仍要运行网络十万次,对于一百万个时间步,这意味着一千亿次运行。
于是,Peetak Mitra 找到了一种简化网络的方法。首先,他使用 AutoML,由软件探索不同的神经网络架构,找到那些既准确又高效的架构。并非所有联盟合作伙伴都是机器学习方面的专家,因此,“我们需要降低技术门槛。”Peetak Mitra 表示,“我们构建了这个一键式流程,只需在 MATLAB 中点击运行,该流程就会根据数据自动设计网络。”
发动机仿真的切片,按速度大小着色(红色 = 高速;蓝色/浅色 = 低速)。左侧图像显示真实数据,右侧是机器学习的结果。(图片所有权:Peetak Mitra 和 David Schmidt,马萨诸塞大学 ICEnet)
在此基础上,Peetak Mitra 设计了一种修剪网络的新方法,删除不重要的节点和连接。修剪使网络规模减小了 90%,速度加快了 10 倍,同时提高了准确性。这是因为大型网络能够适应系统中的任何信息,这使得它们能够很好地推广到许多场景,但它们也会学习系统噪声。如果将机器学习应用于有规律的环境(例如类型相近的气缸),就可以缩减网络,从而滤除噪声。
团队还使用了一种称为量子化的过程,解决了网络值精度过高的问题。Shounak Mitra 表示,对于这一系列缩减网络的方法,“NVIDIA 非常欢迎。”
挑战依然存在。将网络与 CFD 求解器的其余部分结合使用时,需要一段时间来训练网络并优化其性能。“这就好比你学着踢足球,但只能每隔几个小时踢一脚。”Schmidt 说道。他们目前正在研究加速这一过程的捷径。


高度可燃



Schmidt 的团队还找到了利用深度学习研究燃烧的创新方法。就像在湍流建模中一样,他们基于标准系统将公式应用于单元,以决定它们在每个时间步的状态。
但对于燃烧,每个单元都有一个完整的微分方程组,用于平衡对流、温度、压力以及数十种化学物质和数百种化学反应。
通过加快仿真速度,合作伙伴可以运行更多次实验,快速迭代发动机设计,最终目标是提高发动机效率和减少排放。
同样,他们使用这些方程运行高保真的仿真,并训练神经网络以快速逼近单元内发生的情况。
但针对燃烧,他们选择彻底抛弃化学反应,改用经过训练的网络,每个单元对应一个网络。
为此,Schmidt 实验室的博士后 Majid Haghshenas 开发了一种新颖的方法:他们并不对每个单元使用同一个经过训练的网络,但也不对每个单元分别使用不同的网络。
他们运用了一种方法,将经过训练的网络群分成大约 40 个组。对于每个组(簇),他们创建一个有代表性的网络。
根据具体输入,他们从这大约 40 个网络中选择一个,用来取代方程组。
相比各不相同的十万个网络,仅仅使用 40 个网络可以缩减整个系统的规模。相比使用十万个相同的网络,这种方法也更为准确。
基于贝叶斯优化的数据驱动物理模拟器工作流示意图,用于识别性能最佳的网络超参数和网络架构。(图片所有权:Peetak Mitra 和 David Schmidt,马萨诸塞大学 ICEnet)
一项巨大的挑战在于,化学物质的浓度有时相差之大足可以十亿计,化学反应的时长亦然。如何才能在观察高浓度慢反应的同时,兼顾小规模动力学?
一种方法是使用浓度的非线性变换进行计算,而且他们仍在完善该解决方案。
他们还有时间来梳理细节问题,不过 Schmidt 估计,现在的湍流模型已经比以前的方法快了 5 倍左右,而燃烧模型更是快了 100 倍。
通过加快仿真速度,合作伙伴可以运行更多次实验,快速迭代发动机设计,最终目标是提高发动机效率和减少排放。“你可以想到什么就尝试什么。”Haghshenas 表示。


乘风而起



随着 ICEnet 进入尾声,Schmidt 开始寻找进一步改善环境的方法。
流体动力学还支配着空气在物体上方和周围流动的方式。其中一种应用是汽车空气动力学。 随着自动驾驶汽车日益普及,它们可能会开始“跟车”,即一辆车紧跟另一辆车以保持在其低压气穴中,从而减少阻力和提高燃油效率。CFD 求解器可以计算出正确的跟车距离。
“我们将使用机器学习来预测所有的东西。其优势在于速度和便利性,可以在几分之一秒内做出预测。”
—— David Schmidt,马萨诸塞大学阿默斯特分校机械与工业工程教授

Schmidt 的团队还希望将他们的方法应用于风力发电机。上风处的发电机会阻挡风并产生湍流,这会降低下游发电机的效率,同时增加叶片上的压力。CFD 求解器可以计算出发电机指向的最优角度,以减少这种干扰。

风力发电机仿真。(图片所有权:Hannah Johlas、David Schmidt,马萨诸塞大学 ICEnet)
风力发电机当然也不是核聚变,但无论大小,漩涡总是包含无尽的复杂性。

    ◆  

点击“阅读原文”,获取 9 个 MATLAB 数据科学速查表,包括自动化机器学习(AutoML)以及基于求解器的优化等。↓↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/117394
 
749 次点击