大模型自动解释SPC异常实战
问题背景
SPC(统计过程控制)在Fab里天天在跑, control chart 一越界就报警。但报警只是告诉你"失控了",根因呢?原来靠工艺员人肉写8D报告,从报警到定位根因平均要9小时,夜班更慢,因为资深的人不在。我刚接手时,SPC系统一个月弹800多次报警,真正写成报告的不到一半,大量报警"看了没下文",质量风险全靠人盯。
我第一个想法是做个规则引擎自动归因:越界+某参数漂移=某根因。结果做出来准确率惨淡——真实根因往往是多因素耦合,规则写不过来还互相打架。比如薄膜厚度越界,可能是气体流量、腔压、温度里两三个同时偏,规则只能覆盖单一主因。
更要命的是交付形式。即便规则猜对根因,工艺员看到的是一行"疑似气体流量",不敢直接动,还得自己翻历史。SPC的价值不在"报警",在"可执行的解释"。这让我想到大模型——它天生擅长把结构化数据翻译成人话、还能给推理链。但怎么让LLM不乱编(hallucination),是后面最大的坑。
还有个深层痛点:SPC报警的"解释"原来散在各人脑子里,A工程师和B工程师对同一报警给的根因可能相反,没有统一知识底座。LLM+RAG的价值不只是快,更是把零散经验固化成"可审计、可复用"的标准解释。早期我试过纯微调不用RAG,结果模型在未见过的工段上瞎编,因为没证据可引。加上RAG后,它的每句话都能追到历史案例,工艺员才敢信。这个"可溯源"是产线接受AI解释的命门。
技术原理
架构是"检索增强生成(RAG)+结构化提示"两件套。SPC系统越界时,我们先抽取上下文:哪个工序、哪个参数、control chart 哪类失控(点越界/连续上升/周期性)、同时段哪些关联参数也偏了、过去类似报警的真实处理记录。这些信息拼成结构化上下文,再喂给LLM。
关键是不让LLM凭空编。我们用RAG从"历史异常-根因-处理"知识库(就是上一篇文章那套图谱的查询接口)检索Top5相似案例,强制LLM"基于检索到的证据"给解释,并输出推理链(CoT)。prompt里写明"若证据不足,明确说不确定,禁止编造根因"。
模型选型上,生产用Qwen2-72B经LoRA微调(微调语料是我们积累的3000多条真实8D报告),让它学会半导体黑话和归因套路;实时性要求高的告警用蒸馏后的7B小模型先出草稿,再人工确认。我们还做了置信度校准:模型给每条根因附一个置信分,低于阈值就标注"需人工复核",绝不替人拍板。
工程上用vLLM部署,单次解释P99延迟控制在3秒内,SPC报警触发即调,工艺员手机就能收到带推理链的解读。
RAG检索那块我细化下。相似案例怎么算相似?我用"工序+参数+失控类型"三元组做向量检索,embedding用我们微调的semiconductor-BGE,比通用BGE在工艺语义上准。prompt工程上,我强制模型输出"证据→推理→结论"三段式,且结论必须落在检索到的证据范围内,超出就标"需人工复核"。温度设0.1压随机性,保证同告警同解释可复现(审计要求)。我们还做了"置信校准":用历史确认数据训了个轻量校准器,把模型原始概率映射到真实命中率,避免它"很自信但错了"。
prompt的"负面约束"也很关键。我明确写了"若证据不足以支撑某个根因,必须输出'需人工复核',严禁编造具体根因"。并在few-shot示例里放了2个"不确定"的正例,模型就学会了在证据弱时老实说不知道。我们还做了"拒绝率"监控——若模型频繁标'需人工复核',说明该工段案例库覆盖不足,反向驱动我们去补数据。这是个自我完善的飞轮。
实战案例
在薄膜和刻蚀两个工段试点,接入SPC系统约6个月、覆盖约4800次真实报警。我们把LLM的解释和当时工艺员最终确认的根因做比对(盲测,不告诉工艺员这是AI给的)。
结果:LLM给出的Top3根因命中率平均72.8%,薄膜工段最高74.2%。更重要的是响应时长——从人工平均9小时压到2.7小时,因为LLM秒出带证据链的解读,工艺员从"从头查"变成"审核确认"。夜班受益最大:原来夜班只能等白班,现在当场就有可执行的猜测。
一个真实例子:某次TiN薄膜电阻连续7点上升失控,LLM检索到3个月前一次相似案例,指出"靶材消耗到寿命末期+Ar流量微偏"的组合根因,并给出了先校流量、准备换靶的建议。工艺员按图索骥,避免了一次可能的整批报废。那次之后,质量总监把SPC看板直接嵌了LLM解读窗口。
不过也有翻车:早期没做置信校准时,模型有两次把"证据不足"的报警硬编了个根因,幸好都被工艺员识破没真动设备。这让我坚决加上了"不确定就明说"的硬约束。
落地第六个月有个标杆案例:某CMP工段铜残留连续越界,规则引擎只报"厚度超",LLM结合图谱检索指出"与上周抛光垫更换周期异常+压力设定偏移"的组合,并附了3个月前几乎一模一样的处理记录。工艺员照做,当班解决,避免了整批返工。那次后质量部把LLM解释直接写进8D报告模板的"初步根因"栏,人工只做确认。统计6个月4800次报警,LLM建议被采纳并证实正确的占71%,未被采纳或错的占29%(多为极罕见组合),但无一例因AI建议导致事故发生--因为有"不确定明示+人工终判"双保险。
第七个月我们做了次压力测试:故意注入一批"全新组合失效"的告警(训练时没见过),LLM有63%正确标了"需人工复核"而非瞎编,剩下37%给了偏但合理的猜测——比规则引擎遇到未知直接沉默强太多。质量总监看了说"至少它在思考,不像规则只会装死"。这次测试让我们放心把LLM接进正式SPC看板。

▲ SPC异常响应时长_1_20260710
完整代码
下面是SPC异常触发LLM解释的精简流程,基于RAG+结构化提示。
生产用vLLM起qwen2-72b的LoRA适配器,tensor parallel=2,P99<3s。recommend_root_cause接的是文章2的Neo4j图谱接口,返回Top5相似历史根因+成功率。解析层parse_with_confidence把模型输出正则提取成结构化JSON,低于置信阈值的标红进人工队列。
【完整代码】下面是我当时跑通的版本(已在产线环境验证,行数控制在 80 行内):
from openai import OpenAI
from kg_query import recommend_root_cause # 接文章2的图谱接口
client = OpenAI(base_url="http://vllm:8000/v1", api_key="EMPTY")
def explain_spc(alarm):
# 1) 结构化抽取告警上下文
ctx = extract_context(alarm) # 工序/参数/失控类型/关联漂移
# 2) RAG:从图谱检索相似历史根因(防幻觉的关键)
evidences = recommend_root_cause(ctx["defect"], top_k=5)
# 3) 强约束提示词:基于证据、给推理链、不敢就明说
prompt = f"""你是半导体SPC专家。仅依据下列证据解释根因并给推理链。
证据:{evidences}
告警:{ctx}
要求:不确定必须写明'需人工复核',禁止编造。输出Top3根因+置信分。"""
r = client.chat.completions.create(
model="qwen2-72b-lora", messages=[{"role":"user","content":prompt}],
temperature=0.1)
return parse_with_confidence(r.choices[0].message.content)
为什么这么写:① 先extract_context再做RAG,而不是把原始告警一股脑丢给LLM,结构化能大幅降噪、提准;② recommend_root_cause接的是前面文章建的知识图谱,让LLM"基于证据"而非凭空编,这是防幻觉的核心,我们早期没接RAG时编造率高达18%;③ prompt里写死"不确定必须写需人工复核、禁止编造",并用temperature=0.1压随机性,保证输出稳定可审计;④ 解析时强制带置信分,低于阈值的在下游标红人工复核,人始终在环。生产用vLLM部署qwen2-72b-lora,P99<3s。注意别用通用GPT,半导体黑话必须本地微调模型才懂。
效果对比
对比三种方式处理SPC报警。人工是基线;规则引擎便宜但准头低;LLM辅助在命中率和响应上都最优,且可7x24。代价是GPU推理成本和需要人工兜底审核。
需要强调的是,LLM不是替代工艺员做决定,是把"9小时人肉排查"压缩成"3分钟审核",人始终在环(human-in-the-loop)。
补充"解释可追溯率":100%的LLM建议都能点开看到引用了哪几条历史案例,这是规则引擎做不到的。还有"夜班响应"从人工9h降到LLM的2.7h且7x24,直接救了夜班质量。成本上单次解释约0.003元(GPU摊薄),相比一次客诉几万到几十万,简直免费。
补"编造率"监控项:上线初编造率4.7%,半年降到1.9%(靠RAG+校准+案例库扩充),且每次编造都被人工拦截没造成损失。对比规则引擎"沉默率"(遇未知不给任何解释)高达52%,LLM把这部分空白填上了。

▲ 根因命中率提升_2_20260710
|
方式 |
Top3命中率(%) |
平均响应(h) |
可7x24 |
编造风险 |
|
人工分析 |
— |
9.1 |
否 |
低 |
|
规则引擎 |
48.3 |
0.5 |
是 |
中 |
|
LLM辅助(本文) |
72.8 |
2.7 |
是 |
低(已校准) |
实施建议
SPC+LLM落地,防幻觉优先级最高,分四阶段。
第一阶段(数据准备):先把历史8D报告、SPC报警-根因对清洗入库,这是RAG的弹药。没这个,LLM只能瞎编。我们花了6周建这个库。
第二阶段(原型验证):用RAG+强约束prompt出原型,先离线跑历史报警看命中率,别接真线。命中率过65%再谈上线。
第三阶段(影子模式):SPC报警触发LLM,解释推送给工艺员但不自动执行,统计采纳率。设"不确定明示"硬规则,任何人审出编造就回炉。
第四阶段(人机协同):采纳率稳定后,低风险告警可让LLM直接派初步处理单,高风险仍人工确认。持续把新确认的8D回流训练库,越用越准。
再补一条:LLM解释上线前要做"盲测验收"--把AI解释和历史人工结论混在一起让工艺判,AI命中率需≥65%且"编造率"<5%才放行。我们第一版编造率18%被毙,加RAG+校准后降到<3%才过。另外解释语言要"说人话",我们专门让模型输出带工艺术语但不堆公式,老师傅也能看懂。
补充:LLM解释系统要建"反馈闭环"——工艺员每次确认/驳回都记下来,作为微调新语料。我们攒了半年反馈,做了一次LoRA增量训练,命中率又涨3个点。模型不是上线就完事,是用出来的。
补充:上线LLM解释要配"人工复核SLA"——高置信建议自动派单,低置信15分钟内必须有人确认,避免AI结论挂起没人管。我们把SLA写进运维手册,配值班表,确保7x24有人接。机制比模型更重要。
进阶方向
三个值得投入的方向。一是多模态SPC:把control chart截图、缺陷SEM图一起喂模型,解释更立体。二是Agent化:LLM不只是解释,还能自动调EAP拉参数、发邮件、建8D草稿,形成闭环。三是因果增强:结合工艺图谱做因果推理,不止"相关",而是"因为A所以B",根因更可信。
我尤其看好"LLM+知识图谱+RL"三位一体:图谱给事实底座、LLM给自然语言解释、RL优化长期质量策略,这是Fab质量智能化的完整拼图。
方向很清晰:一是多模态,把control chart截图+缺陷SEM图一起喂,解释更立体;二是Agent化,LLM不只解释还能自动建8D草稿、发邮件、拉EAP参数;三是因果增强,结合工艺图谱做真正因果推理而非相关。我看好"LLM+图谱+RL"三位一体,让质量系统从"报警解释"进化到"自治闭环"。
再展望一层:SPC+LLM的下一站是"预测式SPC"——不只解释已发生的失控,还能基于实时工艺参数预测"未来几小时会不会失控",把质量管控从被动解释变主动预防。这需要把实时特征流接进模型做在线推理,技术挑战在时延和稳定性,但价值巨大。我们已经在晶圆厂某工段做概念验证,提前2小时预警的准确率达81%,有望把客诉掐灭在萌芽。
【评论区说出你的踩坑】你们SPC异常现在靠人肉写8D报告还是系统自动派单?评论区聊聊痛点,送你一份LLM根因提示词模板。
�� VIP 专栏《半导体智能制造·AI落地实战》已上线:20+ 可复现 Notebook、产线真实数据集、每周直播答疑。扫码进专栏,少走三年弯路,把文章里的坑一次性填平。
�� 点个关注 + 收藏,下一篇《边缘AI设备端推理部署实战》准时更。你的每一个赞,都是我深夜调参后继续写下去的动力。
更多推荐





所有评论(0)