桃子桃子快讯
返回首页
研究论文

无需重训练即可跨方言泛化:模式约束解码在 MLIR 上的基准与评估

团队发布四个 NL-to-MLIR 基准,并提出三层模式约束解码栈,使 SmolLM2-1.7B 在结构约束主导的方言上…

2026.07.22 · 周三4 分钟阅读

arXiv 上的一项新研究探讨了一个在 ML 编译器基础设施中长期被忽视的问题:如何让代码大模型在不同的 MLIR 方言之间实现零样本泛化,而无需为每个新方言做额外的微调。研究团队提出,推理时从方言的 Operation Definition Specification(ODS)机械派生的先验约束,可以替代基于梯度的适配,并据此发布了一整套基准与约束解码框架。

研究背景与动机

MLIR 是现代 ML 编译器栈(TensorFlow、JAX/StableHLO、PyTorch Inductor、IREE 等)共同依赖的中间表示,但其在代码大模型预训练语料中几乎只以极少量出现。加之 MLIR 本身按应用领域不断扩展方言(dialect),为每个方言单独微调模型成本不可持续。研究的核心问题是:能否仅依靠方言 schema 提供的先验,在推理阶段约束模型输出,使其在未见过的方言上仍能生成合法程序。

基准与数据集

研究发布了四个自然语言到 MLIR 的基准,覆盖三个方言,总计 410 对 in-scope 数据:

  • MLIR-Spec-150:基础 MLIR 方言规格。
  • Linalg-Spec-30:面向张量运算的 linalg 方言。
  • StableHLO-Spec-30StableHLO-Held-Out-200:StableHLO 方言,其中后者为模板化参数化样本。

此外,团队附带了一个 25 个程序的 out-of-grammar 压力集,以及一份手写的 n=30 功能参考集。全部资源以 Apache-2.0 协议发布,并附带 Gebru 数据卡与 Croissant 1.0 元数据。

三层模式约束解码栈

约束系统由三层组成:

  • C1(操作签名 CFG):基于 ODS 抽取的操作签名构建上下文无关文法。
  • C2(类型域切分):从 ODS 派生的类型格上对类型域做切分,约束变量类型一致性。
  • C3(SSA 作用域校验 + 五次重采样):驱动 SSA 作用域校验器,对不合法输出进行最多五次的拒绝采样重生成。

值得一提的是,从 arith+func+memref+linalg 移植到 StableHLO 时,无需新增任何约束层代码,验证了 schema 派生方法的方言可迁移性。

实验结果

在以结构约束为主的方言上,模式派生先验让 SmolLM2-1.7B 匹配甚至超越 15B–34B 级别的代码大模型,且单次生成速度快 8–25 倍:

  • linalg 方言:SmolLM2 达到 80.0% 的 verify-valid(三次种子均值,n=125),以 21–44 个百分点的优势击败 CodeLlama-34B、Granite-Code-34B 和 StarCoder2-15B,且置信区间不重叠。
  • arith+func 方言StableHLO-Held-Out-200:当验证语义更多依赖属性值而非结构时,同一基线模型可以追平或反超小模型;研究方将这些情况明确定义为「非胜出单元」。

局限与展望

该方法对结构约束主导的方言效果显著,但对属性值敏感的方言仍依赖更大模型的能力。此外,论文尚未覆盖更复杂的控制流方言与跨方言组合生成场景。

研究团队公开了基准、解码器、所有逐提示生成记录以及一份可复现的 Docker 镜像,便于社区进一步验证与扩展。

信源