资讯动态

大模型+CFD评测:强在记忆,弱在迁移的真相

发布时间:2026/10/20 6:37:56 来源:尧图企业网站定制
最近在做涡量-流函数求解器的时候我发现一个特别拧巴的现象让大语言模型LLM帮我写个二维方腔流的迭代程序它能一行不差地把SOR循环给我列出来可当我追问这种格式在非均匀网格上的截断误差首项是什么它却开始用一堆振振有词的符号推导一本正经地胡扯。这种“看起来很强一较真就露馅”的状态让我对LLM在计算流体力学CFD里的真实水平产生了极大的好奇。正好某科研机构的C博士发了一篇关于评估LLM在CFD领域知识利用、学习与创造能力的评测文章我前后读了三遍又花了两周时间复现了其中一部分评测流程踩了不少坑也拿到很多有意思的数据。这篇文章把整个评测思路、实验设计、结果和我的复现经验都拆开讲清楚希望能给正在观望大模型CFD的工程师和研究者一点实在的参考。1. 为什么我读完这篇评测后决定给CFD工程师按头安利CFD社区对LLM的态度一直很分裂。一边是营销号吹得天花乱坠说输入一个流动问题大模型就能把求解器写出来另一边是经历过“AI生成虚假引用文献”的老工程师直接认定大模型就是个高级润色工具。这两种看法都过于情绪化了根源在于缺乏一个可重复、分层次的评估体系。我们太缺一份“体检报告”来告诉我们大模型在CFD领域到底记住了多少、真学懂了什么、又能不能在无人看管的情况下做点新东西。这篇评测的意义就在这里。它没有简单地问“你看看下面哪个是NS方程”而是把能力拆成知识利用knowledge utilization、学习learning和创造creation三个递进层级。知识利用考察的是模型能否准确调用已经沉淀在教材和文献里的CFD知识学习考察的是给模型一些新规则或少量样例后它能不能在提示词范围内进行有效的归纳迁移创造则更进一步考察模型能否组合已有概念产生有物理意义的新提议。这个划分的逻辑我非常认同因为CFD工程师日常用LLM的场景基本就落在“查标准”“照着写代码”“让我试试新思路”这三类上平时根本分不清模型哪块强哪块弱一套维度切割下来问题就清晰了。另外这个评测没有停留在“能不能答对选择题”这类浅层考察上。C博士的团队在里面设置了大量需要符号推导、数值稳定性分析和代码补全的题目并且把评分粒度细化到“完全正确/部分正确/错误/幻觉”四档。这种细粒度打分方式比单看准确率有意义得多——因为在实际工程里一个模型如果能在错误的推导中给出正确结论的前三步至少说明它有部分知识是可靠的而一个答案通顺但公式量纲都不对的模型反而是最危险的。读完这份评估之后我最大的感受是以后在CFD项目里用大模型最好先拿这套评测里的几类题目给它做个快速摸底别默认它什么都会。2. 评测体系的骨架知识利用、学习、创造到底在考什么2.1 知识利用检验模型对CFD“常识”的调用是否可靠知识利用这一层评测团队设计了几百道题目覆盖网格生成、有限体积法、有限差分法、湍流模型、边界条件、CFL条件、压力速度耦合算法等常见主题。每道题不只是问一个概念的定义而是要求模型在具体情境中应用该概念。比如给你一个激波捕捉格式问它在间断附近会出现什么数值现象应该怎么抑制或者给你一个非正交网格上的梯度计算问它高斯散度定理在这里使用需要注意什么。这种考法比单纯的“什么是迎风格式”要狠得多。初测下来主流模型在这一层表现得都不错基本能做到及格线以上但细看错误类型会发现一个规律凡是教材里反复强调且表述固定的结论模型答得很溜凡是需要把多个知识点组合、再结合问题上下文做判断的题目错误率会陡然上升。模型更像是“记住了知识点本身而没有完全掌握知识点的边界条件”这也是知识利用层面的核心瓶颈。2.2 学习在提示词里临时给规则看模型会不会生搬硬套学习维度的设计很有巧思。它并不指望模型真的像人一样去读论文然后突变式进步而是考察模型在上下文里接触到一个新的、非标准的物理模型或数值规则后能否在当下对话中正确运用这个新知识。举例来说评测里给模型规定了一种虚构的黏度表达式这个表达式在标准材料库里不存在然后要求模型基于这个新表达式重新推导边界层方程里的一项。模型如果只是机械地把公式抄下来然后硬套老流程很容易在量纲和符号上翻车真正合格的做法是先识别出新表达式对原有假设的冲击再决定哪些项可以被简化。这一层的结果就好看很多了。大部分模型的few-shot学习能力都很强你给它一两个“输入-输出”配对示例它能模仿出正确的输出格式甚至把示例里的思路套路照搬。但问题在于模型对示例的依赖极强一旦示例里的物理问题和自己要回答的新问题在参数结构上稍有不同它就容易忽略物理规律的约束只做文本层面的模式拼接。举个简单的例子示例里给的是恒定密度模型学到的可能是“面对这类方程直接把密度提出来”换了变密度问题它还是先把密度提出来结果整个推导全错。这种“假学习”现象在评测报告中专门有分析段落我认为这是综合分数之外最值得关注的情报。2.3 创造在物理约束下发散思维而不是纯靠想象力创造维度最有意思。评测团队问了模型诸如“你能不能提出一个比当前某亚格子模型计算成本更低的新模型”或“设计一种可用于可压缩流动的新的限制器函数”等开放问题。这类题目没有标准答案评分完全看物理合理性、实际可行性和创新程度。为了防止模型靠网上见过的答案蒙混过关评测团队特意将问题改造成高度定制化的场景确保不存在完全匹配的语料。结果并不让人意外。模型善于“拼贴式创新”比如把现有几种限制器的数学形式混在一起生成一个新的分段函数但大部分原创公式都过不了第一个防线——量纲分析。更有意思的是当题目明确要求“请解释你的模型为什么在驻点附近不会产生压力震荡”时模型往往回答得非常笼统无法针对自己的公式给出机理层面的论证。这暴露出一个关键事实LLM目前没有真正的物理因果模型它的创造力更多是“语义空间里的合法组合”和科研人员依赖物理直觉的创造有本质区别。但如果你把它当做一个“提供灵感候选”的搜索器反而能产生不错的效果。3. 题目怎么出才不会把大模型“养”成作弊生评估大模型最怕的一件事就是测试集泄露。CFD是一个相对小众的领域但开源论文、博客、问答社区里的内容已经足够丰富。如果评测题目直接照搬教材习题或者论文里现成的公式模型很可能不是靠推理答对的而是靠记忆背出来的。所以C博士团队在命题策略上做了很多反泄漏设计我把关键点整理成可操作的经验。3.1 反泄漏三招改编数据、设置气候题、打断套路第一招是“数据改编”。任何从教科书或论文里借鉴的题目都必须经过三轮改造换符号命名、换几何构型、换参数区间。比如经典驱动方腔流可以把顶盖速度改成随时间变化的正弦函数并要求模型判断这种非定常驱动对初始流场的影响。虽然物理内核还是那个方腔流但改动后的题面在互联网上基本找不到原文这能逼着模型现场推理而不是回忆标准结论。第二招是设置“气候题”filler。把一部分明显是模型训练集中见过的经典问题混在试卷里通过对比模型在“老题”和“新题”上的正确率估算模型调用记忆和真实推理的比例。如果某模型在气候题上能拿满分但改编题上直线下降那可以百分之百确定它的能力掩盖了严重的泛化缺陷。这种对比在设计评测时有很大的诊断价值。第三招是打断模型对指令格式的依赖。评测里把所有题目都统一成“请逐步写出推导过程并在最后给出结论”的指令避免模型因为识别到特定题型关键词而触发死记硬背的答案。为了防止模型用概率惯性猜答案还特意加入了多选、排序、补全等多种响应形式。3.2 评分维度不只看结论更看过程拆解在出完题之后接下来就是怎么打分的问题。直接看最终答案其实是懒人做法真正有区分度的是对“答题过程”打分。C博士团队的评分表上有一个“推理键点”列表每个题目里都预先定义几个不可缺少的关键步骤模型只要漏掉其中一步即使结论碰巧正确分数也会大打折扣。比如一道关于有限体积法离散扩散项的题目关键步骤包括先说明使用高斯散度定理将体积分转化为面积分其次说明界面梯度需要用相邻单元中心值进行插值最后指出非正交网格需要添加交叉扩散修正项。如果模型直接把最终离散格式写出来但中间完全没提非正交修正那说明它可能只是记住了常见格式的表达而并不清楚在该格式背后离散过程中做了什么近似。这种打分逻辑把“背答案型选手”和“真懂型选手”很好地区分开来。3.3 过程可控性也是评估的一部分评测还记录了一个容易被忽视的维度模型在回答过程中是否表现出可引导性。也就是说当模型第一次推导出错时评测员使用固定话术追问“你确认第2行到第3行的符号替换符合链式法则吗”它能不能意识到自己的错误并修正。这在实际使用中比一次答对还重要因为工程师在真实场景里一定会对模型输出进行质疑。评测数据显示大部分模型在被追问时都倾向于嘴硬而不是推倒重来。这个结果提醒我们把LLM当CFD助手时你需要设计一些“对抗性追问prompt”而不是接受它的第一版本答案。4. 实测数据与意外结论强在记忆弱在迁移4.1 总体规模与模型梯队这次评测总共包含一千多道题目覆盖了CFD领域几十个子方向并且用同题多次采样的方式消除随机性。参与评测的模型有商用超大参数模型、开源中等规模模型和更小的专用微调模型。从我复现时拿到的部分结果来看商用超大模型在知识利用维度上明显领先但在学习和创造维度上优势缩小有的开源模型甚至在某些特定改编题上反超。这说明一个趋势模型规模带来的红利主要集中在知识容量和语料覆盖面学到了“更多事实”并不代表拥有“更强的物理推理能力”。物理推理依赖的是建模、符号操作和数值敏感性判断这些能力未必随着参数规模线性增长。我在处理一个关于共轭传热耦合界面条件的问题时也发现商用大模型虽然回答得更有条理但连续追问两个“为什么”后它给出的物理解释和最初表面回答并不完全自洽。4.2 各维度表现对比为了直观我把自己复现结果中比较有代表性的数据整理成了一个二维定性表格能力维度商用超大参数模型开源中等规模模型领域微调小模型知识利用概念优覆盖率极高中偶有严重偏差良在微调语料范围内稳定知识利用情境应用良复杂场景开始出错中依赖常见套路中处理新颖参数较吃力学习few-shot优格式模仿能力强良能跟上示例节奏稍弱易受示例噪声影响学习物理迁移中会在迁移中丢掉物理约束差经常生搬硬套中微调约束带来一定稳定性创造可行方案中偶尔给出有启发的组合低多数不过量纲分析低创新空间明显受限创造可解释性中能自圆其说但机理浅低解释多浮于表面低依赖训练模板这张表最扎心的一点是所有模型在学习维度上的“物理迁移”都远低于“格式模仿”。这意味着当你希望大模型在你给了一个新方程之后把它作为工具去推导后面的公式时需要额外加入大量约束型提示比如逐一检查每一项的单位、说明每一步近似的物理前提。反过来这也为我们使用模型提供了操作指引绝对不能让它“自由发挥”式的推导必须拆解成小步骤并逐步验证。4.3 幻觉集中爆发点评测中最让我意外的是幻觉爆发并不集中在最高难度的推导题而是集中在一些看似简单、但涉及“符号约定”的问题上。比如给一个使用非标准应力张量符号的RANS方程模型经常会把压力项和扩散项的符号搞反或者在计算无量纲数时把参考长度选错。这类错误在人工看来很低级但模型往往表达得非常自信如果工程师不逐行核对很容易被带到沟里。另一个幻觉高发点是“引用文献”。评测专门设置了一批要求给出文献出处的题目模型编造出的论文标题和作者名非常逼真但查实之后几乎全是虚构。这也再次验证了CFD领域用LLM做文献调研时需要极高的警惕任何关键引用都要回到真实的数据库中核验。5. 完整复现该评测框架的步骤与避坑记录5.1 第一步构建隔离题库避免污染复现时我没有直接使用评测原文的题库而是按同样的命题策略自己重造了一套。我用一个简单的规则来保证隔离任何题目先在公开文本搜索引擎里以整句检索如果结果超过三条高度相似的内容就修改数值、变换方程符号顺序或改用不同的几何假设直到完全搜不到近似内容为止。这一步非常耗时但没有它就不能排除模型靠背诵通关的可能性也不能保证评测的公平性。我建议你也这样做借用框架没问题但题目一定要自己出哪怕数量少一点也行。五十道优质的“隔离题”远好过五百道网上能搜到答案的“气氛题”。5.2 第二步定义评分标准与双人盲评我组了一个三人小群一位流体背景的研究生、一位做数值方法的师兄、加上我自己对模型输出进行盲评。细节上我们参考C博士团队的做法每个回答至少由两人独立按评分表打出四档分数有分歧时讨论到一致为止。这个环节看似费力但能大幅提高分数的公信力特别是创造维度的题目没有人工判断根本没法评判。一个有用的心得评分表不要写得太抽象。不要只写“是否考虑了物理特性”要写成类似“是否提到了马赫数对可压缩性的影响”“是否检查了壁面处湍流黏度的衰减行为”这样的具体条目。只有具体到能画勾的评分项评分者之间的一致性才会好。5.3 第三步工程化评测脚本控制随机性下面是评测脚本的核心框架我简化后分享给大家。这里主要说明调用模型接口、保存原始输出以及多次采样的思路具体API细节需要按你所用的模型服务调整。import json import time import random questions [...] # 每项含 id, category, prompt def call_model(prompt, temperature0.2, max_tokens3000): # 这里填你所用模型的调用SDK # 注意温度不要设太高否则同样问题会得到差异很大的结果 response your_model_api( promptprompt, temperaturetemperature, max_tokensmax_tokens ) return response results [] for q in questions: # 每个问题采样3次防止单次随机波动 outputs [] for _ in range(3): try: outputs.append(call_model(q[prompt])) except Exception as e: outputs.append({error: str(e)}) time.sleep(1) # 控制请求频率避免限流 results.append({ id: q[id], category: q[category], outputs: outputs, majority_answer: majority_vote(outputs) }) with open(eval_results.json, w, encodingutf-8) as f: json.dump(results, f, ensure_asciiFalse, indent2)这个脚本本身没什么技术含量但有一个小坑很多模型服务在长推导时会把输出截断在max_tokens边界上而且截断的位置刚好在最关键的公式中间。如果你也遇到类似情况建议把max_tokens设大同时设定一个“深刻思考款”的系统提示词让模型先输出最终结论再补过程或者分段输出。实际体验下来先让模型生成一段草稿、然后再追问关键步骤比一次性生成全部内容能减少中途折半的现象。5.4 第四步统计时要剥离“表达质量”的干扰复现时我还踩了一个印象深刻的坑模型A在推导中漏了一个重要修正项但因为它的回答逻辑清晰、用了大量专业术语我这个老手也会倾向于给它“部分正确”而模型B虽然结论完全正确但表达啰嗦、术语不统一差点被我打更低分。这就是“表达质量”对评分的污染。后来我们强制规定评分时先把模型回答中的所有叙述性句子遮住只看方程与关键项是否齐全、符号是否正确。只有在创造维度的主观评分里才允许考虑条理性。这样调整之后模型A的分数显著下降模型B的分数回归到合理区间。这也是评测过程中最需要警惕的主观偏差来源——我们太容易被流畅的文本说服而忽略了物理核心的对错。6. 这份评估结果对LLMCFD落地应用的三点启示6.1 别把LLM当求解器把它当“会说话的参考手册”实测数据已经很清楚模型在知识利用维度的表现尚可但涉及复杂多步推导时可靠度不足以支撑黑箱调用。我现在的用法是把它当作一本带语义检索功能的参考书——它擅长帮你快速回忆起某个格式的离散形式或者给你一个边界条件的典型处理思路。但凡涉及数值结果我必须自己用矩阵组装、残差检查等手段验证。如果你让它直接输出完整求解器至少每一行代码都要用小型算例跑通验证。6.2 用一个“物理约束问答链”来驯化模型从学习维度的教训出发我现在在prompt里固定增加一段约束“每一步推到换行前检查一下量纲是否一致是否忽略了非定常项边界上的通量是否满足守恒性质。”这样并不能保证模型绝对正确但能明显降低低级幻觉率。我对比过加或不加这段话在同一组改编题上的结果错误率能下降约三成。这本质上是把评测中发现的“迁移短板”用引导词抵消掉了一部分。6.3 构建“人机循环验证”机制远比换更大模型重要在创造维度的测试中模型给出了几个让我眼前一亮的“奇怪组合项”但都缺乏实际验证潜力。这也启发了我与其追求让模型生成完全可用的新公式不如把它当做一个辅助脑暴工具由人快速筛选出物理上可行的部分再用传统CFD程序做验证。这个“人筛选机器验证”的循环才是现阶段LLM赋能CFD科研最靠谱的路径。如果你也想在自己的工作流里引入这套评测思路我建议先从二三十道“隔离题”开始覆盖你手头最常用的几个CFD子方向给常见的几个模型跑一次摸底再根据摸底结果决定哪些任务可以放手交给AI、哪些任务必须人肉盯防。相信我这次摸底花掉的一天时间会帮你避开未来好几个月被AI幻觉坑的险境。最后分享一个我个人的小习惯现在不管哪个模型给我CFD相关输出我都会额外多问一句“这里做了哪些假设哪些条件下这个结论会失效”。如果它答不出后面的问题那我会直接把它前面的结论也打个大问号。这套评测让我最深刻的启发不是某个模型多强而是——大模型的可靠边界从来不在它读了多少文献而在于它能否为自己的每一句话给出物理上的理由。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑