Paper Reading / Visual Program Generation · Industrial AI

RAFT-V

把“相似案例”写进训练,
再让模型学会拒绝近似错误。

Retrieval-Augmented Fine-Tuning With Preference Optimization For Visual Program Generation

这篇论文研究的不是看图生成代码,而是把工业 Ladder Diagram 转成 XML、JSON 或 NetworkX metaprogram,让 7B–8B 语言模型从韩文功能描述生成完整 PLC 图程序。关键设计是:检索案例既在训练时出现,也在推理时出现;随后用图编辑造出“几乎正确”的负例,做离线 DPO。

ACL 2025 · Main Conference · Long PaperDeokhyung Kang、Jeonghun Cho 等arXiv:2502.16529v220 页 · 含完整附录
ACL 正式论文 ↗进入方法 ↓先看证据边界 ↓
67.2%最佳 Program EM · Llama / metaprogram
+13.2相对 SFT 的百分点提升
14,124总样本 · 工业电池制造 LD

核心数字来自正式论文 Table 2。这里的“准确”指节点与边属性集合完全匹配标注图,不等于在 PLC 仿真器或真实产线中已验证安全。资料核查:2026-09-22。

01 / Research Motivation

为什么更大的 RAG 模型,反而输给 8B 微调?

Ladder Diagram(LD)是 IEC 61131-3 PLC 编程语言之一。一个 rung 由 contact、coil、function block 等元素及其连线组成;变量地址、I/O 映射和功能块配置会随产线与硬件改变。通用模型可能懂“定时器”或“互锁”的概念,却没有见过某家工厂的地址命名与组合习惯。把所有配置塞进一次 prompt 不现实,单纯检索若干示例也不一定能让模型稳定吸收这些规则。§1–2,pp.1–3

作者先做一个诊断实验:70B 量化模型做 RAG,8B 模型做 SFT。尽管 RAG 能看到训练集中的相似 prompt–code 对,8B SFT 在 XML、JSON、metaprogram 三种表示上都更好。作者据此提出假设:工业域配置不仅要被临时“看到”,还要在参数更新中被学习;但检索仍然有价值,因为 LD 会重复使用相似子程序。

Paper Verified

受控结论

在一个保密的电池制造 LD 数据集上,SFT 优于所设定的 BM25-RAG;RAFT-V 又优于 SFT;DPO 再带来较小但一致的 EM 增益。

Author Claim

工业价值

作者认为超过 10 个百分点的 Program EM 提升可减少人工检查、加快 PLC 开发。论文未报告实际开发工时、部署故障率或经济成本。

Our Interpretation

真正的创新点

它把 retrieval 从 inference trick 变成训练分布的一部分,并利用图结构制造可控 hard negatives;创新主要在训练配方和数据构造,而非新模型架构。

最容易误读的地方

RAFT-V 不是“检索后再微调一次”的流水线名称。训练时,模型输入已经含检索到的 prompt–code 对;推理时仍需用同一类检索增强输入。若部署时拿掉 retriever,就出现 train–test mismatch。

论文究竟解决什么输入输出?

环节对象论文中的含义
输入 \(q\)韩文自然语言Program Description + Detailed Description,描述功能、阈值与条件。
检索上下文\((p_i^r,c_i^r)\)从训练池用 BM25 找到的相似 prompt 及其 LD 代码;主实验取 top-1。
输出 \(c_q\)文本化 LDXML、JSON 或可执行 NetworkX Python metaprogram,之后统一转换成图比较。
目标图 \(G\)\((V,E)\)节点带 element type、变量等属性;边带连接类型与端点。
优化目标先 CE,后 DPO先拟合正确代码,再提高正确图相对图编辑负例的条件概率偏好。

02 / Representation

视觉程序先被“降维”为可比较的图。

Figure 1:Ladder Diagram 与 XML、JSON、metaprogram 表示
Figure 1 · 三种文本表示。 顶部是单个 rung 及其图;底部是 IDE 导出的 XML,以及从图转换出的 JSON 和 NetworkX metaprogram。原图来自论文 Figure 1。

XML 按坐标列出视觉元素,却不显式写出全部拓扑关系。作者用规则读取 element 坐标与 line 位置,忽略 line 节点,以坐标顺序给剩余元素编号,再构造 DAG。JSON 用 node ID 映射属性与 outgoing edges;metaprogram 则输出 G.add_node(...) 和 G.add_edge(...),运行后重建图。

表示优势风险 / 论文观察
XML来自 XG5000,接近原始工业文件关系隐含在坐标和 line 中;模型既要学语法又要学空间规则。
JSON结构关系显式,便于解析括号、键和值必须全局一致;长图容易出现小错误。
Metaprogram图操作显式且可执行,RAG baseline 的局部 F1 最好论文只验证重建图与标注图一致,未把代码执行等同于 PLC 语义仿真。

自动指标:局部正确与全图正确分开

预测图为 \(\hat{G}=(\hat{V},\hat{E})\)。只有节点/边的全部必要属性精确相等才算集合交集中的匹配项。F1 对“部分图正确”给分;EM 则要求集合完全相等。

\[ \mathrm{NodeF1}=\frac{2\lvert V\cap\hat{V}\rvert}{\lvert V\rvert+\lvert\hat{V}\rvert},\qquad \mathrm{EdgeF1}=\frac{2\lvert E\cap\hat{E}\rvert}{\lvert E\rvert+\lvert\hat{E}\rvert} \]
\[ \mathrm{ProgramEM}=\mathbf{1}\{\hat{V}=V\ \mathrm{and}\ \hat{E}=E\} \]
Figure 5:图指标计算示例
Figure 5 · 指标示例。 标注图 6 节点 / 5 边,预测图 5 节点 / 4 边;5 个节点正确、3 条边正确,得到 Node F1 = 0.91、Edge F1 = 0.67,三种 EM 均为 0。原图来自 Appendix A。

指标很严格地检查结构与字符串属性,但没有执行 PLC scan cycle,也没有检查时序、互锁安全、硬件地址可用性或真实 actuator 行为。

03 / Pipeline

先学会借案例,再学会识别“差一点”的错图。

Figure 3:RAFT-V 与 DPO 两阶段训练
Figure 3 · 完整方法。 Stage 1:BM25 找相似 prompt–code,对增强输入做交叉熵微调。Stage 2:从 ground truth 图编辑出负例,用 GED 选最接近的 hard negative,再做 DPO。原图来自论文 Figure 3。
01导出与标注XG5000 XML → functional unit;PLC 工程师写韩文说明。
02检索增强BM25 从训练池取 top-(k) prompt–code 对。
03RAFT-V SFT增强 prompt 为输入,正确目标代码为输出。
04构造偏好对删节点或复制 node–edge;GED 选最难负例。
05DPO 与推理同样保留 retrieval,beam size 4 生成最终程序。

Stage 1 · Retrieval-Augmented Fine-Tuning

训练集 \(\mathcal{D}=\{(p_i,c_i)\}_{i=1}^{N}\)。给定新 prompt \(q\),检索器 \(\mathcal{R}\) 对训练池排序并返回 top-\(k\) 对:

\[ \{(p_i^r,c_i^r)\}_{i=1}^{k}=\mathcal{R}(q,\mathcal{D}) \]

随后把 query 与示例串接为增强输入:

\[ q_a=\bigl(q,[(p_1^r,c_1^r),\ldots,(p_k^r,c_k^r)]\bigr) \]

模型学习 \(q_a\rightarrow c_q\)。主实验 \(k=1\),检索器是 lexical BM25,不是 learned dense retriever。检索池来自训练数据;论文没有说明是否排除了与 query 同源、近重复或同一原始程序切分出的 functional units,这一点关系到泄漏风险。

Stage 2 · 图编辑造负样本

每个正确图 \(G\) 生成 10 个候选负图。若 \(\lfloor\tau\lvert V\rvert\rfloor\gt0\),随机选节点集合 \(\mathcal{X}\) 删除,并把路径 \(\mathcal{W}\rightarrow\mathcal{X}\rightarrow\mathcal{Y}\) 重连为 \(\mathcal{W}\rightarrow\mathcal{Y}\) 以保持连通;当图少于 10 个节点且主设置 \(\tau=0.1\) 时,不删除,而是复制随机 node–edge pair 并接回图中。这样生成的不是随便乱码,而是结构合法、与真值相近但有语义差异的错图。

图编辑负例演示
1

删除 1 个节点并重连前后邻居。每个正确图重复 10 个随机种子,再由 GED 选最接近真值的负例。

Hard negative 不是“编辑最多”,而是 GED 最小

\[ \mathrm{GED}(G,G')=\min_{T\in\mathcal{T}(G,G')}\sum_{e\in T}\mathrm{cost}(e) \]

\(\mathcal{T}(G,G')\) 是把 \(G'\) 变成 \(G\) 的编辑路径集合;作者以 Levenshtein distance 度量 edit path cost,并从 10 个编辑图中选 GED 最低者作为 \(G_{\mathrm{Hard}}\)。直觉是:越接近 ground truth,越能迫使模型学习细粒度结构差异。

04 / Objectives

两个损失,分别解决“会生成”和“更偏好正确”。

交叉熵:逐 token 拟合正确代码

\[ \mathcal{L}_{\mathrm{CE}}=-\sum_{t=1}^{T}\sum_{v\in\mathcal{V}}c_t(v)\log\hat{c}_t(v) \]

\(T\) 是输出序列长度,\(\mathcal{V}\) 是词表;\(c_t(v)\) 是 one-hot ground-truth token,\(\hat{c}_t(v)\) 是模型概率。它让模型学会输出正确 LD 文本,但对“正确答案与只错一个节点的答案应有多大差距”没有显式监督。

DPO:提升正确图相对 hard negative 的隐式奖励

\[ \mathcal{L}_{\mathrm{DPO}}(\theta)=-\mathbb{E}_{(x,y^+,y^-)\sim\mathcal{D}_{\mathrm{pref}}} \left[\log\sigma\left(\beta\left(\Delta_{\theta}-\Delta_{\mathrm{ref}}\right)\right)\right] \]
\[ \Delta_{\theta}=\log\pi_{\theta}(y^+\mid x,\mathcal{R}(x))-\log\pi_{\theta}(y^-\mid x,\mathcal{R}(x)) \]

\(x\) 是自然语言 prompt;\(\mathcal{R}(x)=(p^r,c^r)\) 是检索案例;\(y^+\) 是标注代码,\(y^-\) 是 hard negative;\(\pi_{\theta}\) 是待训练策略,\(\pi_{\mathrm{ref}}\) 是参考模型;\(\beta=0.1\) 控制偏离参考模型的强度。目标不是直接最小化 GED,而是让正确代码的相对 log-probability advantage 高于负例。

公式与实现的关键边界

论文没有公开代码或数据,因此无法核对 DPO reference model 究竟冻结自哪个 checkpoint、LoRA adapter 如何合并/复制、GED 的 node / edge substitution cost 细节,以及图编辑后的负图如何序列化回三种文本格式。这些步骤会显著影响复现。

05 / Reproduction Sheet

论文公开了训练表,但没公开可运行资产。

数据集

来源真实电池 cell 制造产线的 Ladder Diagram,经 XG5000 导出 XML。
切分单位functional unit;每个 unit 含一个或多个互联 rungs,并实现一项功能。
标注一名有经验的韩国 PLC programmer 为每个 unit 写韩文 Program Description 与 Detailed Description。
规模train 13,124 / validation 500 / test 500,总计 14,124;train 的 80% 用于 Stage 1,20% 用于 preference learning。
流程分布Cell Distribution 2,893;Processing 3,093;Vision Inspection 726;Stacking 3,706;Pack End-plate Supply 2,808;Other 898。
公开性因商业保密不公开,仅提供匿名样例;这使数据去重、split 独立性和外部复现无法审计。

模型、训练与推理

项目Stage 1 · SFT / RAFT-VStage 2 · DPO
BackboneLlama-3.1-8B-Instruct;Qwen2.5-7B-Instruct 做跨模型验证
参数高效微调LoRA rank 256,\(\alpha=256\),dropout 0.05;q_proj、k_proj、v_proj、o_proj
Epoch / batch10 epochs / batch 85 epochs / batch 64
学习率\(5\times10^{-5}\)\(1\times10^{-7}\)
OptimizerAdamW;未报告 scheduler、weight decay、warmupweight decay 0.01;warmup ratio 0.03;正文未再次点名 optimizer
Early stopping每 epoch 看 validation loss,patience 2
硬件 / 时间4×A100 80GB;SFT 6 h,RAFT-V 8 h4×A100 80GB;6 h
检索BM25,主实验 top-1;训练与推理均检索
解码beam search,beam size 4;未报告 max tokens、length penalty、停止符

Prompt 到底公开了什么?

Appendix G 给出三套完整 system prompt。共同框架是“你是 PLC ladder logic 编程助手”,要求把自然语言功能说明直接转成目标格式;随后逐条解释 NormallyOpen / NormallyClosed / edge contact、六种 coil、Inverter、FunctionBlock、Variable 等元素语义。XML 版要求输出 <Rung> 与带坐标的 element;JSON 版固定 root graph、node attributes 和 typed edges;metaprogram 版要求 NetworkX directed graph,每个 rung 单独成图。

RAG message template(Appendix F)
system: {对应格式的完整 system prompt}
user:   retrieved_prompt
assistant: retrieved_code
...
user:   test_prompt

RAG 对 malformed 输出做后处理,删除代码围栏和无关片段。论文未说明训练样本的 chat template、示例分隔符、retrieval ordering、token truncation、XML 解析失败率与 beam 候选选择规则。

06 / Main Results

最大提升来自 retrieval-aware SFT;DPO 是最后几步。

先验证:SFT 比大模型 RAG 强

Figure 2:SFT 与 RAG 比较
Figure 2 · XML 上的 SFT vs RAG。 8B SFT 是红色虚线,70B AWQ RAG 随 retrieved examples 数量变化;RAG 在 \(N=5\) 左右达峰后下降。零样本实际仍给一个固定 prompt–code 对,只是不从检索器取动态示例。原图来自论文 Figure 2。
FormatMethodNode F1Edge F1Node EMEdge EMProgram EM
XMLRAG 70B74.467.149.649.249.2
XMLSFT 8B84.874.755.254.854.8
JSONRAG 70B72.665.751.650.850.8
JSONSFT 8B85.174.953.652.652.6
MetaprogramRAG 70B80.071.952.251.851.8
MetaprogramSFT 8B86.375.755.254.054.0

完整主表 · Llama-3.1-8B / Qwen2.5-7B

FormatMethodNode F1Edge F1Node EMEdge EMProgram EM
XMLSFT84.8 / 79.074.7 / 68.055.2 / 46.454.8 / 45.654.8 / 45.6
XMLRAFT-V88.1 / 87.480.9 / 78.763.8 / 59.662.8 / 58.862.8 / 58.8
XMLOurs89.6 / 87.482.6 / 79.066.2 / 61.265.2 / 60.065.2 / 60.0
JSONSFT85.1 / 81.274.9 / 69.353.6 / 46.052.6 / 45.452.6 / 45.4
JSONRAFT-V90.1 / 88.482.0 / 79.663.8 / 59.263.2 / 57.463.2 / 57.4
JSONOurs90.7 / 88.783.0 / 80.566.0 / 61.665.2 / 60.265.2 / 60.2
MetaprogramSFT86.3 / 81.775.7 / 70.255.2 / 47.654.0 / 47.254.0 / 47.2
MetaprogramRAFT-V89.9 / 89.182.4 / 80.464.6 / 60.663.8 / 59.663.8 / 59.6
MetaprogramOurs90.6 / 89.783.6 / 81.668.6 / 63.267.2 / 61.867.2 / 61.8

对 Llama metaprogram,SFT → RAFT-V 是 54.0 → 63.8(+9.8 个百分点),DPO 再到 67.2(+3.4)。所以总提升 13.2 个百分点中约四分之三来自 Stage 1。Qwen 同方向,但最终 61.8,说明配方可迁移,却没有消除 backbone 差异。

人评:EM 增益没有等比例转化为主观功能分

MethodFunctional score(1–5)Fleiss’ \(\kappa\)
SFT-only4.340.62
RAFT-V4.600.58
Ours4.620.66

3 名获授权的 PLC 工程师评 50 个随机 test cases,先把 metaprogram 转回 XG5000 LD,再看 reference–prediction 截图。RAFT-V 相对 SFT +0.26,而 DPO 相对 RAFT-V 仅 +0.02;这说明 DPO 的 3.4-point Program EM 增益主要在严格字符串/结构完全匹配上,是否有显著实用功能增益并不清楚。论文未报告人评方差、置信区间或显著性检验。

07 / Ablation

实验支持“近而不易”的负例,但仍缺关键对照。

检索数量 \(k\)

\(k\)Node F1Edge F1Node EMEdge EMProgram EM
1(主设置)89.982.464.663.863.8
290.683.566.465.665.6
390.984.065.464.664.6

\(k=2\) 的 Program EM 比主设置高 1.8 点,作者仍选 \(k=1\) 并称额外收益 marginal。这个选择有计算效率理由,但主表并非这个消融里的最优 \(k\)。

删除比例 \(\tau\) 与负例来源

\(\tau\)Program EM
065.8
0.167.2
0.566.8
0.966.0
MethodProgram EM
RAFT-V(100%)65.2
BoN Random65.6
BoN Unstrict65.8
BoN Strict66.2
Graph edit Random66.6
Graph edit + GED67.2

\(\tau=0.9\) 太容易区分,EM 下降,符合 hard-negative 直觉。Graph edit + GED 比 graph edit random +0.6,比最佳 BoN +1.0。差距不大,且只报告单次点估计,未给随机种子波动;因此可以说设计“表现最好”,不能说 GED selection 已被稳健因果验证。

Figure 4:不同复杂度程序上的 Program EM
Figure 4 · 程序复杂度。 复杂度定义为节点数 + 边数,再按 test set 百分位分五组。两阶段方法在第 4、5 组相对 SFT 分别扩大到 +18.3、+16.3 个百分点。图中没有每组样本数、置信区间或绝对节点/边阈值。

缺少的关键消融

08 / Evidence Audit

结果可信,但可复现性与外推范围都很窄。

Paper Verified

真正验证过

两个 7B–8B backbone、三种文本格式、同一私有数据 split 上,RAFT-V 和两阶段方法的自动指标均优于 SFT;50 例人评也给出同方向均值。

Author Claim

证据不足

“可扩展到其他 IEC 61131-3 LD”是合理期待,却没有跨工厂、跨 PLC 品牌、跨地址方案或公开 benchmark 实验。

Our Interpretation

最可能学到什么

BM25 取回相似功能描述与局部子程序,模型结合微调记忆复制/改写结构模式;DPO 主要降低少节点或少边的近似错误。

Paper vs. Reproducible Implementation

项目论文状态复现影响
数据与 split私有;只有匿名样例与类别计数无法检查去重、泄漏、标注一致性,也不能复算结果。
代码 / checkpoint论文、ACL 与 arXiv 一手入口未给官方仓库图转换、GED cost、DPO 序列化与后处理无法核对。
训练配置主要超参较完整缺 seed、scheduler、precision、gradient accumulation、max length 等。
推理beam size 4缺 beam scoring、长度限制、非法输出率;RAG 有额外后处理。
安全验证graph match + 50 例截图人评没有 PLC simulator、formal verification、runtime test 或产线 shadow deployment。

一个表格内部值得注意的版本差异

主表中 Qwen SFT 的 XML Program EM 为 45.6,Appendix H 的详细 RAG 表写成 46.0;JSON 为 45.4 vs 46.4;metaprogram 为 47.2 vs 48.0。类似地,正文主表的 Qwen 指标与附录详细表有若干 0.1–1.0 点差异。论文没有解释这些数字是否来自不同运行、camera-ready 更新或抄表误差。网页以主表作为主结论,并透明保留这个不一致。

安全结论

67.2% Program EM 意味着 32.8% 的 test programs 仍未完全匹配标注图。作者也明确说生成 PLC code 在真实工厂部署前仍需程序员谨慎检查。任何“自动部署 PLC”的宣传都超过论文证据。

09 / Reviewer Commentary

一篇扎实的配方论文,也暴露了工业 AI 的评价难题。

Strengths

  • 问题真实且被主流 code generation 忽视;数据来自生产环境,不是玩具 DSL。
  • 把 XML、JSON、metaprogram 统一成图,方法、负样本与评价共享同一结构接口。
  • 先用 SFT vs 大模型 RAG 诊断,再提出 RAFT-V 与 DPO,研究叙事闭环。
  • 两个 backbone、三种格式、复杂度分桶、负例消融和 PLC 工程师人评,实验覆盖面不错。
  • 训练超参、system prompts 与主要 baseline prompt 在附录公开得相对充分。

Weaknesses

  • 私有单域数据导致最关键的可复现性和跨环境泛化无法验证。
  • graph exact match 不是 functional equivalence,更不是 safety;没有执行级测试。
  • 检索可能放大同源模板或近重复,论文没报告 group split 与 contamination audit。
  • DPO 相对 RAFT-V 的人评分只 +0.02,且没有统计显著性;实用增益证据弱于 EM。
  • 无代码与 checkpoint,GED、序列化、后处理等 hidden implementation choices 不透明。

如果继续做这条线,优先补什么?

  1. 执行感知评价:把 LD 编译/载入 PLC simulator,生成输入 trace,比较 output traces 与安全不变量;graph EM 只作为结构指标。
  2. 层级检索:先检索 process family,再检索 rung / subroutine;训练 retrieval policy,避免 BM25 只靠表面韩文重合。
  3. 等价类建模:把语义等价但布局不同的程序视为多个 positive,降低单一 ground truth 的惩罚偏差。
  4. 约束解码与修复:让 schema、DAG 约束、地址类型与 PLC scan semantics 进入 decoder 或 verifier;失败后局部 graph repair。
  5. 跨站点评测:按产线/设备/项目 group split,报告 zero-shot site transfer 与少样本适配,才能支持“工业可扩展”。

对 Procedural Material Generation 的研究启发

Research Extension · 以下不是论文已验证内容。

RAFT-V 组件材料图对应物可形成的实验
BM25 检索 prompt–code按材质描述、节点预览或 graph embedding 检索相似 SBS / shader subgraph比较 text-only、image-only、hybrid retrieval,并做 train-time / test-time 2×2 消融。
图编辑负例删除、复制、错接 material nodes;扰动 blend mode、frequency、roughness path用 renderer 验证 hard negative:结构接近且视觉差异细微,而不是只按 GED。
DPOchosen 为可执行且匹配参考图像的 graph,rejected 为近似错图偏好信号结合 LPIPS、CLIP、法线/粗糙度统计和 graph validity。
Program EM拓扑/参数 EM必须同时报告 render equivalence、multi-light consistency、editability 与执行成功率。
人工 review材质艺术家评分区分视觉相似、可编辑性、节点组织质量与生产可用性。

最值得延伸的不是照搬 DPO,而是把 hard negative 的定义从 graph-near 改成 execution-aware:选择结构距离小、渲染也很像、但在某种光照/尺度/参数编辑下暴露错误的 graph。这会把 preference optimization 真正对齐到 procedural material 的可执行语义。

10 / References

一手资料与阅读边界。

  1. ACL Anthology 正式条目:venue、页码、DOI 与 camera-ready PDF。
  2. Kang et al., ACL 2025 正式 PDF:正文、全部附录、公式、表格与 prompts。
  3. arXiv:2502.16529v2:版本历史与 TeX source;v2 提交于 2025-05-23。
  4. DOI 10.18653/v1/2025.acl-long.1106。
  5. Jeonghun Cho 个人主页:作者侧 publication 记录;没有把第三方代码搜索结果当作官方实现。
论文身份与作者信息

作者顺序:Deokhyung Kang、Jeonghun Cho、Yejin Jeon、Sunbin Jang、Minsub Lee、Jawoon Cho、Gary Geunbae Lee。前两位为共同第一作者。机构:POSTECH Graduate School of AI / CSE、Hyundai Mobis、T&I Company。论文没有显式通讯作者标记;归档时按技能规则将末位 Gary Geunbae Lee 记为未核实通讯候选。